Je cherche quelque chose de similaire à waitForElementPresent
pour vérifier si l'élément est affiché avant que je ne le clique. Je pensais que cela pouvait être fait par implicitWait
J'ai donc utilisé ce qui suit :
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
puis cliquez sur par
driver.findElement(By.id(prop.getProperty(vName))).click();
Malheureusement, il attend parfois l'élément et parfois non. J'ai cherché pendant un certain temps et j'ai 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 bien attendu, mais avant de se terminer, il a dû attendre 10 fois 5, 50 secondes. Un peu trop. J'ai donc réglé l'attente implicite à 1 seconde et tout semblait aller bien jusqu'à maintenant. Parce que maintenant, certaines choses attendent 10 secondes avant de se terminer, mais d'autres se terminent après 1 seconde.
Comment couvrir l'attente de l'élément present/visible dans votre code ? Toute indication est appréciable.