下拉 Web 元素不允许使用复合 class 名称 (Selenium)

Compound class names not permitted for a dropdown web element (Selenium)

我有一个下拉列表,谁的检查是这样的:

我想检查所有 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())

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

您必须通过 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"))

如果你想检查所有的 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"))
   {
     //...
   }
}