The Selenium WebDriver provides an implicit wait for synchronizing tests. When an implicit wait is implemented in tests, if WebDriver cannot find an element in the DOM, it will wait for a defined amount of time for the element to appear in the DOM. Once the specified wait time is over, it will try searching for the element once again. If the element is not found in specified time, it will throw the NoSuchElement
exception.
In other terms, an implicit wait polls the DOM for a certain amount of time when trying to find an element or elements if they are not immediately available. The default setting is 0
.
Once set, the implicit wait is set for the life of the WebDriver object's instance.
In this recipe, we will briefly explore the use of an implicit wait. However, it is recommended that you avoid or minimize the use of an implicit wait.
Let's create a test on a demo AJAX-enabled application as follows:
@Test public void testWithImplicitWait() { WebDriver driver = new FirefoxDriver(); // Launch the sample Ajax application driver.get("http://cookbook.seleniumacademy.com/AjaxDemo.html"); // Set the implicit wait time out to 10 Seconds driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); try { // Get link for Page 4 and click on it driver.findElement(By.linkText("Page 4")).click(); // Get an element with id page4 and verify it's text WebElement message = driver.findElement(By.id("page4")); assertTrue(message.getText().contains("Nunc nibh tortor")); } finally { driver.quit(); } }
The Selenium WebDriver provides the Timeouts
interface to configure the implicit wait. The Timeouts
interface provides an implicitlyWait()
method , which accepts the time the driver should wait when searching for an element. In this example, driver
will wait for an element to appear in DOM for 10
seconds after an initial try:
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
Until the end of a test, or until an implicit wait is set back to 0, every time an element is searched for using the findElement()
method, the test will wait for 10 seconds for an element to appear.
Using an implicit wait may slow down tests when an application responds normally, as it will wait for each element appearing in the DOM and increase the overall execution time. Minimize or avoid using an implicit wait. Use an explicit wait, which provides more control when compared with an implicit wait.
3.142.249.42