In Selenium Webdriver wartet ExpectedCondition.elementToBeClickable nicht, bis der Fortschrittsbalken verschwindet

Diese Frage ähnelt der folgenden:
d.h. So warten Sie, bis der Fortschrittsbalken ausgeblendet wird.
Wie kann ich dynamisch warten, bis der Fortschrittsbalken vollständig in Selenium Webdriver geladen ist?

Mine ist ein bisschen anders. Wenn hier der Fortschrittsbalken angezeigt wird, sind alle Elemente deaktiviert. Ich verwende also explizite Wartezeiten, bekomme aber trotzdem die Ausnahme.

Szenario Nachdem Sie auf der Anmeldeseite alle Details eingegeben haben, klickt das Skript auf die Schaltfläche "Konto erstellen". In diesem Moment wird ein kreisförmiger Fortschrittsbalken angezeigt, der 1 oder 2 Sekunden lang angezeigt wird. Wenn das eingegebene Passwort ungültig ist (nur bei ungültigen Passwörtern), wird oben auf der Anmeldeseite eine Fehlermeldung angezeigt. Jetzt muss ich auf "Abbrechen" klicken und den Vorgang wiederholen.

Wenn der Fortschrittsbalken angezeigt wird, wird die gesamte Seite deaktiviert. Erst wenn der Fortschrittsbalken ausgeblendet ist, kann der Benutzer fortfahren.

Ich habe mit WebDriverWait den gleichen Code wie unten geschrieben:

WebDriverWait myWaitVar = new WebDriverWait(driver,20);

achdem Sie auf "Konto erstellen" geklickt haben, erscheint der Fortschrittsbalken und ich warte, bis die Schaltfläche "Abbrechen" angezeigt wird.

//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.
myWaitVar.until(ExpectedConditions.elementToBeClickable (By.id("cancelRegister")));

//click on Cancel btn:
driver.findElement(By.id("cancelRegister")).click();

Wenn ich den obigen Code ausführe, erhalte ich jedes MalNoSuchElementException in der letzten Zeile.

Ich habe es mit @ versucExpectedCondition.visibilityOfElement() aber hier bekomme ich auchNoSuchElementException.

Ich habe dann versucht, die Schlafmethode zu verwenden, anstatt zu warten.

Thread.sleep(3000);

Nun funktioniert das Skript einwandfrei.

Ich konnte nicht verstehen, warumWebDriverWait nicht gewartet, bis der Fortschrittsbalken verschwindet?

Es hat erfolgreich das @ geparelementToBeClickable() aber immer noch eine Ausnahme auslösen, wenn wir darauf klicken.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage