Aber es wirft ein NoSuchElementException – sieht aus wie presenceOfElement erwartet, dass das Element vorhanden ist, also ist dies fehlerhaft. Dies muss Brot und Butter für Selen sein und ich möchte das Rad nicht neu erfinden … könnte jemand eine Alternative vorschlagen, idealerweise ohne mein eigenes zu rollen Predicate?
Peter Mensik
Sie müssen anrufen ignoring mit Ausnahme zu ignorieren, während die WebDriver Ich werde warten.
FluentWait<WebDriver> fluentWait = new FluentWait<>(driver)
.withTimeout(30, TimeUnit.SECONDS)
.pollingEvery(200, TimeUnit.MILLISECONDS)
.ignoring(NoSuchElementException.class);
Siehe die Dokumentation von FließendWarte Für mehr Information. Beachten Sie jedoch, dass diese Bedingung bereits implementiert ist Erwartete Bedingungen also solltest du verwenden
WebElement element = (new WebDriverWait(driver, 10))
.until(ExpectedConditions.elementToBeClickable(By.id("someid")));
withTimeout(long, TimeUnit) has become withTimeout(Duration)
pollingEvery(long, TimeUnit) has become pollingEvery(Duration)
Der Code sieht also so aus:
FluentWait<WebDriver> fluentWait = new FluentWait<>(driver)
.withTimeout(Duration.ofSeconds(30)
.pollingEvery(Duration.ofMillis(200)
.ignoring(NoSuchElementException.class);
Grundlegende Anleitung zum Warten finden Sie hier Hier.
entweder sollte es sein oder es sollte <> sein, wenn Sie Java 8 verwenden würde Ihnen einen Kompilierungsfehler geben.
– Schek
5. Mai 17 um 3:44 Uhr
Es ist NICHT in ExpectedCondition implementiert … es ist in WebDriverWait. public WebDriverWait (WebDriver-Treiber, Uhr, Schläfer, langes timeOutInSeconds, langes sleepTimeOut) { super (Treiber, Uhr, Schläfer); this.withTimeout (timeOutInSeconds, TimeUnit.SECONDS); this.pollingEvery(sleepTimeOut, TimeUnit.MILLISECONDS); this.ignoring (NotFoundException.class); this.driver = Fahrer; }
– Sugat Mankar
17. Juni 17 um 3:57 Uhr
WebDriverWait wait = new WebDriverWait(driver,5)
wait.until(ExpectedConditions.visibilityOf(element));
Sie können dies verwenden, da einige Zeit vor dem Laden des gesamten Seitencodes ausgeführt wird und einen Fehler auslöst. Zeit ist in Sekunden
Lassen Sie mich Ihnen die Verwendung empfehlen Selenid Bücherei. Es ermöglicht das Schreiben von viel prägnanteren und lesbareren Tests. Es kann auf das Vorhandensein von Elementen mit viel kürzerer Syntax warten: