从表格单元格选择按钮的Xpath,具体取决于特定单元格中包含的文本

时间:2018-09-03 13:41:28

标签: selenium xpath

在我的Web应用程序上,我试图选择表格单元格中的按钮。

并非每个单元格都包含一个“显示详细信息”按钮,并且仅根据该单元格中的文本显示该按钮

下面的屏幕截图

enter image description here

<td>
    Allocated
    <button ng-show="row.entitlementId" id="btnShowDetails" class="btn btn-primary btn-sm" style="width: 110px; float:right;" ng-click="showAllocationMonetaryDetails(row.entitlementId, CisBusinessID);" title="Show Details">
         <span class="glyphicon glyphicon-search"></span>Show Details
    </button>
    <br>
    <div style="font-size: small; color: darkgreen" ng-show="row.manualEstablishCommandType >= 0">
         Adjustment
    </div>
    <div style="font-size: small; color: darkgreen" ng-show="row.manualReclaimCommandType >= 0">

    </div>
</td>

我尝试使用以下xpath来定位“显示详细信息”按钮,但是它不起作用。

("//td[contains(.,'Allocated') and (contains(@id,'btnShowDetails'))]")

有人知道我如何选择“显示详细信息”按钮吗?

谢谢

2 个答案:

答案 0 :(得分:2)

@id='btnShowDetails'不是td的属性,而是子元素button

的属性

尝试在XPath下面选择所需的元素:

//td[starts-with(normalize-space(),'Allocated') and button[@id='btnShowDetails']]

//td[normalize-space(text())='Allocated' and button[@id='btnShowDetails']]

答案 1 :(得分:2)

在您的单元格td中,按钮下没有id属性,您可以像这样修改xpath:

//td[contains(.,'Allocated') and (contains(button/@id,'btnShowDetails'))]