Vish Shady
Vish Shady

Reputation: 327

Will the Implicit wait will move on if findElement action is complete?

Implicit Wait : If wait is set, it will wait for specified amount of time for each findElement/findElements call. It will throw an exception if action is not complete.

Assume we set implicit wait to 10 secs. My question is will selenium move on to next step if findElement action is complete before 10 secs?

Upvotes: 1

Views: 1109

Answers (2)

raluru
raluru

Reputation: 106

Yes. Setting implicit wait causes the driver object to wait for the set time if the element it is looking for is not found immediately. The driver object keeps polling the DOM every 500 milliseconds until it finds the element or the time-out expires.

This is the explanation from official Selenium documentation page:

An implicit wait is to tell WebDriver to poll 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 instance.

So, to answer your question in short, yes it continues with executing next steps as soon as it finds the element(s) it is looking for. You may also understand that to be the case from a simple experiment like @sircapsalot has shown in his answer.

Upvotes: 3

ddavison
ddavison

Reputation: 29032

Answer:

Yes. It will continue with the next step if it finds the element before the implicit timeout is hit.

Proof of concept:

@Test
public void test29800926() {
    driver.get("http://ddavison.io/tests/getting-started-with-selenium.htm");
    driver.manage().timeouts().implicitlyWait(30000, TimeUnit.MILLISECONDS);
    System.out.println(driver.findElement(By.id("click")).getText());
}

Instead of waiting the total of 30 seconds that I set the implicit wait to (30000ms / 1000 = 30sec), it found it immediately and continued to print the text of the element.

Upvotes: 2

Related Questions