xpath - 每当返回多个隐藏按钮时选择显示按钮的 Xpath
问题描述
我正在尝试在我的 Web 应用程序上选择以下撤消按钮
撤消按钮的 HTML 由以下内容组成
<a href="" style="vertical-align: middle" class="btn btn-primary btn-sm" ng-show="true" ng-click="executeUndoCommand(transfer)">Undo</a>
表中包含撤消按钮的行由以下内容组成
<tr ng-repeat="transfer in completedTransfersSummary track by $id(transfer)">
<td style="vertical-align: middle" ng-
style="transfer.isDisabled && {color:'#A6A6A6'}" ng-class="
{'highlight' : transfer.transferorBusinessId == CisBusinessID }"
class="highlight">608445</td>
<td style="vertical-align: middle" ng-
style="transfer.isDisabled && {color:'#A6A6A6'}" ng-class="
{'highlight' : transfer.transfereeBusinessId == CisBusinessID }">608446</td>
<td style="vertical-align: middle" nowrap="" ng-
style="transfer.isDisabled && {color:'#A6A6A6'}">Merger</td>
<td style="vertical-align: middle" nowrap="" ng-
style="transfer.isDisabled && {color:'#A6A6A6'}">19/07/2018</td>
<td style="vertical-align: middle" nowrap="" ng-
style="transfer.isDisabled && {color:'#A6A6A6'}">02/01/2018</td>
<td style="vertical-align: middle" nowrap="" ng-
style="transfer.isDisabled && {color:'#A6A6A6'}">1.00 entitlements @
€229.27</td>
<td style="vertical-align: middle" ng-
style="transfer.isDisabled && {color:'#A6A6A6'}">526461</td>
<td style="vertical-align: middle" ng-
style="transfer.isDisabled && {color:'#A6A6A6'}">2018</td>
<td style="vertical-align: middle" ng-
style="transfer.isDisabled && {color:'#A6A6A6'}"></td>
<td style="vertical-align: middle;" ng-
show="undoWithdrawRoleAssignedToUser">
<div ng-show="transfer.transferorBusinessId ==
CisBusinessID">
<a href="" style="vertical-align: middle"
class="btn btn-primary btn-sm" ng-show="true" ng-
click="executeUndoCommand(transfer)">Undo</a>
<a href="" style="vertical-align: middle"
class="btn btn-primary btn-sm ng-hide" ng-show="false" ng-
click="showUndoModal(transfer)">Undo</a>
<a href="" style="vertical-align: middle"
class="btn btn-default btn-sm" ng-show="true" ng-
click="executeWithdrawCommand(transfer)">Withdraw</a>
<a href="" style="vertical-align: middle"
class="btn btn-default btn-sm ng-hide" ng-show="false" ng-
click="showWithdrawModal(transfer)">Withdraw</a>
<label style="vertical-align: middle" ng-
show="false" ng-style="transfer.isDisabled && {color:'#A6A6A6'}"
class="ng-hide"></label>
<label style="vertical-align: middle" ng-
show="false" ng-style="transfer.isDisabled && {color:'#A6A6A6'}"
class="ng-hide"></label>
</div>
</td>
</tr>
我使用以下 XPath 突出显示屏幕上的撤消按钮
("//tr[td='Merger']//a[@ng-click='executeUndoCommand(transfer)']")
它返回我要求的按钮,但也返回 3 个隐藏按钮,对于我正在运行的测试,我只需要选择显示的按钮。我要求的按钮是下面列表中的第 4 个
$x("//tr[td='Merger']//a[@ng-click='executeUndoCommand(transfer)']")
(4) [a.btn.btn-primary.btn-sm.ng-hide, a.btn.btn-primary.btn-sm.ng-hide,
a.btn.btn-primary.btn-sm.ng-hide, a.btn.btn-primary.btn-sm]
0
:
a.btn.btn-primary.btn-sm.ng-hide
1
:
a.btn.btn-primary.btn-sm.ng-hide
2
:
a.btn.btn-primary.btn-sm.ng-hide
3
:
a.btn.btn-primary.btn-sm
length
:
4
我将 xpath 更改为以下内容以尝试选择显示的按钮,但这些都不起作用
$x("//tr[td='Merger']//a[@ng-click='executeUndoCommand(transfer)' and
@class='btn btn-default btn-sm']")
$x("//tr[td='Merger']//a[@ng-click='executeUndoCommand(transfer)']//a[@ng-
show='true']")
有人可以建议一种方法来突出显示我需要的按钮吗?
解决方案
尝试类似的事情
//a[text()='Undo' and not(contains(@class,'hide'))]