[PYTHON] Warten Sie, bis sich in Selen ein weiteres Fenster öffnet

Problem

Ich arbeite mit Selen an einer Webseite. Durch Klicken auf einen Link wird ein weiteres Fenster geöffnet, und ich möchte die Kontrolle auf dieses Fenster übertragen.

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('http://www.tagindex.com/html_tag/link/a_target.html')
driver.find_element_by_css_selector('[href="target_example.html"]').click()

driver.switch_to.window(driver.window_handles[1])

Dieser Code kann jedoch mit IndexError ohne driver.window_handles [1] existierend fehlschlagen: sob:

Lösung

Verwenden Sie WebDriverWait.until (), bis ein anderes Fenster geöffnet wird Du kannst warten.

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait

driver = webdriver.Chrome()
driver.get('http://www.tagindex.com/html_tag/link/a_target.html')
driver.find_element_by_css_selector('[href="target_example.html"]').click()

WebDriverWait(driver, 3).until(lambda d: len(d.window_handles) > 1)
driver.switch_to.window(driver.window_handles[1])

Dadurch wird sichergestellt, dass die Steuerung auf ein anderes Fenster übertragen werden kann: erröten:

Recommended Posts

Warten Sie, bis sich in Selen ein weiteres Fenster öffnet
Ich suche einen einheitlichen Weg, um auf Statusänderungen von Selenium für Python-Elemente zu warten
Selen und Python zum Öffnen von Google
Selen: Warten Sie mit UND / ODER auf das Element
Warten Sie, bis Aurora Serverless aufwacht
Ich möchte mit Python ein Fenster erstellen
Melden Sie sich mit Selenium Python bei Yahoo Business an
Versuchen Sie, RPN mit Python zu berechnen (für Anfänger)
Datei zum Schreiben von About sudo kann nicht geöffnet werden
[Für Anfänger] Einführung in die Vektorisierung beim maschinellen Lernen
Ein Tool zum Erstellen von Maskenbildern für ETC in Python
[Für Anfänger] Wie man den Befehl say mit Python benutzt!
Schlüsseleingabe, die nicht auf Schlüsseleingabe in Python wartet
So führen Sie Python im virtuellen Raum aus (für MacOS)
Mac-Anwendung zum Öffnen von Jupyter Notebook (* .ipynb) durch Doppelklick
Ich war süchtig danach, 2020 mit Selen (+ Python) zu kratzen
So laden Sie Dateien von Selenium of Python in Chrome herunter
Praktisch, um Matplotlib-Unterzeichnungen in for-Anweisungen zu verwenden
Wenn Sie in der for-Anweisung plt.save möchten