【问题标题】: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"))