【问题标题】:Compound class names not permitted for a dropdown web element (Selenium)下拉 Web 元素 (Selenium) 不允许使用复合类名称
【发布时间】:2023-03-29 12:33:01
【问题描述】:

我有一个检查如下的下拉列表:

我想检查所有li 元素,看看其中一个是否包含文本“Other”,例如...

所以我在 scala 中写作,我这样做了:

driver.findElement(By.className("dropdown-menu open")).click()
val myDropDown = driver.findElement(By.className("dropdown-menu open")).findElements(By.tagName("li"))
val answer = myDropDown.exists(a => a.getText == "Other")
println(answer.toString())

显然这不是真的,你认为我应该怎么做? 谢谢

【问题讨论】:

    标签: jquery scala selenium selenium-webdriver selenium-chromedriver


    【解决方案1】:

    如果你想检查所有的 li 元素,那么你可以试试这个:

    driver.findElement(By.xpath("//div[@class='dropdown-menu open']")).click();
    List<WebElement> liList =
    driver.findElements(By.xpath("//div[@class='dropdown-menu open']//li[@class='nya-bs-option']"));
    for(WebElement wb : liList)
    {
       if(wb.getText().contains("Other"))
       {
         //...
       }
    }
    

    【讨论】:

      【解决方案2】:

      您必须通过 By.cssSelector 而不是 By.className 进行查找。 By.className 不支持您提到的复合css。所以你的代码应该是:

      driver.findElement(By.cssSelector("dropdown-menu open")).click()
      val myDropDown = driver.findElement(By.cssSelector("dropdown-menu open")).findElements(By.tagName("li"))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-19
        • 2020-11-04
        • 1970-01-01
        • 2019-04-30
        • 2016-10-12
        • 1970-01-01
        • 2015-04-15
        相关资源
        最近更新 更多