我有这个代码
<label>
<input type="radio" checked="checked" value="fOejPdlZIx83HA" name="btnRad">
Test1
</label>
<label>
<input type="radio" checked="checked" value="fdsaf4waff4sssd" name="btnRad">
Test2
</label>
<label>
<input type="radio" checked="checked" value="fg43fasd43wsat4" name="btnRad">
Test3
</label>
Run Code Online (Sandbox Code Playgroud)
我希望通过xpath根据标签文本访问单选按钮
我已经尝试过多种方法:
//input[@name='btnRad]']/following::*[contains(text(),'Test3')]
//label[text()='Test3']/input[@name='btnRad']
//*[contains(text(),'Test3')]
Run Code Online (Sandbox Code Playgroud)
即使是最后一个也没有给我任何回报,所以xpath认为"Test3"不是标签的文字......任何人都知道如何做到这一点?
您的表达式失败,因为您label
有多个文本节点:在input
和之前的空字符串Test3
.您使用的contains
方式意味着它只会检查第一个文本节点,即空字符串.
解决这个问题的两种方法:
消除空字符串normalize-space()
:
//*[contains(text()[normalize-space()], 'Test3')]
Run Code Online (Sandbox Code Playgroud)查询每个text()
:
//*[text()[contains(.,'Test3')]]
Run Code Online (Sandbox Code Playgroud)有关更详细的说明,请参阅如何使用Python在多行文本中搜索XPath中的内容?.