我无法从 Javascript 下拉列表中选择元素(即下拉列表中的元素未隐藏在 DOM 树中,它们在单击链接之前根本不存在)。我试过以这样的方式使用 Actions 类:
Actions cursor = new Actions(driver);
cursor.moveToElement(linkThataDropsMenu).perform();
cursor.click();
我尝试过使用 clickAndWait() 函数,但它显然不存在于 Java webDriver 库中,而且我在我的代码中尝试了多种暂停和单击的方法,包括单击两次。 clickAndHold() 也什么都不做。
下面是菜单生成后的DOM树。单击时唯一发生变化的是插入 div class="menu"
<div id="divIdActive_2" class="data number active" style="min-height: 21px;">
<a class="opencnl" href="#">
<span id="opencnlSpan" class="active" style="background-color:
transparent;">800-852-2222</span>
</a>
<img class="tollFree" title="Display name(s) for Toll free function properly on
Verizon Wireless devices, but may be omitted by other carriers on
their devices." src="img/nil.gif">
<input id="customNum" type="hidden" value="8008522222" name="number_2">
<div class="menu">
<a class="edit" href="#">Change Custom Number</a>
<a class="copy" href="#">Copy Settings for 0 Selected Lines</a>
<a class="clear" href="#">Clear Settings For this Line</a>
</div>
</div>
但奇怪的是,我可以使用 click() 或 clickAndWait() 以及完全相同的定位器从 IDE 中删除菜单。从我的 Java 代码中,我可以使用我的定位器来收集我想要单击的元素的文本,但我无法单击该元素。我的 Java 代码中有数百个其他点击命令可以很好地工作,但这里没有。有任何想法吗?至少感谢阅读!
最佳答案
您是否尝试过使用 isDisplayed() 函数?无论您要单击哪个选项,都应该在单击之前可见。所以,我们有 element.isDisplayed(),而不是 selenium 1 的 clickAndWait()。这有一个隐式等待(在创建浏览器驱动程序时设置,请查看文档)。默认情况下,当 Selenium 遇到 isDisplayed 函数时,它会在继续之前等待那么长的时间。
关于java - WebDriver 从 Javascript CSS 下拉菜单中选择选项在 IDE 中工作,而不是在代码中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8856884/