Выбор ответа Senior Selenium и WebDriver обновлено
Клик через JavaScript
Вопрос
Коллега чинит падающий тест, заменив element.click() на driver.execute_script("arguments[0].click()", element). В чём риск?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: JS-клик обходит проверки видимости и перекрытия, баг останется скрыт. Нативный клик WebDriver проверяет, что элемент видим и в точку клика никто не перекрывает.
Варианты ответа
- Клик через JS в десятки раз медленнее, набор тестов заметно замедлится
- Chrome блокирует
click()изexecute_scriptбез пользовательского жеста - Ничего не меняется: и нативный, и JS-клик вызывают одно событие
- JS-клик обходит проверки видимости и перекрытия, баг останется скрытправильный ответ
Разбор
Нативный клик WebDriver проверяет, что элемент видим и в точку клика никто не перекрывает. JS-клик просто вызывает обработчик. Так можно спрятать настоящий баг: кнопку закрывает баннер, а тест зелёный. Работает он во всех браузерах и быстро, но это последнее средство с комментарием, почему.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.