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 |
- 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-модели документа;
— подсвечивание результатов непосредственно на странице.
Комментариев нет:
Отправить комментарий