我尝试根据func param给出的linkText(例如Westwood或Linda)从锚点获取href。
在下面的代码中,我更改了类值(公司信息的原因),但除此之外的代码。对于每个<tr>
,<td>
的href都相同,但与<tr>
到<tr>
不同
我得到了第一个href:
driver.findElemnt(By.xpath("//a[@class = 'class Name of a']").getAttribute("href")
或与之相同:
xpath="//a[@class = 'class Name of a'][1]";
但是当我走的时候:
"//a[@class = 'class Name of a'][2]" or 3 or 4...
或我使用时:
By.partialLinkText
它失败了,所以我永远不会超越第一个<td>
的第一个<tr>
。
错误:oopenqa.selenium.StaleElementReferenceException:Element 不再依附于Dom。
元素始终可见,因此它不是可见性问题。
这是html:
<tr class="Class name for tr here">
<td headers="description _ CustomerList:lastName">
<a href="some path index=0" class="class Name of a">Westwood</a>
</td>
<td headers="description _CustomerList:firstName">
<a href="some path index=0" class="class Name of a">Linda</a>
</td>
</tr>
答案 0 :(得分:1)
您正在尝试检索同一父中的第二个锚标记(在示例文档中:表格单元格)。
而不是
//a[@class = 'class Name of a'][2]
查询整个文档中的第二个锚标记:
(//a[@class = 'class Name of a'])[2]
如何使用位置谓词的更多示例(我在此省略了类谓词):
每行所有第二个表格单元格的锚标记:
//td[2]/a
每行第二个锚标记:
//tr//a[2]