Драйвер Selenium Web долго ждать

Могу ли я ждать с Selenium Web Driver в течение длительного периода времени?

Несмотря на то, что я могу неявно установить команду ожидания, как показано ниже, она не ждет указанное мной время.

 driver.manage().timeouts().implicitlyWait(5, TimeUnit.MINUTES);

Что-то здесь не так?

В моем случае мне нужно выполнить один тестовый пример и подождать 4 минуты, а затем выполнить следующий тестовый пример.

Я использую Java здесь.


person kushan    schedule 15.02.2013    source источник
comment
Неявная функция ожидания предназначена не для этого - если у вас есть период ожидания между тестами, вам нужно будет ввести свою собственную логику.   -  person Arran    schedule 15.02.2013


Ответы (2)


Учитывая, что вам нужно дождаться определенного элемента, я бы сделал что-то в строках ExplicitWait, как показано ниже.

WebDriverWait wait = new WebDriverWait(driver, 300); // The int here is the maximum time in seconds the element can wait.
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("someId")));

В этом случае вы можете использовать любое из ExpectedConditions. вы хотели бы. Также не нужно использовать большое время ожидания в некоторых очень конкретных случаях. Это имхо - хорошая практика.

person aimbire    schedule 15.02.2013
comment
Спасибо, аимбире; Но на самом деле то, что я хочу здесь, это ничего не ждать, просто приостановить поток, пока не будут выполнены некоторые внутренние сценарии. Вы можете ввести в заблуждение с помощью неявной команды ожидания. - person kushan; 18.02.2013
comment
Таким образом, вы должны использовать это ожидание, чтобы дождаться триггера (что позволяет вам знать, что в DOM завершена работа скриптов) - person aimbire; 06.05.2013

На самом деле это не мой ответ, Два дня назад я видел этот ответ здесь, Но у меня не было времени его применить. Сегодня я попробовал, и именно это я и хотел.

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

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

Thread.sleep(4000); для приостановки выполнения программы.

person kushan    schedule 18.02.2013
comment
Другой ответ намного лучше, чем этот ответ. - person Code Enthusiastic; 18.02.2013
comment
Только лучше, если вы неправильно поняли первоначальный вопрос Кушана. Он хотел знать, как ждать между тестами, что лучше всего выполнять с помощью thread.sleep. Арран прав; функция ожидания не предназначена для такого рода вещей. Ответ Aimbire более правильный, если вопрос был в том, как дождаться элемента, а его нет. Кушан опубликовал решение вопроса, который он на самом деле задал, а не тот, который, как думают люди, он задал. Нечестно минусовать его за это. - person bsg; 19.07.2013
comment
У меня была та же проблема, что и у Кушана, спасибо за репост :) - person Sebastian Neira; 07.07.2014