我正在尝试根据我想要的元素的子元素在网页中找到一个元素。我需要这个,因为它是网页的可点击部分。
<table id="uniqueId">
<tbody>
<tr></tr>
<tr class="row" onclick="do_a_thing">
<td>
<input type="hidden" value="1" />
</td>
<td>
<input type="hidden" value="1" />
</td>
</tr>
<tr class="row" onclick="do_a_thing">
<td>
<input type="hidden" value="2" />
</td>
<td>
<input type="hidden" value="1" />
</td>
</tr>
<tr class="row" onclick="do_a_thing">
<td>
<input type="hidden" value="3" />
</td>
<td>
<input type="hidden" value="1" />
</td>
</tr>
</tbody>
</table>
我目前有以下xpath来选择包含输入值为2的属性的表行:
//*table[@id='uniqueId']//tr[td[0]/value='2']
根据previous question,这应该有效。为什么它不起作用?
答案 0 :(得分:2)
以下XPath
//table[@id='uniqueId']//tr[td/input[@value='2']]
当应用于您的输入时,HTML具有输出
<tr class="row" onclick="do_a_thing">
<td>
<input type="hidden" value="2" />
</td>
<td>
<input type="hidden" value="1" />
</td>
</tr>
XPath tr[td[0]/value='2']
无法使用value
属性,值2
属于td
中的输入:
tr[td/input[@value='2']]
此外,正如LarsH所述,评论td[0]
意味着td[position() = 0]
不会选择任何元素,因为position()
是基于1的,所以[0]
是一个总是错误的谓词。