Equivalent of waitForVisible/waitForElementPresent in Selenium WebDriver tests using Java?

0
0

With “HTML” Selenium tests (created with Selenium IDE or manually), you can use some very handy commands like WaitForElementPresent or WaitForVisible.

<tr>
<td>waitForElementPresent</td>
<td>id=saveButton</td>
<td></td>
</tr>

When coding Selenium tests in Java (Webdriver / Selenium RC—I’m not sure of the terminology here), is there something similar built-in?

For example, for checking that a dialog (that takes a while to open) is visible…

WebElement dialog = driver.findElement(By.id("reportDialog"));
assertTrue
(dialog.isDisplayed()); // often fails as it isn't visible *yet*

What’s the cleanest robust way to code such check?

Adding Thread.sleep() calls all over the place would be ugly and fragile, and rolling your own while loops seems pretty clumsy too…

  • You must to post comments
0
0

Implicit and Explicit Waits

Implicit Wait

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.

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

Explicit Wait + Expected Conditions

An explicit waits is code you define to wait for a certain condition
to occur before proceeding further in the code. The worst case of this
is Thread.sleep(), which sets the condition to an exact time period to
wait. There are some convenience methods provided that help you write
code that will wait only as long as required. WebDriverWait in
combination with ExpectedCondition is one way this can be
accomplished.

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(
ExpectedConditions.visibilityOfElementLocated(By.id("someid")));
  • You must to post comments
Showing 1 result
Your Answer
Post as a guest by filling out the fields below or if you already have an account.
Name*
E-mail*
Website