Автоматизация тестового случая независимо от изменений пользовательского интерфейса - PullRequest
0 голосов
/ 03 июля 2019

Мы автоматизируем тестовые случаи для аппаратных устройств, таких как телевизор, raspberrypi и т. Д., Которые требуют выполнения определенного количества шагов и проверки ожидаемого результата в конце каждого шага. Для автоматизации этих тестовых случаев мы используем атрибуты элемента dom, такие как id, class, data-component-id и т. Д., Для извлечения объектов и выполнения действий. Проблема этого способа автоматизации заключается в том, что каждый раз, когда меняется пользовательский интерфейс, нам нужно изменить id элементов dom, класс и т. Д., И, следовательно, это доработка скриптов. Я хочу знать, существует ли инфраструктура автоматизации или любой другой способ, с помощью которого мы можем автоматизировать тестовые случаи независимо от изменений пользовательского интерфейса.

Ответы [ 2 ]

0 голосов
/ 03 июля 2019

Вот почему вы должны использовать id селекторы, если это возможно. Они должны быть уникальными и, следовательно, неуязвимыми для изменений пользовательского интерфейса. Селектор name должен работать так же.

Если вы используете Selenium, используйте следующий список локаторов объектов в следующем порядке:

  • ID
  • имя
  • имя тега
  • класс
  • CSS или Xpath
  • текст ссылки или частичный текст ссылки

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

0 голосов
/ 03 июля 2019

Вместо того, чтобы использовать точный путь, попробуйте определить элемент более общим способом. Использование «содержит» поможет вам идентифицировать элементы с текстовыми атрибутами, не вдаваясь в то, как он определен. Таким образом, даже структура DOM изменяется, но при неизменном тексте ваши тесты не пройдут.

Содержит

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

Синтаксис: // тег [содержит (@attribute, ‘значение‘)]

Пример: // input [содержит (@id, 'er-messa')]

Примеры:

Java 1 2 3 4 5 6 7 8 // * [содержит (@ имя, 'btnClk')] -> Поиск "btnClk" для всех атрибутов имени в DOM.

// * [содержит (текст (), 'здесь')] -> Поиск текста «здесь» в DOM.

// * [содержит (@ HREF, 'swtestacademy.com')] -> Он ищет ссылку "swtestacademy.com" в DOM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...