Выбор ответа Senior Selenium и WebDriver обновлено

Клик через JavaScript

Вопрос

Коллега чинит падающий тест, заменив element.click() на driver.execute_script("arguments[0].click()", element). В чём риск?

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

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

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

Коротко

Правильный ответ: JS-клик обходит проверки видимости и перекрытия, баг останется скрыт. Нативный клик WebDriver проверяет, что элемент видим и в точку клика никто не перекрывает.

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

  1. Клик через JS в десятки раз медленнее, набор тестов заметно замедлится
  2. Chrome блокирует click() из execute_script без пользовательского жеста
  3. Ничего не меняется: и нативный, и JS-клик вызывают одно событие
  4. JS-клик обходит проверки видимости и перекрытия, баг останется скрытправильный ответ

Разбор

Нативный клик WebDriver проверяет, что элемент видим и в точку клика никто не перекрывает. JS-клик просто вызывает обработчик. Так можно спрятать настоящий баг: кнопку закрывает баннер, а тест зелёный. Работает он во всех браузерах и быстро, но это последнее средство с комментарием, почему.

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

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

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