html:
<html>
<body>
<div id="main">
<div>
<ul>
<li>
text1
li>
<li class="select-el select-ui">
<span class="badge">!span>
text2
li>
ul>
div>
div>
body>
html>
获取main div:
/html/body/div[@id='main']
//div[@id='main']
获取main div下的li:
//div[@id='main']//li
获取第二个li元素:
//div[@id='main']//li[2]
//div[@id='main']//li[position()=2]
包含span子元素的li:
//div[@id='main']//li[span]
包含文本元素的li:
//div[@id='main']//li[text()]
既包含span子元素,class属性又包含badge的li元素:
//li[span and contains(@class, "select-el")]
本身是li元素,且兄弟元素也是li并且包含span:
//li[../li/span]
文本内容包含"text1"的li:
//li[contains(text(), "text1")]
文本内容包含"text2"的li:
//li[contains(text()[2], "text2")]
PS:因为第二个li下既包含span又包含文本,所以text()匹配的文本节点其实有两个,既子span的前后各一个;第二个文本节点才有实质内容