Как выполнить статическое ожидание в селене с использованием Java?
Это довольно сложно. Куда бы я ни посмотрел, люди все время говорят мне, чтобы они использовали явные, неявные и беглые ожидания. Эти ожидания делают так, чтобы вы делали паузу на основе элементов. Однако покровительствовать нам и удалять инструменты и опции не очень хорошая идея. В моем текущем конкретном рассоле у меня есть кнопка, которая должна исчезать, если кто-то нажимает на нее слишком быстро. Тем не менее, он также предназначен для немедленного показа либо. Поэтому вам нужно подождать, пока он не появится, затем подождать достаточно времени, чтобы пройти, и только после этого нажать кнопку. С предложениями мне дают это невозможно. В этом случае необходимо использовать статическую паузу или сон. По какой-то причине я даже не могу использовать спящий поток, потому что кажется, что он устарел в самой Java 8 или что-то в этом роде.
3 ответа
Неявное ожидание:
driver.manage().timeouts().implicitlyWait(TimeOut, TimeUnit.SECONDS);
Явное ожидание:
WebDriverWait wait = new WebDriverWait(WebDriverRefrence,TimeOut);
Какой источник заставляет вас думать, что java.lang.Thread будет устаревшим?
Так что даже в документации по Java 11 это не рекомендуется.
Так что, если вы хотите использовать его, не стесняйтесь.:-)
Возможно, через термины статическое ожидание и статическая пауза, которые вы имели в виду Thread.sleep()
который по-прежнему полезен во многих отношениях.
Тем не менее, выполнение ваших тестов с помощью Selenium, вызывающих сон, не будет элегантным решением для устранения проблемы, вызывающей сон. Thread.sleep(1000);
ухудшает общую производительность выполнения теста. Вы можете найти подробное обсуждение в Selenium нуждается в сне, прежде чем перейти к следующей странице.
Если вам нужно вызвать ожидания, неявное ожидание - это хороший способ начать. Вы можете найти подробное обсуждение в разделе Использование неявного ожидания в селене. Однако, поскольку текущие веб-приложения построены с использованием JavaScript, Angular, ReactJS и т. Д., Явное ожидание будет способом продвижения вперед.
Итак, двигаясь вперед, вы можете перейти к явным ожиданиям. Вы можете найти подробное обсуждение в разделе Замена неявного ожидания явным ожиданием (selenium webdriver & java).
На этом этапе реализация Fluent Wait будет намного проще, и вы можете найти подробное обсуждение в разделе Implicit против Explicit против Fluent Wait.