Saltar al contenido

En Selenium Webdriver, ExpectedCondition.elementToBeClickable no espera hasta que desaparece la barra de progreso

Solución:

ExpectedConditions.elementToBeClickable devuelve el elemento si la condición será verdadera significa que devuelve el elemento si el elemento aparece en la página y se puede hacer clic, no es necesario encontrar este elemento nuevamente, simplemente omita la última línea como se muestra a continuación: –

//Click on Create Account btn:
driver.findElement(By.id("createAccount")).click();

//Wait till "Cancel" button is showing up. At cases, it may take some time.
WebElement el = myWaitVar.until(ExpectedConditions.elementToBeClickable(By.id("cancelRegister")));
el.click();

Editado1 : – Si no puede hacer clic debido a otro elemento, reciba un clic, puede usar JavascriptExecutor para realizar clic de la siguiente manera:

//Click on Create Account btn:
driver.findElement(By.id("createAccount")).click();

//Wait till "Cancel" button is showing up. At cases, it may take some time.
WebElement el = myWaitVar.until(ExpectedConditions.elementToBeClickable(By.id("cancelRegister")));
((JavascriptExecutor)driver).executeScript("arguments[0].click()", el); 

Editado2 : – Parece de la excepción proporcionada, la barra de progreso todavía se superpone en cancelRegister botón. Entonces, la mejor manera es esperar la invisibilidad de la barra de progreso primero y luego esperar la visibilidad de cancelRegister botón de la siguiente manera:

//Click on Create Account btn:
driver.findElement(By.id("createAccount")).click();

//Now wait for invisibility of progress bar first 
myWaitVar.until(ExpectedConditions.invisibilityOfElementLocated(By.id("page_loader")));

//Now wait till "Cancel" button is showing up. At cases, it may take some time.
WebElement el = myWaitVar.until(ExpectedConditions.elementToBeClickable(By.id("cancelRegister")));
el.click();

Espero que funcione…:)

Puede esperar allí para asegurarse de que la barra de progreso desaparezca.

Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
   .withTimeout(30, SECONDS)
   .pollingEvery(5, SECONDS)
   .ignoring(NoSuchElementException.class);

WebElement foo = wait.until(new Function<WebDriver, WebElement>() {
 public WebElement apply(WebDriver driver) {
   return (driver.findElements(By.id("progressbar")).size() == 0);
 }
});
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *