t.me/atinfo_chat Telegram группа по автоматизации тестирования

Можно ли найти текст внутри тега button с помощью webdriver?

Теги: #<Tag:0x00007f748a00a798> #<Tag:0x00007f748a00a6a8> #<Tag:0x00007f748a00a5b8>

Доброго времени суток, господа.
Допустим на странице есть кнопка:

Start

Есть ли какой-то способ сделать поиск этой кнопки зная только что на ней надпись “Start”?

В webriver + selenide это делается так

$$("html button").findBy(text("Start")).click

Большое спасибо!

Поиметь как решенный

Лучше сразу искать без листа и дополнительных внутренних поисков, так быстрее по скорости

$(byText("Start")).click()
или по XPath
$(byXpath("//button[contains(text(),'Start')]")).click()

В документации selenide приводят пример замены xpath такой конструкцией, которую я привел. Вот ссылка

По поводу скорости не замерял. Но на мой взгляд разницы большой нет.

Я не говорю что решение не рабочее, я сказал что оно не производительное, когда будет у вас много тестов, вы будете искать любую возможность оптимизировать тесты. В вашем примере идет 3 запроса к драйверу, в моем 2, чем их меньше тем лучше.
Selenium WebDriver — это в первую очередь набор библиотек для различных языков программирования. Эти библиотеки используются для отправки HTTP запросов драйверу (отсюда и название WebDriver), с помощью протокола JsonWireProtocol[5], в которых указано действие, которое должен совершить браузер в рамках текущей сессии.
image

1 Симпатия

Ну давайте будем честными перед самими собой:
Е2Е-тесты, которые выполняются в браузере, абсолютно всегда будут долгие. Тут суть не в том, чтобы уменьшать количество http-запросов, а просто не запускать браузер. Это реально способ ускорения тестов :smiley:
А насчет ускорения тестов, которые уже идут в браузере - просто не используйте thread.sleep, а правильно используйте ожидания там, где это надо. Как по мне - это здраво, чем высчитывать количество http-запросов в драйвер

Когда уже все возможное сделано, и до такого доходит. Понятно что долгие, но всегда приятно сократить время прогона на 20-30%