如何使用不包含特定类别的硒选择元素

时间:2018-06-26 04:16:03

标签: java selenium selenium-webdriver xpath css-selectors

我有以下HTML代码。

<ul class="options">
    <li class="first popover-options ">data</li>
    <li class="first popover-options disabled">data2</li>
    <li class="first popover-options ">data3</li>
</ul>

我需要选择带有class =“ first popover-options”的元素,即它不应包含禁用的元素。如何在Java中使用Selenium做到这一点?

3 个答案:

答案 0 :(得分:1)

您可以尝试以下代码

List<WebElement> ListEle=  driver.findElements(By.cssSelector("li.first popover-options"));
for (WebElement tempEle : ListEle) {
    if(tempEle.getText().contains("Data"))
     {
       tempEle.click();
     }    
   }

请注意,它将从下拉菜单中选择数据,如果要从下拉菜单中选择任何其他项目,则可以通过替换以下级别的代码来获取它:tempEle.getText().contains("Data")

答案 1 :(得分:0)

您可以使用LIST选择多个元素,然后选择对所选项目的操作。

示例代码如下:

List<WebElement> ListEle=  driver.findElements(By.xpath("//ul[@class='options']//li[@class='first popover-options']"));
for (WebElement tempEle : ListEle) {
    if(conditions)
     {
       //statemnets
       Break;
     }    
   }

答案 2 :(得分:0)

根据您的问题,根据您共享的HTML,使用class="first popover-options"标识不包含禁用元素的任何元素,您可以创建 List 使用以下两种解决方案之一来筛选符合条件的元素:

  • 使用 cssSelector

    for (WebElement element:driver.findElements(By.cssSelector("ul.options>li.first.popover-options:not(.disabled)"))) 
    {
        //perform any action with the elements from the list
    }
    
  • 使用 xpath

    for (WebElement element:driver.findElements(By.xpath("//ul[@class='options']//li[@class='first popover-options']"))) 
    {
        //perform any action with the elements from the list
    }