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.