Краткое руководство по созданию XPath.docx
https://inlnk.ru/n0Km2A - Руководство по поиску элементов с использованием XPath
//li[contains(translate(., 'NATIONAL', 'national'), 'national')] - с разным транслитом //li[contains(text() , '09.11.1982')] [1] - с индексом //li[contains(text() , 'замена')] //*[text()='ТЕКСТ'] //*[contains(text(), 'ТЕКСТ')] //form[@id='f']//a[@class='test'] div[contains(text() , '90') and contains(text()[2], '%')] - если текст "90" и "%" |
В Xpath есть 7 типов узлов, нас интересуют только 3: Элемент, Атрибут, Текст (который мы видим на кнопке, в поле или где-либо еще)
Узел | Вид в DevTools | Синтаксис | Примеры |
Элемент - Основной узел, по которому осуществляется поиск | //Элемент[ ] | //div[ ], //span[ ], //button[ ] | |
Атрибут (или свойство, параметр) элемента и его значение после знака равно | //Элемент[@Атрибут = 'Значение'] | //span[@class = 'ui-button-text'] Но вообще название атрибута можно указать в коде страницы и оно может быть любым | |
Текст | //Элемент[text() = 'Текст'] | //span[text() = 'Войти'] В данном примере мы видим, что в тексте элемента содержатся пробелы, с ними боремся с помощью функции normalize-space() (Дальше по тексту есть примеры по ней) |
Далее спецсимволы:
Спецсимвол | Описание | Примеры |
* | Соответствует любому узлу элемента Используем если мы не знаем названия элемента или считаем, что оно будет часто меняться | //*[text() = 'Войти'] |
@* | Соответствует любому узлу атрибута Используем если мы не знаем названия атрибута элемента или считаем, что оно будет часто меняться | //span[@*='ui-button-text'] |
Функции Xpath.
Выделены только строковые функции. (Если нужно что-то еще, то сюда: https://www.hostcms.ru/documentation/step-by-step/xslt/xslt-functions/):
Строковые функции
Операторы. Также в xpath можно использовать логические операторы or и and:
К примеру, мы хотим найти элемент span, который имеет id равный 'span1' и содержит текст 'Войти' или 'Войти как'. Мы можем это сделать следующим образом: //span[(text(), 'Войти' or text(),'Войти как') and @id='span1']
(Полный список операторов: https://msiter.ru/tutorials/xpath/operators)
Отношения элементов. В xpath есть такие понятия, как: Родитель(/parent:: или /ancestor::), Потомок (/child:: или /descendant::) и Сестра(сестринский элемент), которая может быть ниже или выше (following-sibling или preceding-sibling).
Отношения с примерами, описаны тут: https://testerslittlehelper.wordpress.com/2016/07/10/real-xpath/
Чаще всего поиск осуществляется по тексту содержащемуся в элементе, просто потому что текст ищется легче всего, он присутствует практически во всех элементах и меняется не так часто.