Почему xpath менее предпочтителен, чем локаторы идентификаторов или имен в Selenium? - PullRequest
0 голосов
/ 02 октября 2018

Веб-элемент, имеющий уникальный идентификатор / имя, также можно определить с помощью xpath.Тогда в чем преимущество использования By.id/By.name по сравнению с By.xpath.Рассмотрим следующий пример.Ниже приведен веб-элемент.

<input id="abc" name="abc" xpath="abc">

Этот веб-элемент может быть идентифицирован как:

  1. By.id("abc");
  2. By.name("abc");
  3. By.xpath(".//*[@id='abc']); or By.xpath(".//*[@name='abc']);

Я хочу знать, в чем преимущество использования 1. или 2. перед 3.?

Ответы [ 3 ]

0 голосов
/ 03 октября 2018

Я не думаю, что Xpath менее предпочтителен, чем ID и Имя.

  1. Идентификатор может быть не всегда уникальным, в современных веб-сайтах DOM идентификаторы в основном меняются по времени.Вы не можете остаться с одним идентификатором и снова запустить скрипт, если вам нужно попробовать, вы можете проверить и с Amazon Site.
  2. Имя может быть или не быть уникальным.На некоторых страницах вы правы, вы можете обнаружить, что элементы могут иметь уникальные имена, но давайте возьмем пример, если у вас есть страница с именем и фамилией, когда-то команда разработчиков просто копирует и вставляет эти строки имени в фамилию.Так что теперь вы найдете тот же атрибут имени на одной странице.Таким образом, вы также не можете полагаться на имя.
  3. Xpath уникален, потому что вы тот, кто разрабатывает xpath, и вам всегда нужен элемент с уникальной идентичностью.Так что теперь в примере Name вы можете получить имя и фамилию отдельно ny xpath.

Я считаю, что Xpath - лучший выбор по сравнению с атрибутом Name и ID.

0 голосов
/ 05 октября 2018

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

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

  • Способ, которым селен взаимодействует с веб-элементами управления через HTML DOM , а HTML DOM - это стандарт W3C, за которым следуют все браузеры и механизмы сценариев Java, такие каккак V8 для Chrome, Chakra для Edge и т.д.Поэтому, когда вы используете локатор, такой как Id, Name и другие, которые уже реализованы и всегда будут работать для вас.

HTML DOM Methods

См. https://www.w3schools.com/jsref/dom_obj_document.asp

  • XPath фактически используется для навигации поэлементы и атрибуты в документе XML.Поскольку HTML DOM также является формой XML, Xpath также будет работать, но XPath не был разработан для HTML DOM.У него другое назначение.

  • Вывод: если у вас уже есть методы, поддерживаемые HTML DOM, предпочтение следует отдавать тем, которые используют XPath, что является общим способом навигации, и было несколько экземпляров XPath.с браузером Internet Explorer, где он не работал должным образом.

0 голосов
/ 02 октября 2018

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

Атрибут имени часто также уникален, но не обязательно, и часто это не так.

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

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

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