无法检查下拉菜单是否包含使用selenium的某些文本

时间:2016-02-14 12:50:29

标签: javascript html css selenium selenium-webdriver

我之前做过它并且它有效但现在下拉html / css ID有点不同,我无法让它正常工作。

这是下拉代码的层次结构,我标记了例如,如果存在我想知道的文本:

image

所以我做了它设置按钮的web元素,打开下拉列表,获取文本并检查它是否包含一些文本:

val myDropDown = driver.findElement(By.xpath("""//*[@id="no-jcf"]/div[2]/div[3]/form/div[18]/div[2]/div[2]/ol/button"""))
val ans = myDropDown.getText().contains("Copy of Invoice")

它不起作用。我得到了错误的答案。

3 个答案:

答案 0 :(得分:1)

我看到两个主要错误:

1)您的xpath指向按钮,但该按钮不是下拉菜单的父级。下拉是它的下一个兄弟。这意味着您正在尝试从按钮获取文本,而不是下拉列表中的选项。

2)getText()获取元素及其子元素的可见内部文本,以确保您的选项可见(通过单击或鼠标悬停)

答案 1 :(得分:1)

如果您想检查特定选项,那么您可以尝试:

{{1}}

答案 2 :(得分:0)

这个想法是设置集合的集合,找到你需要的集合 例如:

List<WebElement> liCollection =
driver.findElement(By.Id("no-jcf").findElements(By.tagName("li"));

现在你拥有了特殊id下所有li元素的集合 所以你只需要做/ foreach并检查那个元素是否是你需要的

for(WebElement li : liCollection )
{
   if(li.getText().contains("Copy of Invoice"))
   {
   //...
   }
}