Локаторы. CSS, XPATH, JQUERY.

Ранее мы уже изучали локаторы, с помощью которых можно идентифицировать элементы на web странице. В этой главе мы пристальнее рассморим наиболее сложные из них, а именно CSS, Xpath и jQuery локаторы.

CSS локаторы

Многие браузеры реализуют CSS движок, чтобы разработчики смогли применять CSS таблицы в своих проектах. Что позволяет разделить между собой контент страницы с её оформлением. В CSS есть паттерны, согласно которым стили, создаваемые разработчиком, применяются к элементам страницы (DOM). Эти паттерны называются локаторы (selectors). Selenium WebDriver использует тот же принцип для нахождения элементов. И он намного быстрее, чем поиск элементов на основе XPath, который мы рассмотрим чуть позже.

Давайте рассморим несколько базовых локаторов с использованием CSS:

Абсолютный путь:

WebElement userName = driver.findElement(By.cssSelector("html body div div form input"));

Относительный путь:

WebElement userName = driver.findElement(By.cssSelector("input"));

Поиск непосредственного дочернего элемента:

WebElement userName = driver.findElement(By.cssSelector("div>a"));

Поиск дочернего элемента любого уровня:

WebElement userName = driver.findElement(By.cssSelector("div a"));

Поиск по ID элемента:

WebElement userName = driver.findElement(By.cssSelector("input#username"));

//или

WebElement userName = driver.findElement(By.cssSelector("#username"));

Поиск по классу:

Поиск по значениям атрибутов html тегов:

Поиск по названию атрибутов:

Поиск по началу строки:

Поиск по окончанию строки:

Поиск по частичному совпадению строки:

XPath локаторы

XPath (XML path) - это язык для нодов (nodes) в XML документе. Так как многие браузеры поддерживают XHTML, то мы можем использовать XPath для нахождения элементов на web страницах.

Важным различием между CSS и XPath локаторами является то, что, используя XPath, мы можем производить перемещение как в глубину DOM иерархии, так и возвращаться назад. Что же касается CSS, то тут мы можем двигаться только в глубину. Это значит, что с XPath можем найти родительский элемент, по дочернему.

Рассмотрим некоторые примеры:

Абсолютный путь:

Относительный путь:

Поиск непосредственного дочернего элемента:

Поиск дочернего элемента любого уровня:

Поиск элемента по тексту:

Поиск по значениям атрибутов:

Поиск по названию атрибутов:

Поиск родительского элемента:

jQuery локаторы

Мы можем находить элементы, используя jQuery локаторы. Они используются, когда CSS локаторы изначально не поддерживаются браузерами.

Первое, что нужно сделать для их использования - проверить, поддерживает ли приложение jQuery библиотеку. Если нет, то мы сами должны её добавить:

Теперь нам нужен объект, с помощью которого мы смогли бы работать с JavaScript и, как следствие, с jQuery. Для этого мы будем использовать JavaScriptExecutor

Теперь всё готово, для того, чтобы мы могли использовать jQuery локаторы.

А вот и сам локатор:

Так же мы можем использовать CSS локаторы внутри jQuery локаторов:

Last updated