Source
QA Co-pilot | Copy XPath" — це зло. Генеруємо "безсмертні" локатори з AIПривіт, екіп...
32 Views/Reach
2025-12-10 09:15
Message №123
🔗 "Copy XPath" — це зло. Генеруємо "безсмертні" локатори з AIПривіт, екіпаж!Ви вирішили написати свій перший автотест (або просто шукаєте елемент у консолі). Ви тиснете Copy selector у Chrome і отримуєте: #app > div:nth-child(2) > main > div.container > form > buttonЦе працює... до першого оновлення сайту. Як тільки розробник загорне кнопку в ще один div — ваш локатор зламається, а тест впаде.Професіонали пишуть локатори, прив'язані до суті елемента, а не до його місця. Але вигадувати складні XPath/CSS буває ліньки.Нехай це робить ваш Co-pilot.Практичний кейс: У нас є кнопка "Купити", яка захована глибоко в DOM-дереві.✨ Готовий промпт "Selector Architect":Виступи в ролі Automation QA Engineer.Ось HTML-код кнопки:`<button class="btn btn-primary btn-lg" id="x-123-random" onclick="...">Buy Now</button>`**Завдання:**Напиши мені 3 варіанти **надійних (robust)** локаторів для цього елемента (CSS або XPath), які НЕ зламаються, якщо зміниться верстка навколо або динамічний ID.Поясни, чому твої варіанти кращі за автозгенеровані.
✅ Що видасть AI:
Варіант 1️⃣ (За текстом - XPath): //button[contains(text(), 'Buy Now')] Чому краще: Працює, де б кнопка не знаходилась, доки на ній написано "Buy Now".Варіант 2️⃣ (За атрибутами - CSS): button[class*='btn-primary'] Чому краще: Ігнорує динамічний ID (x-123-random), фокусується на стилі.Варіант 3️⃣ (Комбінований - XPath): //button[normalize-space()='Buy Now' and not(@disabled)] Чому краще: Знаходить тільки активну кнопку.
Висновок: Замість того, щоб копіювати "сміття" з браузера, ви отримуєте елегантний код. Ваші тести стають стабільними, а ви витрачаєте менше часу на їх підтримку (maintenance).А ви пишете локатори самі чи довіряєте Chrome DevTools? 👇