Я использую веб-драйвер Firefox для Selenium, чтобы очистить веб-страницу, которая выглядит как отображаемая с помощью React на стороне клиента. Классы в отображаемом DOM выглядят динамически сгенерированными и, кажется, меняются с каждым новым запросом. На странице также много элементов-кнопок, некоторые из которых не отображаются в области просмотра. Поэтому моя стратегия состоит в том, чтобы найти способ нажать кнопку, содержащую текст, который я ввожу с помощью селена. Несколько кнопок будут содержать текст, и я хочу просто найти первую такую кнопку.
Используя selenium/xpath, как мне выбрать первую кнопку, содержащую текст E9 1QJ?
<button>
<div><svg ...> </div>
<div>
<div>London</div>
<div>E9 1QJ</div>
</div>
</button>
<button>
<div><svg ...> </div>
<div>
<div>London Foo Bar</div>
<div>E9 1QJ</div>
</div>
</button>
Спасибо
Это должно работать:
{driver}.find_element_by_xpath("//button[div/div[text()='E9 1QJ']][1]")
Но имейте в виду, что такое решение не очень гибкое и может сломаться при минимальном изменении структуры html.
Что вы пробовали? Со всеми учебниками по XPath и другим локаторам в Интернете (вместе с вопросами по SO), вы наверняка уже прочитали некоторые из них и можете рискнуть сделать несколько попыток? Вы узнаете гораздо меньше, попросив помощи, прежде чем пытаться. Убедитесь, что вы используете консоль разработчика для тестирования локаторов, а не просто подключаете их к скрипту. Это позволит вам выполнять итерации НАМНОГО быстрее.