WebDriver - aguarde o elemento usando Java

Estou procurando algo parecido comwaitForElementPresent para verificar se o elemento é exibido antes de clicar nele. Eu pensei que isso pode ser feito porimplicitWait, então usei o seguinte:

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

e depois clique por

driver.findElement(By.id(prop.getProperty(vName))).click();

Infelizmente, às vezes, aguarda o elemento e às vezes não. Eu olhei por um tempo e encontrei esta solução:

for (int second = 0;; second++) {
            Thread.sleep(sleepTime);
            if (second >= 10)
                fail("timeout : " + vName);
            try {
                if (driver.findElement(By.id(prop.getProperty(vName)))
                        .isDisplayed())
                    break;
            } catch (Exception e) {
                writeToExcel("data.xls", e.toString(),
                        parameters.currentTestRow, 46);
            }
        }
        driver.findElement(By.id(prop.getProperty(vName))).click();

E esperou tudo bem, mas antes de expirar tinha que esperar 10 vezes 5, 50 segundos. Um pouco demais. Então eu coloquei implicitamente a espera para 1sec e tudo parecia bem até agora. Porque agora algumas coisas esperam 10s antes do tempo limite, mas algumas outras coisas param após 1s.

Como você cobre a espera pelo elemento presente / visível no seu código? Qualquer sugestão é apreciável.

questionAnswers(4)

yourAnswerToTheQuestion