Как написать вложенное выражение xpath на основе других элементов в div?

Мне нужно найти кнопку с помощью xpath и попробовать использовать вложенное выражение xpath.

Я использовал выражение

 @FindBy(xpath="//*/button[contains(text(),'FOO')]")

чтобы найти экземпляры других кнопок в другом месте кода, и до сих пор это работает нормально. однако мой код динамически создает несколько экземпляров кнопки "Добавить" на странице, и иногда эти кнопки добавления невидимы

Можно ли написать выражение Xpath, которое может найти кнопку с текстом "Добавить", которая находится внутри div что имеет h1 содержащий текст "панель видна"?

Вот отредактированная версия HTML, поскольку это в настоящее время существует

<div class="foo1">
<div class="foo2">
<div class="foo3">
<div class="foo4">
<div class="foo5">
<h1 >New Contact</h1>
</div>
<div >
<div >
<div >
<span >
<button >Add</button>
</span> 

2 ответа

Это сработало, но тесно связано

@FindBy(xpath="//h1[contains(text(), 'Panel visible')]/../../..//button[contains(text(), 'Add')]")

Это был лучший ответ и более слабый

(xpath="//*[contains(concat(' ', @foo, ' '), ' foo_container ')][descendant::h1[contains(text(), 'Panel visible')]]//button[contains(text(), 'Add')]") 

Попробуй это:

//div/h1[contains(text(), 'panel visible')]/button[contains(text(), 'Add')]
Другие вопросы по тегам