xpath获取标签内的复选框

时间:2014-02-13 15:41:24

标签: text xpath label

我有这段代码

<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>

我希望通过xpath

访问单选按钮,具体取决于标签文本

我已经尝试了多种方法:

//input[@name='btnRad]']/following::*[contains(text(),'Test3')]
//label[text()='Test3']/input[@name='btnRad']
//*[contains(text(),'Test3')]

即使是最后一个也没有给我任何回报,所以xpath认为“Test3”不是标签的文字......任何人都知道如何做到这一点?

2 个答案:

答案 0 :(得分:7)

您的表达式失败,因为您的label有一个以上的文本节点:input之前的空字符串和Test3。您使用contains的方式意味着它只会检查第一个文本节点,即空字符串。

解决这个问题的两种方法:

  • 使用normalize-space()消除空字符串:

    //*[contains(text()[normalize-space()], 'Test3')]
    
  • 查询每个text()

    //*[text()[contains(.,'Test3')]]
    

有关更详细的说明,请参阅How to search for content in XPath in multiline text using Python?

答案 1 :(得分:0)

这也适用于//label[contains(.,'Test3')]/input