0

我有一个如下所示的 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>

非常感谢,

C。

4

1 回答 1

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 (具有类 test 测试)的后代到 div ,该 div 位于父级的第二个位置。
或者:

(//div[contains(@class, 'sideBar')]//li[@class='test testlist'])[2]//div

它将选择找到的三个中的第二个 li (with class test 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 。

于 2013-06-14T11:55:43.870 回答