使用Firepath为Selenium收集可接受的XPath或CSS选择器,从Select2收集FireBug

时间:2016-10-31 15:45:59

标签: jquery selenium xpath

我正在设计测试的网站使用Select2插件用于下拉列表和输入字段。我可以设法手动编写初始字段的click和sendkeys函数,但是下拉让我搞砸了。我可以选择下拉项,但不能选择Selenium IDE接受快速测试的任何类型的唯一标识符。

如何选择其中一个下拉选项?

<div id="select2-drop-mask" class="select2-drop-mask" style="display: block;"/>
<div id="select2-drop" class="select2-drop select2-display-none select2-drop-active select2-drop-above" style="left: 1015.5px; width: 438px; top: auto; bottom: -229px; display: block;">
<div class="select2-search select2-search-hidden select2-offscreen">
<span class="fa fa-search select2-search-placeholder"/>
<input class="select2-input" type="text" placeholder="Search" spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off"/>
</div>
<ul class="select2-results">
<li class="select2-results-dept-0 select2-result select2-result-selectable select2-highlighted">
<div class="select2-result-label">
</li>
<li class="select2-results-dept-0 select2-result select2-result-selectable">
<div class="select2-result-label">
<span class="select2-match"/>
Fraudulent Account (ID Theft)
</div>
</li>

还有更多的列表项,但我不想给出太多关于这个代码的用语。我也不想使用任何类型的数值数组选择器,因为测试代码需要能够轻松接受对网站的新修订。

2 个答案:

答案 0 :(得分:0)

您可以使用以下XPath匹配元素的文本值:

//li[normalize-space(.)="Fraudulent Account (ID Theft)"]

答案 1 :(得分:0)

您也可以根据他们的订单进行匹配(1最匹配)

By.cssSelector("ul.select2-results li.select2-result:nth-of-type(N)")

By.xpath("//ul[contains(@class, 'select2-results')]/li[contains(@class, 'select2-result')][N]")

其中 N 是第n个结果。

相关问题