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