Как искать «следующие» элементы, пока мы не достигнем элемента в селене? - PullRequest
0 голосов
/ 11 марта 2019

Например,

У нас есть следующий HTML-код:

<li class="gcui-menu-item tsc-dr-tree-item">1</li>
<li class="gcui-menu-item tsc-dr-tree-subitem">1-1</li>
<li class="gcui-menu-item tsc-dr-tree-subitem">1-2</li>
<li class="gcui-menu-item tsc-dr-tree-item">2</li>
<li class="gcui-menu-item tsc-dr-tree-subitem">2-1</li>

ПРИМЕЧАНИЕ. Текст, содержащийся в li, фактически не присутствует на странице, он присутствует какметки, помогающие объяснить проблему.

Здесь я хотел бы получить подэлементы '1-1' и '1-2' только ниже первого элемента дерева, '1'.

Если я ищу:

//li[contains(@class, 'tree-item')]//following::li[contains(@class, 'subitem')]

, я также получаю подэлемент под вторым элементом дерева, '2-1', поскольку у этой структуры нет подэлементов в качестве дочерних элементов, но есть братья и сестры.

Так есть ли способ, которым мы можем сделать following:: li, пока не достигнем элемента li?Может быть following::li до следующего li, содержащего в своем классе 'tree-item'?

1 Ответ

1 голос
/ 11 марта 2019

Вот xpath, который совпадает с обоими элементами подэлемента li в первом пункте меню.

//li[contains(@class,'tree-item')][1]/following-sibling::li[contains(@class,'tree-subitem') and count(preceding-sibling::li[contains(@class,'tree-item')])=1]

Ниже приведен вывод в консоли Chrome.enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...