Heim > Backend-Entwicklung > Python-Tutorial > Warum findet mein Selenium WebDriverWait keine Elemente in einem neu geöffneten Fenster?

Warum findet mein Selenium WebDriverWait keine Elemente in einem neu geöffneten Fenster?

Barbara Streisand
Freigeben: 2024-12-21 19:30:11
Original
142 Leute haben es durchsucht

Why is My Selenium WebDriverWait Failing to Find Elements in a Newly Opened Window?

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)))
Nach dem Login kopieren

mit:

myElem = WebDriverWait(self.browser, delay).until(EC.element_to_be_clickable((By.XPATH , xpath)))
Nach dem Login kopieren

Die WebDriverWait-Methoden verstehen:

Im Folgenden finden Sie weitere Erläuterungen zu den drei genannten Methoden:

  1. presence_of_element_located: Überprüft die Anwesenheit eines Elements im DOM der Webseite, unabhängig von seiner Sichtbarkeit oder Interagierbarkeit.
  2. visibility_of_element_located: Stellt sicher, dass ein Element vorhanden und sichtbar ist und Abmessungen größer als hat 0.
  3. element_to_be_clickable: Garantiert, dass ein Element sichtbar, aktiviert und interagierbar ist, sodass es für ein erfolgreiches Klicken verfügbar ist.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage