lijep dam
lijep dam

Reputation: 636

ExpectedConditions.invisibilityOfElementLocated doesn't work

I have this code

wait.until(ExpectedConditions.invisibilityOfElementLocated(By.id(".....")));
webDriver.findElement(By.xpath(".......")).click();

Sometimes I get exception:

org.openqa.selenium.WebDriverException: unknown error: Element <a href="#" onclick="showRelatedPerson();return false;" class="button-alt button-icon">...</a> is not clickable at point (1233, 710). Other element would receive the click: <div id="jquery-msg-bg" style="width: 100%; height: 100%; top: 0px; left: 0px;"></div>

This is the element that I am trying to avoid by wait that I put. I am waiting until it becomes invisible, but sometimes even if it becomes invisible it still can receive the click and it is blocking the proper element to be clicked.

Upvotes: 3

Views: 3959

Answers (2)

Fragsman
Fragsman

Reputation: 79

I've been using Selenium for 3 years. I was happy to try new version 4, yet it dissapoints me. I do not trust in ExpectedConditions as they do not work or doesn't provide the expected results. I do use them, but I often implement my own waits.

Try using this (I used this simple solution in many projects and it just works).

WebElement x = driver.findElement(locator);
while(x.isDisplayed())
    Thread.sleep(100);

Upvotes: 1

lijep dam
lijep dam

Reputation: 636

The problem was that once test reaches first line, the element that I wait to be invisible was not visible yet, but as test completes this line element becomes visible. So the solution was to add one more line at the beginning:

wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("jquery-msg-bg")));
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.id("jquery-msg-bg")));
wait.until(ExpectedConditions.visibilityOfElementLocated(By.name("declarationBusinessParticularsActivity.isMain")));

Upvotes: 5

Related Questions