图片:
我必须单击文本为“ goregaon-vashi”的删除选项卡。我也尝试过使用兄弟姐妹,但失败了。
<table class="table table-hover txCustomTable" data-ng-show="!fetchingTxTableData" style="">
<tbody style="margin-top: 0px;">
<!-- ngRepeat: currentRow in tableRows --><tr data-ng-repeat="currentRow in tableRows" data-ng-class="currentRow.activeClass" class="ng-scope" style="">
<!-- ngRepeat: currentColumn in metadata.columns --><td data-ng-repeat="currentColumn in metadata.columns" data-ng-class="currentColumn.dataClass" class="ng-scope emp-col-name">
<p compile="currentRow[currentColumn.dbCol].displayHtml"><a class="customerDetailsLink ng-scope" data-ng-click="callerScope.onShowStopOnMap($parent.currentRow.stop_points)">goregaon-vashi</a></p>
</td><!-- end ngRepeat: currentColumn in metadata.columns --><td data-ng-repeat="currentColumn in metadata.columns" data-ng-class="currentColumn.dataClass" class="ng-scope emp-col-actions">
<p compile="currentRow[currentColumn.dbCol].displayHtml"><a href="/client1/shuttle/routes/create?code=10214" class="ng-scope">Edit</a><a style="margin-left:10px;" data-ng-click="callerScope.onDeleteButtonPress('10214')" class="ng-scope">Delete</a></p>
</td><!-- end ngRepeat: currentColumn in metadata.columns -->
</td><!-- end ngRepeat: currentColumn in metadata.columns -->
</tr><!-- end ngRepeat: currentRow in tableRows -->
</tbody><tbody>
</tbody></table>
我尝试了类似的路径
driver.findElement(By.xpath("//*[contains(text(),'goregaon-vashi')]/following-sibling:://*[contains(text(),'Delete')]")).click();
答案 0 :(得分:1)
您是否通过检查网页尝试了xpath上面提到的内容? 您提到的xpath是否突出显示了Delete的Web元素?
我已经尝试过通过复制HTML来尝试相同的操作,但是没有。
您可以使用此xpath标识Delete:
//a[contains(.,'goregaon-vashi')]/../../..//*[.='Delete']
在这里,Delete元素不是'goregaon-vashi'元素的同级元素。因此,我们必须导航其父元素,并应使用跟随兄弟的概念。
答案 1 :(得分:1)
使用这样的XPath,通常可以使用许多方法。这就是我这样处理定位器的方法。
我尝试找到一个元素,该元素是我需要引用的两个元素的父元素,该元素包含我要查找的文本'goregaon-vashi',然后是Delete链接。如果查看HTML,则会发现这两个元素都在同一表行TR
中。由于两个所需元素不在同一个DOM分支中,因此我们需要找到包含一个元素的TR
,然后在另一个DOM分支中向下导航至Delete链接。
首先,我们找到带有TR
标签的A
,其中包含'goregaon-vashi'文本。如果我们想要的只是“ goregaon-vashi”链接,则XPath看起来像
//tr//a[.='goregaon-vashi']
为了返回TR
,我们需要将XPath稍微修改为
//tr[.//a[.='goregaon-vashi']]
^ ^
these extra braces indicate the property that the `TR` should contain
如果仅运行此命令,您将看到它返回父TR
...,这正是我们此步骤想要的。在下一步中,我们将DOM从第一步中找到的TR
转到“删除”链接。
//tr[.//a[.='goregaon-vashi']]//a[.='Delete']
^ this starts the new part
如果您熟悉XPath,那么您应该看起来很熟悉。这是对任何级别//
的简单搜索,以查找包含准确文本'Delete'的A
标签。
希望这是有道理的。我在您发布的HTML上对此进行了测试,并返回了正确的元素。