Schnell und präzise: Auswahl und richtige Anwendung von Wartezeiten in Selenium

Vergleich der Vor- und Nachteile der Warteoptionen 'Time.sleep()', 'Implicit Wait' und 'Explicit Wait' in Selenium. Welche sollte man verwenden?

4
Schnell und präzise: Auswahl und richtige Anwendung von Wartezeiten in Selenium

0. Überblick

Wenn Sie die Browserinteraktion mit Selenium automatisieren, stehen Sie häufig vor Szenarien, in denen Sie auf die Verfügbarkeit von Elementen warten müssen oder bis bestimmte Bedingungen erfüllt sind.

Die Warteoptionen in Selenium sind 'Time.sleep()' 'Implicit Wait' 'Explicitly Wait'.

Aber welche sollte man verwenden?

Wir werden die Unterschiede der drei Optionen im Detail anhand ihrer Vor- und Nachteile vergleichen.

1. Time.sleep()

Dies ist die grundlegende Methode in Python, um feste Verzögerungen im Skript einzuführen. Wenn time.sleep(Sekunden) aufgerufen wird, wird die Ausführung des gesamten Skripts für die angegebene Zeit in Sekunden angehalten.

1.1. Vorteile von Time.sleep()

  • Einfach zu verwenden und erfordert keine Konfiguration.

  • Sie können genau wissen, wie lange das Skript wartet.

1.2. Nachteile von Time.sleep()

  • In den meisten Fällen ist die feste Verzögerung länger als nötig, was zu längeren Testlaufzeiten führt.

  • Wenn die wartende Aufgabe innerhalb einer längeren Zeit als der Schlafzeit abgeschlossen wird, kann der Test fehlschlagen.

2. Implicit Wait

from selenium import webdriver

driver = webdriver.Chrome()
driver.implicitly_wait(10)  # WebDriver will wait for up to 10 seconds for an element to appear
driver.get('<https://example.com>')
element = driver.find_element_by_id('some-id')

요소가 웹 페이지에 나타나지 않는 경우 "해당 요소 예외 없음"을 발생시키기 전에 지정된 시간 동안 기다리도록 Selenium WebDriver에 지시합니다.

2.1. Vorteile von Implicit Wait:

  • Der WebDriver wartet nicht die gesamte Zeit, wenn das Element früher verfügbar wird.

  • Es ist schneller als die Verwendung von time.sleep().

  • Es gilt für die gesamte WebDriver-Sitzung.

2.2. Nachteile von Implicit Wait

  • Da man nicht sicher sein kann, wie lange der WebDriver tatsächlich gewartet hat, kann das Debuggen erschwert werden.

  • Wenn Implicit Wait und Explicitly Wait kombiniert werden, können unvorhersehbare Wartezeiten auftreten.

3. Explicitly Wait

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get('<https://example.com>')

# Waiting for up to 10 seconds until an element with the specified ID becomes visible
element = WebDriverWait(driver, 10).until(
    EC.visibility_of_element_located((By.ID, 'some-id'))
)

3.1. Vorteile von Explicitly Wait

  • Sie können nicht nur die Verfügbarkeit von Elementen, sondern auch verschiedene Bedingungen festlegen. Zum Beispiel können Sie warten, bis ein Element klickbar ist, angezeigt wird oder bestimmter Text erscheint.

  • Da es keine Einstellung für die gesamte WebDriver-Sitzung ist, können Sie verschiedene Wartezeiten für verschiedene Elemente je nach Verhalten und Anforderungen definieren.

  • Es verlängert die Testdauer nicht unnötig. Das Skript wird fortgesetzt, sobald die Bedingung erfüllt ist.

  • Es bietet bessere Fehlermeldungen, um besser zu verstehen, was falsch gelaufen ist, wenn der Test fehlschlägt.

3.2. Nachteile von Explicitly Wait

  • Im Gegensatz zum Implicit Wait müssen Sie die Wartebedingungen jedes Mal festlegen, wenn sie benötigt werden.

  • Es ist nur geeignet für die Verarbeitung von Web-Elementen, die mit AJAX oder verschiedenen Zeitintervallen geladen werden.

4. Fazit: Wählen Sie die passende Warteoption je nach Situation.

Implicit Wait ist ähnlich wie ein großes Netz, das sicherstellt, dass alle Elemente innerhalb des festgelegten Zeitraums verfügbar sind, während Explicitly Wait ähnlich wie eine Angelrute ist, die auf bestimmte Elemente unter bestimmten Bedingungen abzielt.

Es wird empfohlen, Implicit Wait und Explicitly Wait nicht zu mischen. Wenn sie willkürlich gemischt werden, steigt die Wahrscheinlichkeit unvorhersehbarer Verhaltensweisen.

In komplexen Webanwendungen wird häufig Explicitly Wait bevorzugt, da es eine detailliertere Steuerung ermöglicht.

Bitte nutzen Sie diese Informationen sinnvoll und effektiv.

Lesen Sie auch:

Daten sammeln, jetzt automatisieren

Starten Sie in 5 Minuten ohne Codierung · Erfahrung mit dem Crawlen von über 5.000 Websites

Jetzt kostenlos starten →

Comments

Add Comment

Your email won't be published and will only be used for reply notifications.

Weiterlesen

Get notified of new posts

We'll email you when 해시스크래퍼 기술 블로그 publishes new content.

Your email will only be used for new post notifications.