Навчання XPath з прикладами
Робота з Selector Engine в Afina
Selector Engine — центральний хаб таргетингу елементів в Afina. Це те місце, де кожен селектор, запит за атрибутом та збіг за текстом знаходять свій дім. Користувач отримує зручний досвід: точно націлюватися на кнопки, поля вводу, посилання, текстові блоки та запускати скрипти, які клікають, наводяться й витягують дані прямо зі сторінки. Крім того, рушій відповідає за надійне керування запитами за класами, фільтрами за атрибутами, правилами текстового вмісту та даними селекторів, прив'язаними до кожного скрипта.
Коли запити завантажені в систему, редактор скриптів показує весь потік на екрані. Головна зручність: можна відстежувати кожен пошук, за секунди знаходити потрібний селектор за відповідною міткою та запускати дії пошуку одразу для безлічі скриптів в один клік.
Переваги Selector Engine
- У Selector Engine доступний широкий набір шаблонів запитів під будь-яке бізнес-завдання.
- Користувачі налаштовують кожен пошук через потрібні збіги за класом, атрибутом та текстом.
- Сценарії автоматизації без зусиль звертаються до результату через посилання на збережену змінну.
- Рушій підтримує як одиничні запити за атрибутом, так і повноцінні пайплайни з кількома умовами в будь-який момент.
- Будь-який користувач отримує зручний досвід побудови логіки селекторів з унікальною конфігурацією.
Після збереження запиту щойно зібраний пошук стає в загальний список на канвасі скрипта. З цього моменту можна з'єднувати запити зі скриптами, редагувати кожен збіг, прив'язувати пошук до пайплайна, позначати старі селектори на чищення, чіпляти потрібний запит до робочого процесу та відправляти скрипт у задачі автоматизації. Таким чином, кожен щойно зібраний XPath одразу готовий до роботи.
Пошук за класом
Використовувати XPath на основі класів в Afina є безліч причин. По-перше, це дає чудову швидкість для свіжих селекторів. По-друге, можна спертися на надійність заздалегідь підготовлених імен класів. Шаблон ідеально підходить для налаштування робочого середовища, розгортання великого пакета пошуків елементів одразу або відновлення відомого робочого потоку селекторів після змін на сторінці.
Найчастіший сценарій — пошук елемента за значенням атрибута class. Конструкція contains(@class, "...") обробляє часткові збіги, а конструкція not(...) виключає небажані класи з результату.
<div class="style_taskCard style_box"></div>
<div class="style_taskCard style_disable"></div>
<div class="style_taskCard style_box"></div>
//div[contains(@class, "style_taskCard")][not(contains(@class, "style_disable"))]
Крім того, мульти-класові запити дають безперервний доступ до точкових збігів. Користувач підбирає імена класів та складає їх у квадратні дужки. Решту платформа бере на себе.
//div[contains(@class, "style_taskCard")][contains(@class, "style_active")]
Пошук за атрибутом або текстом
Під різні бізнес-завдання доступні різні сценарії селекторів. Користувач може закидати один збіг за класом за раз або зчіплювати стек перевірок атрибутів в одному робочому процесі. Для точних збігів береться конструкція @attribute="value". Для текстового вмісту конструкція contains(text(), "...") обробляє часткові збіги, а text()="..." — точні.
Перед тим як запит спрацює, користувачу варто переконатися, що цільовий елемент більше не задіяний в активній задачі, скрипті чи поточному робочому процесі. Причина проста: операція селектора тягне за собою пов'язані посилання у скриптах, задачі, стан сторінки та історію роботи разом із результатом. Тож незапланований селектор може коштувати зайвих втрат.
<div data-role="admin"></div>
<button>Continue</button>
<a href="/en/auth/login">Login</a>
//div[@data-role="admin"]
//button[contains(text(), "Continue")]
//a[contains(@href, "/auth/login")]
З іншого боку, точний збіг — не завжди правильний крок. Багато користувачів воліють зберегти старий частковий збіг, поміняти йому правило, змінити ім'я атрибута або перемкнути пошук на свіжу комбінацію. Плюс у тому, що вихідний запит просто залишається на лаві запасних, і жодні дані не зникають назавжди.
Рекомендації та збережені шаблони
Кожен XPath-запит в Afina здатен нести великий набір даних по селектору. Ці дані — саме те, до чого звертаються скрипти й задачі автоматизації під час роботи. Наприклад, запити за класами, збіги за атрибутами, правила текстового вмісту, пошук за точними значеннями, пошук за користувацькими атрибутами та будь-які інші параметри, які в кожного елемента свої.
Найцінніше в цій функціональності — повторне використання. Один XPath можна застосовувати скрізь і отримувати однаково стабільні результати. Кожен скрипт підставляє свій збіг, коли виклик доходить до кроку пошуку. Замість клонування запиту під кожен скрипт користувач просто грамотно готує змінну. Таким чином, автоматизація стає гнучкішою.
Крім того, Afina пропонує два варіанти таргетингу елементів: partial match через contains(...) та exact match через @attribute="value" або text()="...". Partial match зарезервований під вміст, який може злегка змінюватися від рендера до рендера сторінки. Exact match зарезервований під вміст, який стабільний по всьому сайту. Наприклад, написи на кнопках, пункти меню, атрибути ролей, користувацькі data-атрибути та будь-які інші токени, на яких користувач хоче закріпити скрипт.
Обидва види запитів дістаються до скриптів через одну й ту саму конструкцію XPath. Функція ідеально підходить для прив'язки сотні скриптів до одного й того самого пошуку за один захід. Цим можливості не обмежуються. Користувачі можуть прив'язувати запит до планових вікон чищення або зберігати знімок перед серйозними змінами.