Best Practices für das Warten in Selenium-WebDriver
Bei der Arbeit mit Selenium-WebDriver ist es oft notwendig, Wartezeiten zu implementieren, um sicherzustellen, dass Elemente vorhanden sind geladen werden, bevor Aktionen an ihnen ausgeführt werden. Zwei gängige Ansätze sind implizite und explizite Wartezeiten.
Implizite Wartezeiten:
Implizite Wartezeiten werden mithilfe von drivers.manage().timeouts().implicitlyWait(2, TimeUnit) festgelegt .SEKUNDEN);. Sie wirken sich global auf alle Treibervorgänge aus und bieten eine Zeitüberschreitung für alle Elementsuchversuche. Dieser Ansatz kann für Szenarien praktisch sein, in denen die Ladezeit der Benutzeroberfläche unvorhersehbar ist, kann aber insgesamt zu längeren Wartezeiten führen.
Explizite Wartezeiten:
Explizite Wartezeiten, z B. WebDriverWait.until(condition-that-finds-the-element);, werden für bestimmte Elemente oder Bedingungen ausgeführt. Sie bieten einen gezielteren Ansatz und ermöglichen präzise Wartezeiten und die Möglichkeit, Bedingungen wie das Vorhandensein oder die Sichtbarkeit von Elementen festzulegen.
Vergleich:
Feature | Implicit Waits | Explicit Waits |
---|---|---|
Global Scope | Yes | No |
Customization | Limited | Highly customizable |
Precision | Less precise | Precise |
Empfohlener Ansatz:
In den meisten Situationen wird empfohlen, explizite Wartezeiten (insbesondere fluentWait) anstelle von impliziten Wartezeiten zu verwenden. FluentWait ist eine Art explizites Warten, das erweiterte Anpassungsoptionen bietet, einschließlich flexibler Zeitüberschreitungen, Abfrageintervalle und Ausnahmebehandlung.
Beispiel für FluentWait:
<code class="java">public WebElement fluentWait(final By locator) { Wait<WebDriver> wait = new FluentWait<WebDriver>(driver) .withTimeout(30, TimeUnit.SECONDS) .pollingEvery(5, TimeUnit.SECONDS) .ignoring(NoSuchElementException.class); WebElement foo = wait.until(new Function<WebDriver, WebElement>() { public WebElement apply(WebDriver driver) { return driver.findElement(locator); } }); return foo; }</code>
Von Mit fluentWait können Sie spezifische Zeitüberschreitungen für die Elementsuche festlegen und unnötige globale Wartezeiten vermeiden, die Ihre Tests verlangsamen können.
Das obige ist der detaillierte Inhalt vonImplizite vs. explizite Wartezeiten in Selenium-WebDriver: Was sollten Sie wählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!