Maison >développement back-end >Tutoriel Python >Comment basculer entre plusieurs fenêtres de navigateur dans Selenium avec Python ?

Comment basculer entre plusieurs fenêtres de navigateur dans Selenium avec Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-08 00:53:02529parcourir

How to Switch Between Multiple Browser Windows in Selenium with Python?

Comment gérer plusieurs fenêtres de navigateur dans Selenium avec Python

Lorsque vous travaillez avec l'automatisation Selenium, vous pouvez rencontrer des situations où plusieurs fenêtres de navigateur apparaissent. Comme l'accent reste mis sur la première fenêtre ouverte, naviguer ou effectuer des actions dans les fenêtres suivantes devient difficile. Pour résoudre ce problème, une méthode clé est driver.switch_to.window().

Localisation du nom de la fenêtre

Contrairement à l'idée selon laquelle driver.switch_to.window( ) nécessite un nom de fenêtre, il fonctionne plutôt sur les handles de fenêtre. La détermination du handle de fenêtre peut être obtenue à l'aide de la propriété window_handles.

Comment passer à une nouvelle fenêtre

Pour basculer le focus sur la fenêtre nouvellement ouverte, suivez ces étapes :

  1. Avant de cliquer sur le lien qui déclenche la nouvelle fenêtre, enregistrez le handle de la fenêtre actuelle en utilisant :
window_before = driver.window_handles[0]
  1. Après avoir cliqué sur le lien, récupérez le handle du nouvelle fenêtre :
window_after = driver.window_handles[1]
  1. Utilisez la méthode switch_to.window(window_handle) pour diriger le focus :
driver.switch_to.window(window_after)

Exemple

Considérez le code suivant qui navigue entre plusieurs fenêtres :

import unittest
from selenium import webdriver

class WindowHandling(unittest.TestCase):

    def setUp(self):
        self.driver = webdriver.Firefox()

    def test_window_switch(self):
        driver = self.driver
        driver.get("http://www.cdot.in")
        window_before = driver.window_handles[0]
        driver.find_element_by_xpath("//a[@href='http://www.cdot.in/home.htm']").click()
        window_after = driver.window_handles[1]
        driver.switch_to.window(window_after)
        driver.find_element_by_link_text("ATM").click()
        driver.switch_to.window(window_before)

    def tearDown(self):
        self.driver.close()

if __name__ == "__main__":
    unittest.main()

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn