我有一个场景,我填写一个带有文本'A'的搜索字段,它会返回一堆结果。这些结果总是在变化,我只想选择前5个选项。怎么可能为此编写一个Xpath。我正在尝试使用codecption编写验收测试
.//*[@id='js_search_table_filter']
- 是搜索表过滤器。我在下面输入A
$this->fillField($_sSelectSearchXPath,"A");
当我点击搜索结果的复选框选项时,xpath元素就像
.//*[@id='assign-9488'].
<label class="checkbox checked" for="assign-9488">
请注意,这些数字会有所不同,并且不符合任何时间顺序。
答案 0 :(得分:0)
我不确定这是否属于您之后的情况,但如果您需要节点集的前5个元素,则可以将其后缀为:
[position() <= 5]
示例:
<a>
<b>1</b>
<c>2</c>
<d>3</d>
<e>4</e>
<f>5</f>
<g>6</g>
</a>
如果您想要从b
到f
获取元素,可以运行/a/*[position() <= 5]
。
答案 1 :(得分:0)
我不确定codeception / php版本是如何工作的,但在ruby(watir或pageobjectgem)中,您可以使用reqular表达式或部分匹配来识别所有元素
元素看起来像:
checkboxes(:your_element_name, :id => /assign/)
注意复选框和复选框之间的区别,它会返回所有包含id的复选框。
在Java Webdriver中,你有
driver.findElements(By.xpath("//checkbox[contains(@id,'assign')]"));
代表别(ruby和java)都返回Java解决方案使用xpath的元素数组。你提到的元素是一个标签,如果你正在寻找复选框,它可能是这个标签的子元素,xpath将是
//label[contains(@for,'assign')]/checkbox
基本上,您可以在xpath中使用“contains”方法来标识您的元素。然后,您可以获取数组的前五个元素。
答案 2 :(得分:0)
我使用了这些人并尝试选择下拉列表中的所有复选框 (.//*[@类型= '复选框'])[1]