我有一个html片段,如下所示;
<div class="sideBar">
<ul>
<li class="test testlist">
<div>test 1</div>
<ul>
<li class="test testlist"><div>sub test1</div></li>
<li class="test testlist"><div>sub test2</div></li>
</ul>
</li>
<li class="test testlist"><div>test 2</div></li>
</ul>
</div>
我需要获取包含文本“test 2”的第二个节点列表,但是当我尝试以下内容时;
//div[contains(@class, 'sideBar')]//li[@class=\"test testlist\"])[2]//div
返回节点;
<li class="test testlist"><div>sub test2</div></li>
请问如何返回节点;
<li class="test testlist"><div>test 2</div></li>
非常感谢,
下进行。
答案 0 :(得分:0)
我不确定使用文本“test 2”获取节点应该是什么规则。 首先,你的xpath有一个错误的括号(复制过去的错误):
//div[contains(@class, 'sideBar')]//li[@class=\"test testlist\"] -->)<-- [2]//div
有两种解释:
//div[contains(@class, 'sideBar')]//li[@class='test testlist'][2]//div"
这将选择所有li(带有类测试testlis)后代到div的第二个位置到父级 或者:
(//div[contains(@class, 'sideBar')]//li[@class='test testlist'])[2]//div
这将选择发现的三个的第二个li(带有类测试testlis)。
两者都不是你想拥有的。因此,试试:
(//div[contains(@class, 'sideBar')]//li[@class='test testlist'][2])[2]//div
第二个位置中的第二个。
或者最好(在我看来):
//div[contains(@class, 'sideBar')]/ul/li[@class='test testlist'][2]//div"
div中第一个直接孩子ul的第二个li。