如何通过XPath筛选表格中优先级为P4的ID
如何用XPath选取表格中优先级为P4的ID?
我需要从表格里选出优先级为P4的ID,已经拿到表格第一行的页面代码。目前写了几个定位特定列的XPath,但没法写出符合需求的定位器,现有定位器如下:
//tbody/tr[*]/td[2]//td[contains(text(),'P3')]
附上表格HTML代码:
<table _ngcontent-c17="" class="ticket-table table table-striped table-responsive"> <tbody _ngcontent-c17="" style="overflow-y: initial !important;"> <!----><tr _ngcontent-c17=""> <td _ngcontent-c17="" style="width: 50px;"> <div _ngcontent-c17="" class="checkbox-radios checkbox"> <label _ngcontent-c17=""> <input _ngcontent-c17="" id="tickets-block-select-ticket" name="selectTicket" type="checkbox" value="2062"><span class="checkbox-material"><span class="check"></span></span> </label> </div> </td> <!----> <!----><td _ngcontent-c17="" style="width: 5% !important;"> INN-22 </td> <td _ngcontent-c17="" style="text-align: left; width: 20%;"> <a _ngcontent-c17="" class="locked-link" id="ticket-block-title" title="Title: Create weekly report Description: " href="#/ticket/2062"> <!----> <!----><span _ngcontent-c17="">[Inner] </span> <!----> Create weekly report </a> </td> <td _ngcontent-c17=""> </td> <td _ngcontent-c17=""> P4 </td> </tbody> </table>
解决方案
根据你要获取的ID类型,提供对应的XPath:
1. 获取工单编号(如INN-22)
//tbody/tr[td[normalize-space(text())='P4']]/td[2]
逻辑:先定位到包含P4文本的<td>所在的<tr>行,再选取该行的第2个<td>(工单编号列)。用normalize-space()是为了处理文本前后的空白字符,避免匹配失败。
2. 获取复选框的value值(如2062)
//tbody/tr[td[normalize-space(text())='P4']]/td[1]/input[@type='checkbox']
逻辑:找到对应P4的行后,定位到第一列的复选框元素,它的value属性就是工单ID。
3. 获取链接中的ID(对应href里的2062)
//tbody/tr[td[normalize-space(text())='P4']]/td[3]/a
逻辑:找到对应P4的行后,定位到第三列的链接元素,可通过读取href属性提取ID(如从#/ticket/2062中截取2062)。
内容的提问来源于stack exchange,提问作者Serhii
相关产品推荐
相关产品推荐

