Selenium Java |查找/单击类中嵌套xpath的按钮时遇到问题

Selenium Java |查找/单击类中嵌套xpath的按钮时遇到问题,java,selenium,xpath,Java,Selenium,Xpath,问题: 我不知道如何单击我需要的特定按钮,以及如何确保该按钮未高亮显示 1) 在主页上,每个页面都有一个按钮。它们都有自己的关闭/报告按钮 2) 我只需要选择非突出显示的页面,然后单击关闭按钮 我可以用它来点击按钮,但我不知道它是否高亮显示 By.xpath("//button[@type='button'])[8].click(); 我尝试过这样做,但没有成功: By.xpath("//li[@class='media'] and //button[@type='button']").cli

问题: 我不知道如何单击我需要的特定按钮,以及如何确保该按钮未高亮显示

1) 在主页上,每个页面都有一个按钮。它们都有自己的关闭/报告按钮

2) 我只需要选择非突出显示的页面,然后单击关闭按钮

我可以用它来点击按钮,但我不知道它是否高亮显示

By.xpath("//button[@type='button'])[8].click();
我尝试过这样做,但没有成功:

By.xpath("//li[@class='media'] and //button[@type='button']").click();
下面是每个页面的外观。有些突出显示,有些在类名中

<li class="media highlighted">
<div class="media-options">
  <button type="button" class="close" title="Close page">Delete this page</button>
  <button type="button" class="report" title="Report page">Report this page</button>
</div>
  • 删除此页 报告本页
  • 删除此页 报告本页

  • 删除此按钮:-

    driver.findElement(By.xpath("//li[@class='media highlighted']//button[@class='close']"));
    
    driver.findElement(By.xpath("//li[@class='media highlighted']//button[@class='report']"));
    
    对于报告此按钮:-

    driver.findElement(By.xpath("//li[@class='media highlighted']//button[@class='close']"));
    
    driver.findElement(By.xpath("//li[@class='media highlighted']//button[@class='report']"));
    

    您可以从元素的css类属性中了解元素是否高亮显示

    String liClassAttribute = driver.findElements("//li[@class='media'][1]").getAttribute("class");
    
    这里我已经解释了如何获取第一个li项的class属性

    但是,根据您的问题,您需要单击非突出显示的项目。因此,获取所有列表项的列表,获取li的每个项的class属性,如果它没有突出显示,您可以根据您的需求进行操作

    伪代码:

    List<WebElement> liElementList = driver.findElement("//li[@class='media']);
    for(WebElement elem : liElementList) {
        String liClassAttr = liElementList[0].getAttribute("class");
        if ( !liClass.contains("highlighted")){
             // you found the non-highlighted list item
             // act on it or ignore it based on your business logic.
        }
     }
    
    List-liElementList=driver.findElement(//li[@class='media']);
    for(WebElement元素:liElementList){
    字符串liClassAttr=liElementList[0]。getAttribute(“类”);
    如果(!liClass.contains(“突出显示”)){
    //您找到了未突出显示的列表项
    //根据您的业务逻辑采取行动或忽略它。
    }
    }