В автоматизації Selenium, якщо елементи не знаходять загальні локатори, такі як id, клас, ім'я тощо, тоді XPath використовується для пошуку елемента на веб-сторінці.
У цьому підручнику ми дізнаємося про xpath та різні вирази XPath для пошуку складних або динамічних елементів, атрибути яких динамічно змінюються під час оновлення або будь-яких операцій.
У цьому підручнику XPath ви дізнаєтесь-
- Що таке XPath?
- Типи X-шляху
- Абсолютний XPath
- Відносний XPath
- Базовий XPath
- Містить ()
- Використання АБО І І
- Починається з функції
- Текст ()
- Методи осей XPath
- Наступні
- Предка
- Дитина
- Попередня
- Наступний брат
- Батько
- Я
- Нащадок
Що таке XPath у селені?
XPath у Selenium - це шлях XML, який використовується для навігації по HTML-структурі сторінки. Це синтаксис або мова пошуку будь-якого елемента на веб-сторінці за допомогою виразу шляху XML. XPath можна використовувати як для HTML, так і для XML-документів, щоб знайти розташування будь-якого елемента на веб-сторінці за допомогою структури HTML DOM.
Основний формат XPath у селені пояснюється нижче із знімком екрану.
Основний формат XPath
Синтаксис для селену XPath:
XPath містить шлях до елемента, що знаходиться на веб-сторінці. Стандартним синтаксисом XPath для створення XPath є.
Xpath = // ім'я тегу [@ attribute = 'value']
- //: Вибір поточного вузла.
- Тег: Тег конкретного вузла.
- @: Виберіть атрибут.
- Атрибут: Назва атрибута вузла.
- Значення: значення атрибута.
Для точного пошуку елемента на веб-сторінках існують різні типи локаторів:
Локатори XPath | Знайдіть різні елементи на веб-сторінці |
Посвідчення особи | Щоб знайти елемент за ідентифікатором елемента |
Назва класу | Щоб знайти елемент за назвою класу елемента |
Ім'я | Щоб знайти елемент за назвою елемента |
Текст посилання | Щоб знайти елемент за текстом посилання |
XPath | XPath, необхідний для пошуку динамічного елемента та переходу між різними елементами веб-сторінки |
Шлях CSS | Шлях CSS також знаходить елементи, що не мають імені, класу чи ідентифікатора. |
Типи X-шляху
Існує два типи XPath:
1) Абсолютний XPath
2) Відносний XPath
Абсолютний XPath:
Це прямий спосіб знайти елемент, але недоліком абсолютного XPath є те, що якщо в шляху елемента внесені зміни, тоді XPath стає невдалим.
Ключовою характеристикою XPath є те, що він починається з однієї косої риски (/), що означає, що ви можете вибрати елемент із кореневого вузла.
Нижче наведено приклад абсолютного виразу xpath елемента, показаного на екрані нижче.
ПРИМІТКА. Ви можете практикувати наступні вправи XPath на цьому http://demo.guru99.com/test/selenium-xpath.html
Клацніть тут, якщо відео недоступне
Абсолютний XPath:
/ html / body / div [2] / div [1] / div / h4 [1] / b / html [1] / body [1] / div [2] / div [1] / div [1] / h4 [1] / b [1]
Абсолютний XPath
Відносний Xpath:
Відносний Xpath починається з середини структури DOM HTML. Починається з подвійної косої риски (//). Він може шукати елементи в будь-якому місці веб-сторінки, це означає, що вам не потрібно писати довгий xpath, і ви можете почати з середини структури DOM HTML. Відносний Xpath завжди кращий, оскільки він не є повним шляхом від кореневого елемента.
Нижче наведено приклад відносного виразу XPath того самого елемента, показаного на екрані нижче. Це загальний формат, який використовується для пошуку елемента за допомогою XPath.
Клацніть тут, якщо відео недоступне
Відносний XPath: // div [@ class = 'featured-box cloumnsize1'] // h4 [1] // b [1]
Відносний XPath
Що таке осі XPath.
Осі XPath здійснюють пошук різних вузлів у документі XML із поточного контекстного вузла. Осі XPath - це методи, що використовуються для пошуку динамічних елементів, які в іншому випадку неможливі за допомогою звичайного методу XPath без ідентифікатора, імені класу, імені тощо.
Методи осей використовуються для пошуку тих елементів, які динамічно змінюються під час оновлення або будь-яких інших операцій. Існує декілька методів осей, які зазвичай використовуються у Selenium Webdriver, такі як дочірній, батьківський, предковий, братський, попередній, власний тощо.
Використання XPath Handling складних та динамічних елементів у селені
1) Базовий XPath:
Вираз XPath вибирає вузли або список вузлів на основі таких атрибутів, як ID, Ім'я, Ім'я класу тощо з документа XML, як показано нижче.
Xpath = // введення [@ name = 'uid']
Ось посилання на доступ до сторінки http://demo.guru99.com/test/selenium-xpath.html
Базовий XPath
Ще кілька основних виразів xpath:
Xpath = // введення [@ type = 'text']Xpath = // мітка [@ id = 'message23']Xpath = // введення [@ value = 'RESET']Xpath = // * [@ class = 'barone']Xpath = // a [@ href = 'http: //demo.guru99.com/']Xpath = //img[@src='//cdn.guru99.com/images/home/java.png.webp ']
2) Містить ():
Contains () - це метод, що використовується у виразі XPath. Він використовується, коли значення будь-якого атрибута динамічно змінюється, наприклад, дані для входу.
Функція містять вміє знаходити елемент із частковим текстом, як показано в прикладі нижче XPath.
У цьому прикладі ми спробували ідентифікувати елемент, просто використовуючи часткове текстове значення атрибута. У наведеному нижче виразі XPath замість кнопки надсилання використовується часткове значення "sub". Можна помітити, що елемент знайдено успішно.
Повне значення 'Type' має значення 'submit', але використовується лише часткове значення 'sub'.
Xpath = // * [містить (@ тип, 'під')]
Повне значення "name" має значення "btnLogin", але використовується лише часткове значення "btn".
Xpath = // * [містить (@ ім'я, 'btn')]
У наведеному вище виразі ми взяли 'name' як атрибут, а 'btn' як часткове значення, як показано на знімку екрана нижче. Буде знайдено 2 елементи (LOGIN & RESET), оскільки їх атрибут 'name' починається на 'btn'.
Подібним чином, у наведеному нижче виразі ми прийняли "id" як атрибут, а "message" як часткове значення. Буде знайдено 2 елементи ("User-ID не повинен бути порожнім" & "Пароль не повинен бути порожнім"), оскільки його атрибут "name" починається з "message".
Xpath = // * [містить (@ id, 'повідомлення')]
У наведеному нижче виразі ми взяли "текст" посилання як атрибут, а "тут" як часткове значення, як показано на знімку екрана нижче. Це знайде посилання ("тут"), оскільки воно відображає текст "тут".
Xpath = // * [містить (text (), 'тут')]Xpath = // * [містить (@ href, 'guru99.com')]
3) Використання АБО І І:
У виразі АБО використовуються дві умови, чи 1-а умова АБО друга умова має бути істинною. Це також застосовується, якщо якась одна умова відповідає дійсності або, можливо, обидва. Означає, що будь-яка одна умова повинна бути вірною для пошуку елемента.
У наведеному нижче виразі XPath він ідентифікує елементи, одна чи обидві умови яких відповідають дійсності.
Xpath = // * [@ type = 'submit' or @ name = 'btnReset']
Виділення обох елементів як елемента "LOGIN", що має атрибут "type" і "RESET", що має атрибут "name".
У виразі AND використовуються дві умови, обидві умови повинні бути істинними для пошуку елемента. Не вдається знайти елемент, якщо якась одна з умов є хибною.
Xpath = // введення [@ type = 'submit' and @ name = 'btnLogin']
У наведеному нижче виразі виділення елемента 'LOGIN', який має одночасно атрибут 'type' і 'name'.
4) Xpath починається з
XPath start-with () - це функція, яка використовується для пошуку веб-елемента, значення атрибута якого змінюється під час оновлення або інших динамічних операцій на веб-сторінці. У цьому методі збігається початковий текст атрибута, щоб знайти елемент, значення атрибута якого динамічно змінюється. Ви також можете знайти елементи, значення атрибута яких є статичним (не змінюється).
Наприклад -: Припустимо, ідентифікатор конкретного елемента змінюється динамічно, як:
Id = "message12"
Id = "message345"
Id = "message8769"
і так далі ... але початковий текст такий самий. У цьому випадку ми використовуємо вираз Start-with.
У наведеному нижче виразі є два елементи з ідентифікатором, що починає "повідомлення" (тобто, "User-ID не повинен бути порожнім" & "Пароль не повинен бути порожнім"). У наведеному нижче прикладі XPath знаходить ті елементи, чий "ID" починається з "message".
Xpath = // мітка [починається з (@ id, 'повідомлення')]
5) Функція тексту XPath ()
Функція XPath text () - це вбудована функція селенового веб-драйвера, яка використовується для пошуку елементів на основі тексту веб-елемента. Це допомагає знайти точні текстові елементи, а також розміщує елементи в наборі текстових вузлів. Розташовані елементи повинні мати форму рядків.
У цьому виразі, з функцією text, ми знаходимо елемент з точним збігом тексту, як показано нижче. У нашому випадку ми знаходимо елемент із текстом "UserID".
Xpath = // td [text () = 'UserID']
6) Методи осей XPath:
Ці методи осей XPath використовуються для пошуку складних або динамічних елементів. Нижче ми побачимо деякі з цих методів.
Для ілюстрації цих методів осей XPath ми використаємо демонстраційний сайт банку Guru99.
а) наступні:
Виділяє всі елементи у документі поточного вузла () [Поле введення UserID - це поточний вузол], як показано на екрані нижче.
Xpath = // * [@ type = 'text'] // наступне :: input
Існує 3 «вхідних» вузла, що збігаються за допомогою «наступної» осі - пароля, кнопки входу та скидання. Якщо ви хочете зосередитись на якомусь конкретному елементі, ви можете скористатися наведеним нижче способом XPath:
Xpath = // * [@ type = 'text'] // наступне :: input [1]
Ви можете змінити XPath відповідно до вимог, поставивши [1], [2]
… і так далі.З введенням як "1", наведений нижче знімок екрана знаходить конкретний вузол, який є елементом поля вводу "Пароль".
б) Предки:
Вісь предка вибирає всі елементи предків (дідусь, батько тощо) поточного вузла, як показано на екрані нижче.
У наведеному нижче виразі ми знаходимо елемент предків поточного вузла (вузол "ПЕРЕВІРКА ПІДПРИЄМСТВА").
Xpath = // * [text () = 'Тестування підприємства'] // predak :: div
Існує 13 вузлів "div", що збігаються за допомогою осі "предка". Якщо ви хочете зосередитись на якомусь конкретному елементі, ви можете скористатися наведеним нижче XPath, де ви зміните число 1, 2 відповідно до ваших вимог:
Xpath = // * [text () = 'Тестування підприємства'] // predak :: div [1]
Ви можете змінити XPath відповідно до вимоги, поставивши [1], [2]
… і так далі.в) Дитина:
Вибирає всі дочірні елементи поточного вузла (Java), як показано на екрані нижче.
Xpath = // * [@ id = 'java_technologies'] // дочірній :: li
Існує 71 вузол "li", що відповідає за допомогою "дочірньої" осі. Якщо ви хочете зосередитись на якомусь конкретному елементі, ви можете скористатися наведеним нижче xpath:
Xpath = // * [@ id = 'java_technologies'] // дочірній :: li [1]
Ви можете змінити xpath відповідно до вимоги, поставивши [1], [2]
… і так далі.г) Попередня:
Виберіть усі вузли, що передують поточному вузлу, як показано на екрані нижче.
У наведеному нижче виразі він ідентифікує всі вхідні елементи перед кнопкою " ВХОД ", що є елементом введення ідентифікатора і пароля .
Xpath = // * [@ type = 'submit'] // попереднє :: input
Є 2 "вхідних" вузли, що збігаються за допомогою "попередньої" осі. Якщо ви хочете зосередитись на якомусь конкретному елементі, ви можете скористатися наведеним нижче XPath:
Xpath = // * [@ type = 'submit'] // preceding :: input [1]
Ви можете змінити xpath відповідно до вимоги, поставивши [1], [2]
… і так далі.e) Наступні брати / сестри:
Виберіть наступні брати та сестри контекстного вузла. Брати та сестри знаходяться на тому самому рівні поточного вузла, як показано на екрані нижче. Він знайде елемент після поточного вузла.
xpath = // * [@ type = 'submit'] // following-sibling :: input
Один вхідний вузол, що відповідає за допомогою осі "наступний брат".
f) Батько:
Вибирає батьківський елемент поточного вузла, як показано на екрані нижче.
Xpath = // * [@ id = 'rt-feature'] // батьківський :: div
Є 65 вузлів "div", що збігаються за допомогою "батьківської" осі. Якщо ви хочете зосередитись на якомусь конкретному елементі, ви можете скористатися наведеним нижче XPath:
Xpath = // * [@ id = 'rt-feature'] // батьківський :: div [1]
Ви можете змінити XPath відповідно до вимог, поставивши [1], [2]
… і так далі.g) Я:
Вибирає поточний вузол або "self" означає, що він вказує на сам вузол, як показано на екрані нижче.
Узгодження одного вузла за допомогою осі "self". Він завжди знаходить лише один вузол, оскільки представляє самоелемент.
Xpath = // * [@ type = 'пароль'] // self :: input
h) Нащадок:
Вибирає нащадків поточного вузла, як показано на екрані нижче.У наведеному нижче виразі він ідентифікує всіх нащадків елемента до поточного елемента (елемент кадру "Основне тіло"), що означає вниз під вузлом (дочірній вузол, вузол онука тощо).
Xpath = // * [@ id = 'rt-feature'] // нащадок :: a
Існує 12 вузлів "посилання", що відповідають за допомогою осі "нащадок". Якщо ви хочете зосередитись на якомусь конкретному елементі, ви можете скористатися наведеним нижче XPath:
Xpath = // * [@ id = 'rt-feature'] // нащадок :: a [1]
Ви можете змінити XPath відповідно до вимог, поставивши [1], [2]
… і так далі.Короткий зміст:
XPath потрібен для пошуку елемента на веб-сторінці для виконання операції над цим елементом.
- Існує два типи селену XPath:
- Абсолютний XPath
- Відносний XPath
- Осі XPath - це методи, що використовуються для пошуку динамічних елементів, які в іншому випадку неможливо знайти звичайним методом XPath
- Вираз XPath вибирає вузли або список вузлів на основі таких атрибутів, як ID, Ім'я, Ім'я класу тощо з документа XML.