我想你不能在这里使用text()
。因为此函数返回当前span
元素的一系列子文本节点。有在您的示例2个文本节点:
<span>
<input type='radio'/>
option1
</span>
1文本节点是一个只包含一个换行符<span>
和<input type='radio'/>
之间。
第二文本节点是(在开始时以及在结尾)<input type='radio'/>
和含有option1
文本加2个换行符</span>
之间。
contains
函数需要一个字符串参数而不是一个序列。我认为它只需要序列中的第一个文本节点,它只包含一个换行符。
如果您需要选择input
其次,你可以使用下面的表达式一些text
节点:如果您需要选择span
包含文本option1
和input
与@type='radio'
//input[@type='radio'][contains(following-sibling::text(), 'option1')]
,你可以试试下面的表达式:
//span[contains(., 'option1') and input/@type='radio']
如果您需要选择input
代替span
再使用后续荷兰国际集团表示:
//span[contains(., 'option1')]/input[@type='radio']
我可以建议你以下资源来获得关于XPath的一些信息。 W3C推荐标准包含XPath的完整描述。如果您使用XPath 2.0,那么你可以看看:
有关的XPath 3.0看一看:
这些recomendations足够大,很难阅读。但是您可以在这些文档中找到a list of all available axes,包括following-sibling::
,a description of text()
,a description of contains()
等
另外还有很多简要的XPath教程。例如,你可以看看this one。
你可以指定你想要精确选择文本或输入标签? – PRMoureu
我正在查找输入标签。下面的建议xpath's为我工作 –