我正在尝试为具有 ADF 生成树的网站使用 Selenium 构建测试框架。树最终具有以下结构
<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()= ""]
但这根本不起作用。
每个锚点都会生成一个新表,其中包含子级别的所有表行(与上面的结构相同),因此您最终会为树的每个子级别创建一个新表。