<a href="/google.com">
<div> ABC </div>
<span>
<button class="btn"> Show more </button>
<span/>
</a>

<div>
<div>ABC</div>
<span>
<button class="btn"> Show more </button>
<span/>
</div>

Как вы, ребята, видите, у нас есть 2 КНОПКИ, и мне нужно нажать на КНОПКУ, предок которой не является тегом <a/>, потому что если я нажму кнопку, предком которой является тег, он перенаправит меня на другие страницы. Так что я не хочу такого поведения.

Очевидное решение - я могу использовать для этого абсолютный Xpath, но это не лучший способ, потому что HTML DOM или структура css могут быть изменены, поэтому они нестабильны.

Итак, как я могу отличить 2 кнопки, используя предка или что-то подобное? Я имею в виду другие способы лучше. Спасибо, ребята, что так мне помогли!

1
DFX Nguyễn 18 Ноя 2021 в 11:01

1 ответ

Лучший ответ

Чтобы выбрать button, у которого нет предка тега a, можно выполнить следующий XPath:

//button[not(ancestor::a) and(contains(.,'Show more'))]
2
Prophet 18 Ноя 2021 в 11:11
Эти дополнительные скобки между and и contains не нужны. Это должно служить той же цели //button[not(ancestor::a) and contains(.,'Show more')]
 – 
MITHU
18 Ноя 2021 в 20:25
Вы правы, спасибо. Однако я не думаю, что ответ без этих скобок будет значительно лучше. Или это действительно имеет значение?
 – 
Prophet
18 Ноя 2021 в 20:32