Что касается различий между ними:
.click
= имитирует щелчок левой кнопкой мыши по объекту. .fire_event
= выполняет JavaScript, даже если он илиможет быть недоступен в обычном режиме с помощью щелчка мыши. when_present.click
= ожидает, пока объект будет одновременно доступен и появится в видимой области (полное окно браузера), прежде чем попытаться щелкнуть.
when_present
полезно, когда ваш сайт использует AJAX, и взаимодействие с одним объектом приводит к появлению другого объекта.Использование .click
может попытаться щелкнуть по второму объекту до того, как он станет доступным, и сценарий завершится неудачей.
Вполне вероятно, что ваша страница содержит форму AJAX, а кнопка, с которой вы пытаетесь взаимодействовать, делаетне загружается сразу, но после небольшой задержки, когда:
- введено текстовое поле
- нажата другая кнопка
- страница завершает генерацию контента
- и т. Д.
Поскольку fire_event ищет не физическое представление кнопки, а событие JS в источнике, его можно использовать до того, как кнопка будет доступна / видима / активна.