WebDriverWait funktioniert nicht wie vorhergesagt
Sie verwenden Selenium, um Daten von einer Webseite zu extrahieren. Die Seite enthält eine Schaltfläche „custom_cols“, die ein Fenster zur Spaltenauswahl öffnet. Das Laden dieses neuen Fensters dauert gelegentlich mehrere Sekunden (insbesondere etwa 5 Sekunden).
Um diese Verzögerung zu bewältigen, haben Sie WebDriverWait mit einer Verzögerung von 20 Sekunden eingesetzt. Seltsamerweise gelingt es gelegentlich nicht, Elemente im neuen Fenster zu finden, obwohl das Element auf dem Bildschirm angezeigt wird. Dieses Problem tritt ungefähr alle zehn Versuche auf.
Interessanterweise funktioniert die Verwendung von WebDriverWait an anderer Stelle in Ihrem Code wie erwartet und stellt sicher, dass Elemente sichtbar sind, bevor Sie darauf klicken.
Ihre Abfrage dreht sich darum, warum Elemente im neuen enthalten sind Fenster werden nicht als sichtbar erkannt, obwohl WebDriverWait verwendet wird, um ihre Sichtbarkeit zu erkennen.
Vorgeschlagen Lösung:
Das Problem ergibt sich aus der Tatsache, dass Sie die Methode „presence_of_element_located()“ von WebDriverWait anstelle der Methode „element_to_be_clickable()“ verwenden, wenn Sie versuchen, auf das Element zu klicken.
Um dieses Problem zu beheben , ersetzen Sie Folgendes Zeile:
myElem = WebDriverWait(self.browser, delay).until(EC.presence_of_element_located((By.XPATH , xpath)))
mit:
myElem = WebDriverWait(self.browser, delay).until(EC.element_to_be_clickable((By.XPATH , xpath)))
Die WebDriverWait-Methoden verstehen:
Im Folgenden finden Sie weitere Erläuterungen zu den drei genannten Methoden:
Das obige ist der detaillierte Inhalt vonWarum findet mein Selenium WebDriverWait keine Elemente in einem neu geöffneten Fenster?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!