2014-08-27 78 views
0

中的链接我有一个表,如下所示:XPath来定位表

<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会做什么IM瞄准了该表:

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

,但它似乎没有在上面的表格工作...

如果我做的:

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

这将突出在小区内的所有链接(即结束助理链接和经理),该行方含“一个”,但我只是不能似乎得到它的定位在个别链接。

+0

您的XPath几乎是正确的,但在HTML中,'Managers'和'Assistants'周围有空格。你可以使用'//tr[.//td='AN'] // a [。='Managers']'(注意多余的空格)或者可能''//tr[.//td='AN'] // a [包含(。,'Managers')]'。 – matt 2014-08-27 16:35:56

回答

1

尝试下面的XPath

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

中的XPath查找一个tr具有 'AN' 的值的孩子td。然后看看第一个跟随兄弟td,然后查找后裔,其href值包含'助理'

+0

谢谢 - 需要在XPath开始时添加一个额外的'/',但否则它会起作用。我对Xpath很陌生,你介意解释查询的工作原理吗? – AlmightyJoygasm 2014-08-27 10:20:11

+0

或即使有CSS等价物? – AlmightyJoygasm 2014-08-27 10:21:01

+0

已编辑我的文章 – 2014-08-27 10:24:48