Рубрики
Без рубрики

Селен Webdriver и динамические локаторы

Работа с динамическими локаторами в селене Webdriver. Tagged с тестированием, WebDev, Python.

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

Selenium использует следующие стратегии локатора: • ID • Имя • Имя класса • XPath • Селектор CSS • Имя тега • Текст ссылки • Частичная ссылка текст

Но что произойдет, если ни один из этих локаторов не стабилен? Что произойдет, если даже идентификатор динамичен и изменяется с каждым рендерингом страницы?

Допустим, вы хотите нажать на кнопку регистрации, в которой есть Register_312312312 Я БЫ.

Классический способ написать код селена был бы что -то вроде этого:

Но это не сработает, потому что в следующий раз, когда вы запустите свой тест, и страница отображается, у нее будет другой идентификатор.

Мы также могли бы написать пользовательский селектор CSS, но наша цель здесь состоит в том, чтобы найти идентификатор этого элемента и использовать его в нашем тесте.

Нам нужно схватить что -то, что делает этот элемент уникальным, возможно, атрибутом.

Но нам нужно будет использовать JavaScript, чтобы достичь этого.

К счастью, Selenium имеет метод execute_script () для таких случаев.

Как мы видим, кнопка регистра имеет атрибут с именем Название который имеет значение Регистр Анкет Это то, что делает этот элемент уникальным на этой странице.

Это код JavaScript, который вам придется выполнить, чтобы найти этот элемент и получить идентификатор:

Мы просто должны добавить этот код JavaScript в переменную и выполнить его в нашем коде селена:

Обратите внимание, как я возвращаю эту переменную, которая содержит идентификатор с переменной Python. После этого я нажимаю на элемент, обнаружив его с идентификатором из этой переменной Python.

И вуаля, мы сделали это! Сейчас мы обрабатываем динамические локаторы с селенам Webdriver.

Это также может быть выполнено в Конечный тест :

Оригинал: “https://dev.to/razgandeanu/selenium-webdriver-and-dynamic-locators-40b1”