我之前做过它并且它有效但现在下拉html / css ID有点不同,我无法让它正常工作。
这是下拉代码的层次结构,我标记了例如,如果存在我想知道的文本:
所以我做了它设置按钮的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")
它不起作用。我得到了错误的答案。
答案 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"))
{
//...
}
}