WebDriver - attendre que l'élément à l'aide de Java

Je suis à la recherche de quelque chose de semblable à waitForElementPresent pour vérifier si l'élément est affiché avant que je clique dessus. Je pensais que cela peut être fait par implicitWait, j'ai donc utilisé le suivant:

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

puis cliquez sur par

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

Malheureusement, parfois, il attend l'élément et parfois pas. J'ai cherché un peu et trouvé cette solution :

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

Et il a attendu tout droit, mais avant d'expirer, il aura fallu attendre 10 fois sur 5, 50 secondes. Un peu beaucoup. J'ai donc mis du implicitement attendre à 1sec et tout semblait aller bien jusqu'à maintenant. Parce que maintenant certaines choses, attendre 10s avant le délai d'expiration, mais quelques autres choses de temps après 1s.

Comment couvrez-vous de l'attente pour la présence d'un élément visible dans votre code? Tout soupçon est appréciable.

InformationsquelleAutor tom | 2012-07-31