вторник, 15 ноября 2016 г.

Введение в XPath (часть 1). Поддержка XPath в Selenium и инструментальные средства.

XPath (XML Path Language) — язык запросов к элементам XML или XHTML документа, реализующий навигацию по DOM. XPath предназначен для использования другими спецификациями, такими как XSL Transformations (XSLT) и XML Pointer Language (XPointer).
WebDriver предоставляет несколько способ поиска элементов. Идентификация поиска осуществляется при помощи класса By. Одним из вариантов поиска By является xpath, принимающий в качестве параметра строку, представляющую собой xpath-запрос:

driver.findElement(By.xpath("//input[@id='login']"));
 
Будьте внимательны, используя xpath. Selenium при построении xpath-запроса использует стандартные обозначения — поиск начинается с «//», т.е. будет искать по DOM-дереву всего документа, а не только среди потомков текущего узла. Поэтому если вы выстраиваете поисковые запросы в цепочку, то используйте «.//» для того, чтобы ограничить поиск среди потомков элемента.

// найдет первый элемент a с классом "link" на странице:
driver.findElement(By.id("some-id")).findElement(By.xpath("a[@class='link']")); 

// найдет первый элемент a с классом "link" среди потомков элемента с id="some-id":
driver.findElement(By.id("some-id")).findElement(By.xpath(".//a[@class='link']"));

Если критериям поиска удовлетворяет несколько элементов, результатом выполнения findElement будет первый из них. Если же элемент не найден, будет выдано исключение NoSuchElementException.
Некоторые HTML элементы не нуждаются в явном указании атрибутов потому, что они имеют какое-то стандартное значение по умолчанию. Основное правило при использовании xpath — НЕ полагайтесь на то, что XPath-запрос обнаружит такой неявный атрибут.
Для браузеров, в которых встроенная поддержка XPath отсутствует, разработана собственная реализация поиска по xpath. Однако, в некоторых случаях, это может приводить к неожиданным результатам.
Driver Встроенная поддержка XPath
HtmlUnitDriver Yes
InternetExplorerDriver No
FirefoxDriver Yes
Скажу пару слов об инструментальных средствах XPath, которые могут пригодиться в ходе работы. Они позволяют отлаживать XPath-выражения и помогают при создании и проверке XPath. Их использование значительно облегчает написание тестов, в которых используется поиск элементов по xpath. Так как поле нашей деятельности — это тестирование сайтов и web-приложений, то и речь пойдет о поддержке XPath в браузерах:
  • Chrome xPath Viewer. Осуществляет поиск DOM элементов на текущей странице с заданными выражениями XPath и CSS селекторами. При наведении на найденный результат в списке подсвечивает элемент на странице. Щелчок правой кнопкой мыши на элементе возвращает абсолютное XPath выражение.
    Преимущества:
    — достаточно прост в обращении;
    — поддержка CSS.
    Недостатки:
    — когда xPath Viewer активен нет возможности вызвать контекстное меню для элемента правой кнопкой мыши;
    — предлагаемый xpath элемента строится только по тегам и позициям, не учитывая id;
    — нет поддержки svg-контента на странице.
     
  • Mozilla Firefox XPath Checker. Интерактивный редактор выражений XPath. Запускается из контекстного меню командой ‘View XPath’. Динамически обновляет результаты при редактировании запроса. Преимущества:
    — генерируемый xpath элементов строится оптимальным образом, используя id элементов;
    — успешно работает с svg-контентом и т.п. за счет поддержки различных namespaces.
    Недостатки:
    — необходимо закрывать и открывать XPath Checker, чтобы получить xpath нового элемента.
    — визуальное отображение найденных элементов в результатах — громоздко и бесполезно.
     
  • Mozilla FirePath. FirePath является расширением для Firebug, которое добавляет инструменты для редактирования, проверки и создания выражения XPath, CSS селекторов и селекторов JQuery.
    Преимущества:
    — генерируемый xpath элементов строится оптимальным образом, используя id элементов;
    — поддержка работы с различными namespaces;
    — отображение результатов в Firebug, в DOM-модели документа;
    — подсвечивание результатов непосредственно на странице.
Синтаксис и правила построения xpath-запросов описаны в статье Введение в XPath (часть 2). Основы построения запросов

Комментариев нет:

Отправить комментарий

SEO: Эксперимент: как Яндекс и Google учитывают ключевые слова в URL

Эксперимент: как Яндекс и Google учитывают ключевые слова в URL Эксперимент: как Яндекс и Google учитывают ключевые слова в URL Дата пу...