https://inlnk.ru/n0Km2A - Руководство по поиску элементов с использованием XPath
В 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/):
Строковые функции
- string concat(string, string, …) — возвращает конкатенацию аргументов;
- boolean contains(string, string) — принимает на вход два строковых аргумента и возвращает true, если первая строка содержит вторую и false в противном случае;
- string normalize-space(string?) — удаляет начальные и завершающие разделительные символы, нормализует все внутренние идущие подряд разделители в один пробел. Если аргумент опущен, выполняется со строковым значением контекстного узла;
- boolean starts-with(string, string) — принимает на вход два строковых аргумента и проверяет начинается ли первая строка со второй;
- string string(object?) — приводит объект к строковому типу явным образом. Если аргумент опущен, то применяется к множеству контекстного узла;
- number string-length(string?) — возвращает длину переданного ей строкового аргумента. Если аргумент опущен, то применяется к контекстному узлу;
- string substring(string, number, number?) — возвращает подстроку переданного ей строкового аргумента, начинающуюся с позиции определенной вторым аргументом и длиной, указанной третьим аргументом. Если третий аргумент не передан, то подстрока продолжается до конца строки;
- string substring-after(string, string) — принимает на вход два строковых аргумента, находит в первой строке вторую и возвращает подстроку, которая за ней следует;
- string substring-before(string, string) — принимает на вход два строковых аргумента, находит в первой строке вторую и возвращает подстроку, которая ей предшествует;
- string translate(string, string, string) — производит замену символов первого своего строкового аргумента, которые присутствуют во втором аргументе на соответствующие символы третьего аргумента.