WebDriver从Javascript中选择选项CSS下拉菜单在IDE中运行,不在代码中
我无法从Javascript下拉列表中选择项目(即,下拉列表中的项目未隐藏在DOM树中,它们根本不存在直到链接被点击)。我已经使用动作类试过的方式是这样的:WebDriver从Javascript中选择选项CSS下拉菜单在IDE中运行,不在代码中
Actions cursor = new Actions(driver);
cursor.moveToElement(linkThataDropsMenu).perform();
cursor.click();
我已经使用clickAndWait()函数尝试,但它显然并不在Java webdriver的图书馆存在的,我已经试过暂停和点击的许多变化在我的代码中,包括点击两次。 clickAndHold()也不做任何事情。
下面是菜单生成后的DOM树。上点击唯一改变的是DIV CLASS =“菜单”插入
<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>
这里的怪一部分,尽管 - 我可以拿到菜单,从IDE下降,使用点击()或clickAndWait()和完全相同的定位器。从我的Java代码中,我可以使用我的定位器来收集我想要单击的元素的文本,但是我无法单击该元素。我的Java代码中有数百个其他单击命令可以很好地工作,但不在这里。有任何想法吗?至少感谢阅读!
我明白了!诀窍是将鼠标悬停在项目上,然后单击,然后再次将鼠标悬停在项目上,这会将光标留在那里,然后抓取新呈现的对象。我现在的猜测是,在我添加第二个moveToElement()之前,一旦发生了点击,光标就完成了它被要求做的所有事情并被垃圾收集。这是我的代码 - 希望它能帮助别人!
您是否尝试过使用isDisplayed()函数?无论您想要点击哪个选项,它都应该是可见的,然后才能点击。因此,我们使用element.isDisplayed()而不是selenium 1拥有的clickAndWait()。这有一个隐含的等待(在浏览器驱动程序创建时设置,请检查文档)。默认情况下,当Selenium遇到isDisplayed函数时,在继续前进之前它会等待很长时间。
嘿,谢谢你的回复。我的问题的一部分,虽然isDisplayed()不会为我工作,因为该元素是由Javascript创建(未显示/隐藏)。但除此之外,它似乎没有任何基于等待的帮助,因为我在点击之后立即获取新元素并且它已经消失,所以应该是这样的情况,即在我应用等待函数时,它将消失那么太对了?当这些元素存在时(如果它们曾经被生成过),等待只会使我从微秒进一步移动。 – TenFour 2012-01-19 20:43:17