Розділ 1 з 12

Що таке локатор

Локатор — це не елемент, а спосіб знайти елемент. Він нічого не шукає в момент створення, а шукає заново щоразу, коли ви виконуєте дію чи перевірку. Саме на цьому тримаються автоочікування і стійкість до перемальовування сторінки.

Документація називає локатори центральним елементом автоочікування та повторних спроб у Playwright: локатор описує, як знайти елемент на сторінці в будь-який момент. Рядок const signIn = page.getByRole('button', { name: 'Sign in' }) миттєвий і не звертається до браузера. Пошук відбувається лише під час await signIn.hover(), а потім знову під час await signIn.click(). Якщо між цими викликами фреймворк перемалював кнопку, другий виклик знайде вже нову.

Порівняйте це з ElementHandle, який повертає page.$(). Handle вказує на конкретний DOM-вузол. Коли вузол видаляють і створюють новий, handle продовжує вказувати на старий, відʼєднаний від сторінки. Тому ElementHandle у документації позначений як discouraged.

Перемальовування сторінки: Locator проти ElementHandle

Виконайте кроки по черзі й подивіться, що бачить кожен підхід.

const btn = page.getByRole('button', { name: 'Save' })

const handle = await page.$('button.save')

Друга ключова властивість — строгість. Якщо дія чи перевірка, що працює з одним елементом, знаходить кілька, локатор не обирає перший навмання, а кидає помилку strict mode violation. Детально про це в розділі 7.