我正在使用Selenium IDE进行一些测试并尝试使用它从自动完成中选择指定的选项。我的问题是,自动填充内置在<ul>
中,两个<li>
可能相同。如何点击指定的li
? How to say Selenium“点击第一个li
”或“点击li
文字”苹果“?我尝试了一些我发现的方法,但都是针对其他类型的Selenium,并且没有一个在Selenium IDE中有用。
提前致谢,抱歉我的英语不好!
以下是代码:
<ul class="ui-autocomplete ui-menu ui-widget ui-widget-content ui-corner-all" role="listbox" aria-activedescendant="ui-active-menuitem" style="z-index: 1003; top: 360.683px; left: 549.5px; display: block; width: 401px;">
<li class="ac_item ui-menu-item" role="menuitem">
<a class="clearfix ui-corner-all" tabindex="-1">
<span class="c1">
<b>Apple</b>
<br>
<span class="small secondary">Apples</span>
</span>
</span>
</a>
</li>
<li class="ac_item ui-menu-item" role="menuitem">
<a class="clearfix ui-corner-all" tabindex="-1">
<span class="c1">
<b>Orange</b>
<br>
<span class="small secondary">Oranges</span>
</span>
</span>
</a>
</li>
</ul>
答案 0 :(得分:3)
Selenium API为您提供了许多方法来实现这一目标。由于您没有传统的下拉列表,因此无法使用select
命令。以下是两个单击自动完成中第二个元素的解决方案。
我创建了这个JSFiddle来测试解决方案。点击的元素将变为红色。
选项1:使用CSS定位器。
| Command | Target |
| open | http://jsfiddle.net/ansonhoyt/GYJW9/embedded/result/ |
| waitForElementPresent | css=ul.ui-autocomplete |
| click | css=ul.ui-autocomplete li.ui-menu-item:nth-child(2) |
注意:运行速度快,大多数人都对CSS感到满意,但这个例子要求目标浏览器支持CSS3 nth-child选择器。
选项2:使用XPath定位器。
| Command | Target |
| open | http://jsfiddle.net/ansonhoyt/GYJW9/embedded/result/ |
| waitForElementPresent | css=ul.ui-autocomplete |
| click | //ul[contains(@class,'ui-autocomplete')]/li[2] |
注意:XPath对大多数人来说不太熟悉,与CSS定位器相比可能非常慢,尤其是在IE中。
有关更多提示,请查看locating elements和可用Selenese commands上的Selenium IDE文档。