Идентификаторы, необходимые для автоматизации пользовательского интерфейса в селене на всех HTML-страницах - PullRequest
0 голосов
/ 27 сентября 2018

Есть проект, в котором мы собираемся автоматизировать пользовательский интерфейс, но команда автоматизации предлагает нам использовать идентификаторы по всей странице, чтобы там было легко автоматизировать сценарий.

Мой вопрос здесь, почему мы будем использовать идентификаторы везде?препятствует Html и Css структуре.

Веб-страница может быть автоматизирована без идентификаторов в HTML да или нет?

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Да, веб-страница может быть автоматизирована без идентификаторов.Например, вы можете поиграть с cssSelectors здесь https://www.w3schools.com/cssref/trysel.asp (обратите внимание, что на странице примера есть элементы с и без идентификаторов)

Использование идентификаторов для поиска элементов в автоматизации обычно считается наилучшей практикой.Если вы используете идентификаторы, ваши тесты автоматизации станут независимыми от html-структур, которые в основном сделают их более стабильными.

Например, в первой версии вашего приложения вы можете иметь некоторый текст, реализованный как

<p id="someTextId" class="someClass">Hello world</p>

но в какой-то момент может принять решение переписать его как (изменить тег и даже применить другое имя класса)

<div id="someTextId" class="anotherClass">Hello world</div>

В случае, если вы используете id #someTextId для поиска элемента, ваш тест все равно будетбыть в состоянии получить доступ к необходимому элементу и правильно взаимодействовать с ним.Если вы используете p или .someClass, ваш тест автоматизации не сможет найти элемент, даже если с точки зрения пользовательского интерфейса тот же текст будет отображаться в браузере.

Мы столкнулись с несколькими недостатками использования id:

  1. Некоторые фреймворки не рекомендуют использовать их или генерировать их автоматически.(Потенциальные проблемы с идентификаторами, описанными здесь https://www.javascriptstuff.com/use-refs-not-ids/, https://www.quora.com/Are-IDs-a-big-no-no-in-the-CSS-world, https://dev.to/claireparker/reasons-not-to-use-ids-in-css-4ni4, https://www.creativebloq.com/css3/avoid-css-mistakes-10135080, https://www.reddit.com/r/webdev/comments/3ge2ma/why_some_people_dont_use_ids_at_all/)
  2. Некоторая другая логика может зависеть от них, поэтому изменение/ добавление их для необходимости автоматизации может как-то неожиданно повлиять на логику другого приложения. То, что вы можете использовать вместо идентификатора, это какой-то другой атрибут. Например, в наших проектах мы переключились с id на определенный атрибут с именем dataSeleniumId.Это ясно показывает, что атрибут используется только для тестов селена. В качестве следующего шага, вы можете добавить правило в вашей команде, когда кто-то изменяет или удаляет атрибут dataSeleniumId, он должен сообщить об этом группе автоматизации тестирования. Поскольку изменение / удаление этого атрибута будетпривести к сбоям в тестировании и избежать ложных сбоев, лучше исправить это заранее.
0 голосов
/ 27 сентября 2018

Разработчику автоматизации гораздо проще просмотреть через HTML-код и увидеть идентификатор конкретной кнопки / текстового поля / и т. Д., Чтобы реализовать соответствующий локатор внутри автоматизированного теста.

В большинстве случаевпроект начинают получать дублирование классов или сложные вложенные элементы.Это усложняет жизнь разработчика автоматизации, поскольку написание селекторов xpath или css подтверждает, что они работают, и этот локатор находит только 1 уникальный элемент.

Это зависит от команды и стиля кода, предложенного руководителем группы.

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

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