以下代码:
<label>
<input class="class1" type="checkbox" checked="checked"/>
First text
</label>
<label>
<input class="class2" type="checkbox" checked="checked"/>
Second text
</label>
<label>
<input class="class3" type="checkbox" checked="checked"/>
Third text
</label>
我想要做的是通过包含文本来获取特定的标签元素。我在努力:
//label[text()='First text']
和
//label[contains(text(),'First text')]
但它不起作用。
请指教!
谢谢! :)
答案 0 :(得分:2)
//label[text()[contains(., 'First text')]]
您的尝试
//label[contains(text(),'First text')]
无效,因为
中的<label>
<label>[
]<input class="class1" type="checkbox" checked="checked"/>[
First text
]</label>
有两个文本节点:一个空的文本节点,只包含换行符,就在input
之前,而非空的一个在<input>
之后。我上面用方括号概述了它们。
contains(node-set, string)
之类的调用强制将第一个参数转换为contains
为字符串。 string(label)
会给你'First text'
一堆空格,无论有多少标签。)contains(text(),'First text')
永远不会成功。因此,您必须单独测试文本节点,并通过嵌套谓词来完成,如上所示。