我正在尝试使用Selenium为具有ADF生成树的网站构建测试框架。树最终以
的结构结束<table>
<tr>
<td>
<div>
<span>
<a id="AN_ID" title="Expand" onclick="return false" href="#"></a>
</span>
<img>
<img>
<span>SOME_TEXT</ span>
</div>
</td>
</tr>
<tr></tr>
<tr></tr>
</table>
我希望有一个XPath函数可以使用文本来查找锚的id,如下所示:
selenium.getAttribute("xpath=//span[text()='"+text+"']/preceding-sibling::span[1]/child::a@id");
在调用函数时将文本输入到函数中。当字符串不唯一时会出现问题。所以我试着在函数中添加一个位置,如下所示:
selenium.getAttribute("xpath=//span[text()='"+text+"']["+occurrence+"]/preceding-sibling::span[1]/child::a@id");
因此该函数调用文本和字符串树中的出现。这是为了找到第一次出现的id,但是找不到给定字符串第二次出现的id。
我也尝试过使用
[text()= "" and position()= ""]
但这根本不起作用。
每个锚点都会生成一个新表格,其中包含子级别的所有表格行(与上面相同的结构),因此您最终会得到树的每个子级别的新表格。
答案 0 :(得分:1)
我相信事情应该在最后:
selenium.getAttribute("xpath=(//span[text()='"+text+"']/preceding-sibling::span[1]/child::a)["+occurrence+"]@id");
答案 1 :(得分:0)
此HTML结构是否严格且完全无法更改?我建议你为这两个跨度添加一个id或类。这不会解决所有问题......?
另一个解决方案是选择//table/tr/td/div/span[1]/a
之类的两个跨度中的第一个。