Firefox Selenium test freezes sometimes

1.6k views Asked by At

I am using Selenium 2.46 and Firefox 31. Whenever my test gets to a point that an web-element does not exist (or an exception is thrown) my test freezes, but it does not happen when I use Chrome. Just to let you know I have already used different versions of selenium-java and Firefox. Please find the code below:

List<WebElement> divs = driverChrome.findElements(By.tagName("div"));
int i = 0;
while (true) {
    boolean breakIt = true;
    System.out
            .println("Waiting for map to load completely, thanks for your patience.");
    for (WebElement weDiv : divs) { 
        try {       
            if (weDiv.getText().equals("Loading")) {
                Thread.sleep(2000);
                breakIt = false;
                break;
            }
        } catch (Exception e) {
        }
    }
    if (breakIt) {
        break;
    } 
    driverChrome.manage().timeouts()
            .implicitlyWait(5, TimeUnit.SECONDS);

    divs = driverChrome.findElements(By.tagName("div"));

}

I am using this code to wait till a map is completely loaded

1

There are 1 answers

0
Würgspaß On

The most probable reason for your test to freeze is the while(true) loop. If the text "Loading" does not show up, there still can be an (invisible) element with that text.

Anyway, I would never use a wait mechanism without timeout. And I would always try to use methods provided by the framework.

WebDriver offers explicit and implicit wait mechanisms. This one-liner could replace your whole listing (waits for up to 60s, polling every two seconds):

new WebDriverWait(driver, 60000L, 2000L).until(ExpectedConditions.invisibilityOfElementWithText(By.tagName("div"), "Loading"));

Hope it helps. If not, check out other methods of ExpectedConditions or implement your own ExpectedCondition.