Является ли xPath предпочтительным способом нацеливания на элемент во время тестирования Selenium или отступления? - PullRequest
0 голосов
/ 02 июля 2019

При использовании Selenium IDE для настройки теста я заметил, что приложение выбирает локатор для элемента (на первый взгляд) случайным образом. Иногда класс, иногда идентификатор, а иногда xPath .

Значит, xPath - это «отступление»? Может быть, предпочтительнее использовать идентификатор (если имеется) для более надежного тестирования. Или это наоборот? Что xPath на самом деле является золотым стандартом для поиска элементов на странице?

Я могу настроить тесты, которые вы видите, и мне стало интересно, следует ли мне ошибиться в отношении идентификаторов или xPaths.

1 Ответ

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

«Предпочтительным» способом определения местоположения элементов является использование атрибутов идентификатора согласно Выбор стратегии размещения глава:

Использование идентификатора элемента или локатора имени является наиболее эффективным с точки зрения производительности теста, а также делает ваш тестовый код более читабельным, предполагая, что идентификатор или имя в источнике страницы имеют правильное имя .Операторы XPath обрабатываются дольше, так как браузер должен запускать свой процессор XPath.Известно, что XPath работает особенно медленно в Internet Explorer версии 7. Поиск по тексту ссылки часто удобен и хорошо работает.Эта техника специфична для ссылок, хотя.Кроме того, если текст ссылки может часто меняться, лучше выбрать местоположение по элементу.

С другой стороны, XPath является наиболее мощным вариантом:

  • он имеет полный доступ к странице DOM
  • вы можете проходить DOM Оси и запрашивать элементы дочерних / родительских / родных братьев и сестер, предков и т. Д.
  • вы можете применять функции и операторы например содержит () , начинается с () , and, or, not и т. Д., Чтобы вы могли найти любой элемент на любой странице, используя XPath, что не относится к другим стратегиям селектора.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...