Как мы все знаем, сценарии функционального тестирования, которые проходят через пользовательский интерфейс, нуждаются в стабильных локаторах, чтобы найти элементы.
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”