WebDriver - espera el elemento usando Java

Estoy buscando algo similar awaitForElementPresent para comprobar si el elemento se muestra antes de hacer clic en él. Pensé que esto se puede hacer porimplicitWait, así que utilicé lo siguiente:

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

y luego haga clic por

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

Desafortunadamente, a veces espera el elemento y otras no. Busqué un rato y encontré esta solución:

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();

Y esperó bien, pero antes de que se agotara el tiempo, tuvo que esperar 10 veces 5, 50 segundos. Demasiado. Así que puse implícitamente la espera en 1 seg y todo parecía estar bien hasta ahora. Porque ahora algunas cosas esperan 10 segundos antes de que se agote el tiempo de espera, pero otras cosas expiran después de 1s.

¿Cómo cubre el elemento de espera presente / visible en su código? Cualquier indicio es apreciable.

Respuestas a la pregunta(4)

Su respuesta a la pregunta