Implizites Warten mit Selen in Python
Das Paket selenium
dient der Automatisierung und dem Testen mit Python-Skripten. Wir können damit auf einzelne Elemente der Webseite zugreifen und mit ihnen arbeiten.
In diesem Paket sind viele Methoden verfügbar, um die Elemente basierend auf verschiedenen Attributen abzurufen. Beim Laden einer Seite werden einige Elemente dynamisch abgerufen.
Diese Elemente können im Vergleich zu den anderen mit einer anderen Geschwindigkeit geladen werden.
Implizites Warten mit Selen in Python
Wenn wir versuchen, ein Element zu erhalten, das nicht verfügbar ist, wird eine ElementNotVisibleException
ausgelöst. Dies geschieht, weil das Element in der Quelle definiert, aber noch nicht im DOM sichtbar ist.
Dafür können wir implizite Wartezeiten verwenden. Mit impliziten Wartezeiten unter Verwendung von selenium
können wir das webdriver
-Objekt anweisen, die erforderliche Zeit zu warten, bevor eine Ausnahme ausgelöst wird.
Die Ausnahme wird ausgelöst, wenn das erforderliche Element nicht innerhalb dieses Zeitraums gefunden wird.
Wir verwenden die Funktion implicitly_wait()
, um die implizite Wartezeit einzustellen. Diese Funktion wird mit webdriver
verwendet, um die implizite Wartezeit festzulegen.
Die Zeit wird in Sekunden angegeben.
Siehe Code unten.
from selenium import webdriver
driver = webdriver.Chrome(r"C:/path/to/chromedriver.exe")
driver.implicitly_wait(10)
driver.get("https://www.sample.org/")
e = driver.find_element_by_id("some_form")
Im obigen Beispiel leiten wir mit dem Objekt webdriver
auf eine Webseite um und versuchen, mit der Funktion find_element_by_id()
ein Element abzurufen. Diese Funktion findet das Element, dessen Attribut id
mit dem angegebenen Wert übereinstimmt.
Da es sich um ein dynamisches Element handelt, geben wir mit der Methode implicitly_wait()
eine implizite Zeit von zehn Sekunden an, um sicherzustellen, dass das Element Zeit zum Laden bekommt.
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn