Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Не отрабатывает ожидание установленное через implicitly_wait

python
selenium
webdriver
Теги: #<Tag:0x00007f7b626d0bc0> #<Tag:0x00007f7b626d09e0> #<Tag:0x00007f7b626d08a0>

(Tester) #1

Привет.

Может я что-то делаю не так, но не срабатывает ожидаение implicitly_wait. Устанавливаю его сразу после создания объекта вебдрайвера, передаю 10 секунд, но елемент на странице не находиться.

    self.webdriwer = webdriver.Chrome()
    self.webdriwer.maximize_window()
    self.webdriwer.implicitly_wait(10)

Хотя этот же елемент находиться если я втупую усыпляю поток на 2 секунды через time.sleep(). Может есть идеи, что я делаю не так ?


(Fiodar Motin) #2

Все правильно элемент не найден и потом он будет ждать просто 10 сек


(Tester) #3

В руководстве написано, что вроде бы он на протяжении 10 секунд будет отыскивать этот элемент. Наверное, я не правильно интерпретировал.

А как, в таком случае, обрабатывать это, если он не нашел?


(Fiodar Motin) #4

Посмотрите в сторону explicit wait https://www.seleniumhq.org/docs/04_webdriver_advanced.jsp
он по Expected.Conditions будет проверять в течении необходимого времени.


(Tester) #5

А для каких же целей реализован implicitly_wait ?


(Maxim Andryushchenkov) #6

Забудьте вообще это пользуясь Selenium и используйте только явные ожидания как вам посоветовали выше


(Yaroslav Pernerovskyy) #7

(Pavlo Bida) #8

Implicit wait срабатывает при каждом вызове метода find.
Не слушайте тех кто говорят что про него надо забыть, иначе будете указывать explicit wait для каждого первого элемента на странице.
Для ответа на ваш изначальный вопрос было бы неплохо взглянуть на код поиска и вызова элемента.


(Tester) #9

Более-менее я разобрался в чем приницыпиальная разница между этими двумя типа ожидалок. Конечно, советы тут мало ценной информации несут. Типа такого ответа

Забудьте вообще это пользуясь Selenium и используйте только явные ожидания как вам посоветовали выше

можно было и не писать, поскольку я задавал конкретный вопрос перед этим.

Ну это такое…

То что имплисити срабатывает всегда - это я и так знал. И прекрасно знал, что експлисити срабатывает индивидуально для каждого файнда, если для него указан експлисити. Вопрос был в другом

Разобрался. Тему можно закрывать


#10

Отвечу от тех людей что найдут эту тему через год и увидят ответ.
“Что значит “разобрался”??? а поделиться с людьми тем что разобрался?”


(Tester) #11

Ну, думаю, не нужно объяснять что означает слово “разобрался” ) Разобрался, в моем случае, это то состояние понимания концепции, которое дает ответ на вопрос “Для чего/зачем?”


#12

Так почему же не отрабатывал имплисит?


(Tester) #13

Имплисит отрабатывал на ура !) Имплисит справляется с своей прямой задачей очень хорошо. Отработка имплисита не гарантирует, что найденый элемент юзабельный


(Maxim Andryushchenkov) #14

Я не понял, Кличко в тестирование подался? Последняя цитата говорит о том, что вам надо с головой окунуться в мануалы и не гуглить больше “python selenium examples”


(Tester) #15

Вам не нужно писать ответы на конкретные вопросы в стиле

Забудьте вообще это пользуясь Selenium и используйте только явные ожидания как вам посоветовали выше

когда был перед этим вопрос

А для каких же целей реализован implicitly_wait ?

Вопрос задавался конкретный, на который автор ожидал получить конкретный ответ а не

не используйте…

Если не разбираетесь в материале - лучше воздержаться и не давать советы кому что делать.


(Maxim Andryushchenkov) #16

Это как? Можно пример?

Это вас надо было сразу в мануалы отправить, не понял сразу, да

Тут просто фейспалм)) Выбери себе любую гифку с ним


(Tester) #17

Это вас надо было сразу в мануалы отправить, не понял сразу, да

Хорошо, что хоть не отправил загуглить) удивительно и оригинально с твоей стороны


(Pavlo Bida) #18

Не, нельзя.