Sho*_*tar 4 html xml selenium xpath
<a href="javascript:void(0)" title="home">
<span class="menu_icon">Maybe more text here</span>
Home
</a>
Run Code Online (Sandbox Code Playgroud)
因此,对于上面的代码,当我编写//a为XPath时,它会突出显示,但是当我编写时//a[contains(text(), 'Home')],它不会被突出显示。我认为这很简单,应该有效。
我的错在哪里
其他答案错过了这里的实际问题:
@title,但这不是OP的XPath在以前可能无法正常工作的地方失败的原因。Home与并不相同
home,但是有一个Home文本节点作为的子节点a,因此,Home如果OP 不信任他的存在,那么OP就可以使用@title。OP的XPath,
//a[contains(text(), 'Home')]
Run Code Online (Sandbox Code Playgroud)
表示选择所有a第一个文本节点包含子字符串的元素Home。但是,第一个文本节点只包含空格。
说明: text()选择上下文节点的所有子文本节点a。当contains()给定多个节点作为其第一个参数时,它将采用第一个节点的字符串值,但Home出现在第二个文本节点中,而不是第一个。
相反,OP应该使用此XPath,
//a[text()[contains(., 'Home')]]
Run Code Online (Sandbox Code Playgroud)
这表示选择a带有字符串子级包含substring的任何文本子级的所有元素Home。
如果周围没有空格,则可以使用此XPath来测试是否相等,而不是包含子字符串:
//a[text()[.='Home']]
Run Code Online (Sandbox Code Playgroud)
或者,对于周围的空格,可以使用此XPath对其进行修剪:
//a[text()[normalize-space()= 'Home']]
Run Code Online (Sandbox Code Playgroud)