这是html代码:
<table>
<tr class="WhiteRow">
<td align="center">
<input id="SelectedDelivery1" type="checkbox" onclick="HandleClick(this.name,this.checked,"")" value="Y" name="SelectedDelivery1">
</td>
<td valign="top">
<span></span>
<span class="bold">Instrument Search</span>
<br>
abc (TRANSFER)
</td>
<td align="center">5 minutes</td>
<td class="noborder" align="right">
<td class="noborder" align="right">
<td class="noborder" align="right">
<td class="noborder" align="right">
</tr>
<tr>
<td align="center">
<input id="SelectedDelivery2" type="checkbox" onclick="HandleClick(this.name,this.checked,"")" value="Y" name="SelectedDelivery1">
</td>
<td valign="top">
<span></span>
<span class="bold">Instrument Search</span>
<br>
abc (CAVEAT)
</td>
...
</tr>
</table>
我想定位包含<tr>
和<span class="bold">Instrument Search</span>
的{{1}}。该tr可能不是表格中的第一个元素。
到目前为止,我试过
abc (TRANSFER)
只满足其中一个条件,并且有几个tr满足选择器。
你能告诉我如何针对他们两个
答案 0 :(得分:0)
在浏览语法后,我发现自己是一个答案。 如果还有其他更好的方法,请告诉我
//td/span[text()="Instrument Search"]/ancestor::td/text()[contains(., "TRANSFER")]/ancestor::tr
答案 1 :(得分:0)
使用以下XPath表达式:
//tr[contains(., 'abc (TRANSFER)') and contains(td/span[@class = 'bold'], 'Instrument Search')]
如果可能的话,你应该总是使用单向的表达式,因为&#34;向后&#34;像ancestor::
这样的轴可能是一个代价高昂的举动。这比您已经找到的解决方案更具优势。
如果span[@class = 'bold']
不能包含&#34;乐器搜索&#34;以外的任何内容,您应该将上面的表达式修改为:
//tr[contains(., 'abc (TRANSFER)') and td/span[@class = 'bold'] = 'Instrument Search']
&#34; abc(TRANSFER)&#34;的位置仍然不是很精确,如果在某个地方需要(例如总是在td
元素内),你必须进一步限制上述内容。
编辑回复您的评论:
abc(TRANSFER)在td标签内,它只是一个文本字段
然后使用
//tr[contains(td, 'abc (TRANSFER)') and td/span[@class = 'bold'] = 'Instrument Search']