【问题标题】:XPath to locate a link within a tableXPath 在表中定位链接
【发布时间】:2014-10-20 21:02:04
【问题描述】:

我有一张如下表:

<tr class="ng-scope" ng-repeat="client in clients">
<td class="text-left ng-binding">Apu Nahasapeemapetilon</td>
<td class="text-left ng-binding">AN</td>
<td class="text-left">
<span class="ng-scope" ng-repeat="group in client.SecurityGroups">
<a class="label label-info ng-binding" href="#/SecurityGroup/MemberClients/a1cbf118-2c40-4ae7-a9f8-136bec945849/Assistants"> Assistants </a>
<span class="ng-scope" ng-repeat="group in client.SecurityGroups">
<a class="label label-info ng-binding" href="#/SecurityGroup/MemberClients/e4bd1580-3997-4f3d-a975-189e1fdccb4c/Managers"> Managers </a>

我正在尝试在第三个单元格中的链接上定位。此单元格中可以有多个链接。理想情况下,我想通过定位单元格 1 或 2 来识别行。

所以上面表格数据的想法是:查找带有客户端代码 AN 的行(在单元格 2 中),然后在该行中找到链接“Assistants”(在单元格 3 中)。

我的项目中有一个类似的表格,下面的 XPpath 将执行我在该表格上的目标:

//tr[.//td='AN'] // a[.='Managers']

但它似乎在上面的表格上不起作用......

如果我这样做:

//tr[.//td='AN'] // a

对于包含“AN”的行,它将突出显示单元格中的所有链接(即以助理和经理结尾的链接),但我似乎无法将其定位在单个链接上。

【问题讨论】:

  • 您的 XPath 几乎是正确的,但在 HTML 中,ManagersAssistants 周围有空格。你可以使用//tr[.//td='AN'] // a[.=' Managers '](注意多余的空格)或者//tr[.//td='AN'] // a[contains(., 'Managers')]

标签: xpath


【解决方案1】:

试试下面的xpath

//tr/td[.='AN']/following-sibling::td[1]//a[contains(@href, 'Assistants')]

xpath 查找 tr 和一个子 td 的值为 'AN'。然后查看第一个后续兄弟td,然后查找具有包含“Assistants”的href 值的后代a

【讨论】:

  • 谢谢 - 需要在 XPath 的开头添加一个额外的“/”,否则它可以工作。我对 Xpath 很陌生,您介意解释一下该查询是如何工作的吗?
  • 或者即使有 CSS 等价物?
  • 阅读本文以获取 CSS 替代方案:stackoverflow.com/questions/15731332/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多