下拉 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"))
{
//...
}
}
我有一个下拉列表,谁的检查是这样的:
我想检查所有 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"))
{
//...
}
}