Выбор ответа Middle Локаторы обновлено

Strict mode в Playwright

Вопрос

await page.getByRole('button', { name: 'Удалить' }).click() падает с ошибкой strict mode violation. Что это значит?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Локатор нашёл несколько элементов, а действию нужен один. Действия Playwright требуют, чтобы локатор указывал на один элемент.

Варианты ответа

  1. Локатор нашёл несколько элементов, а действию нужен одинправильный ответ
  2. Кнопка не успела появиться в DOM за таймаут ожидания
  3. Кнопка задизейблена, и клик по ней запрещён строгим режимом
  4. В tsconfig включён strict, и вызов не прошёл проверку типов

Разбор

Действия Playwright требуют, чтобы локатор указывал на один элемент. Если совпало несколько (например, «Удалить» в каждой строке таблицы), бросается strict mode violation. Чинят уточнением: искать внутри нужной строки (row.getByRole(...)) или через filter. Таймаут и disabled дают другие ошибки, к TypeScript это отношения не имеет.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме