Attendez qu'une autre fenêtre s'ouvre dans Selenium

problème

Je travaille sur une page Web avec Selenium. Cliquer sur un lien ouvre une autre fenêtre et je souhaite transférer le contrôle vers cette fenêtre.

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])

Cependant, ce code peut échouer avec ʻIndexError sans driver.window_handles [1] ʻexisting: sob:

Solution

En utilisant WebDriverWait.until () jusqu'à ce qu'une autre fenêtre s'ouvre Tu peux attendre.

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])

Cela garantit que le contrôle peut être transféré vers une autre fenêtre: blush:

Recommended Posts

Attendez qu'une autre fenêtre s'ouvre dans Selenium
Recherche d'un moyen unifié d'attendre et d'obtenir les changements d'état de Selenium pour les éléments Python
Sélénium et python pour ouvrir Google
sélénium: attendre l'élément avec ET / OU
Attendez qu'Aurora Serverless se réveille
Je veux créer une fenêtre avec Python
Connectez-vous à Yahoo Business avec Selenium Python
Essayez de calculer RPN avec Python (pour les débutants)
Impossible d'ouvrir le fichier pour écrire à propos de sudo
[Pour les débutants] Introduction à la vectorisation dans l'apprentissage automatique
Un outil pour créer des images de masque pour ETC en Python
[Pour les débutants] Comment utiliser la commande say avec python!
Entrée clé qui n'attend pas l'entrée clé en Python
Comment exécuter python dans l'espace virtuel (pour MacOS)
Application Mac pour ouvrir Jupyter Notebook (* .ipynb) en double-cliquant
J'étais accro au grattage avec Selenium (+ Python) en 2020
Comment télécharger des fichiers depuis Selenium of Python dans Chrome
Pratique pour utiliser les sous-graphiques matplotlib dans l'instruction for
Lorsque vous voulez plt.save dans l'instruction for