Este dilema se puede tratar de diferentes formas, pero en este caso te enseñamos la solución más completa para nosotros.
Solución:
Usar findElements
en vez de findElement
.
findElements
devolverá una lista vacía si no se encuentran elementos coincidentes en lugar de una excepción.
Para verificar que un elemento está presente, puede probar esto
Boolean isPresent = driver.findElements(By.yourLocator).size() > 0
esto regresará true si se encuentra al menos un elemento y false si no existe.
La documentación oficial recomienda este método:
findElement no debe usarse para buscar elementos no presentes, use findElements (By) y afirme una respuesta de longitud cero en su lugar.
¿Qué pasa con un método privado que simplemente busca el elemento y determina si está presente de esta manera:
private boolean existsElement(String id)
try
driver.findElement(By.id(id));
catch (NoSuchElementException e)
return false;
return true;
Esto sería bastante fácil y hace el trabajo.
Editar: incluso podrías ir más allá y tomar un By elementLocator
como parámetro, eliminando problemas si desea encontrar el elemento por algo que no sea id.
Descubrí que esto funciona para Java:
WebDriverWait waiter = new WebDriverWait(driver, 5000);
waiter.until( ExpectedConditions.presenceOfElementLocated(by) );
driver.FindElement(by);
Comentarios y puntuaciones
Si haces scroll puedes encontrar las notas de otros usuarios, tú igualmente eres capaz insertar el tuyo si te apetece.