Зачем нужно явное ожидание, если мы можем установить неявное ожидание на большее количество времени одновременно?
Мы объявили неявное ожидание в 10 секунд, но элемент занимает больше этого времени, скажем, 20 секунд, а иногда может появляться на 5 секундах, поэтому в этом сценарии объявляется явное ожидание.
в любое время неявное ожидание не ждите времени по умолчанию, он перестанет ждать, как только элемент станет видимым
2 ответа
Как правило, смешивать неявное и явное ожидание - плохая практика - лучше придерживаться одного или другого, а не обоих, если возможно.
Основываясь на описанной вами проблеме, вы можете увеличить неявное ожидание до 30 секунд, чтобы учесть длительное время загрузки, и ожидание будет завершено, даже если элемент загружается всего за 5 секунд.
Я предпочитаю явное ожидание, потому что я тоже могу выполнять отрицательное ожидание. Иногда мне хочется подождать, пока определенный элемент НЕ будет отображаться на странице. При явном ожидании мое ожидание заканчивается, как только элемент исчезает. Однако при неявном ожидании вам придется подождать полные 30 секунд, чтобы узнать, исчез элемент или нет.
Различия между неявным ожиданием и явным ожиданием в selenium webdriver:
Неявное ожидание
Применяется на всей странице
После того, как вы объявили неявное ожидание, оно будет доступно в течение всей жизни экземпляра веб-драйвера.
Подождать предлагается
Неявное ожидание применимо для всех веб-элементов на веб-странице.
Нет условий
Проверяет только наличие веб-элементов
Явное ожидание
Применяется к элементу
Он будет использоваться, если мы хотим, чтобы выполнение подождало некоторое время, пока не будет достигнуто какое-либо условие.
Ждать прямо выражено
Явное ожидание может применяться к одному или нескольким веб-элементам
Включает условия, предоставляемые статическими методами класса ExpectedCondition
Срок ожидания с определенными условиями.