Selenium es la herramienta de Python más utilizada para pruebas y automatización para la web. Pero el problema ocurre cuando se trata de un escenario en el que los usuarios necesitan cambiar entre ventanas en Chrome. Por lo tanto, el selenium también obtuvo esa cobertura. Selenium utiliza estos métodos para esta tarea:
- window_handles se usa para trabajar con diferentes ventanas. Almacena los identificadores de ventana que se utilizan para cambiar.
- El método switch_to.window se usa para cambiar entre las ventanas con la ayuda de los identificadores de window_handles.
Pasos a cubrir:
- Configurar la URL e importar selenium
Python3
# import modules from selenium import webdriver import time # provide the path for chromedriver PATH = "C:/chromedriver.exe" # pass on the path to driver for working driver = webdriver.Chrome(PATH)
- Obtenga la URL del sitio web y haga clic en el enlace que se abre en una nueva ventana. Y cambiar entre ellos.
Python3
# Open login yahoo for sample url driver.get("https://login.yahoo.com/") # print title of yahoo window print("First window title = " + driver.title) # Clicks on privacy and it opens in new window driver.find_element_by_class_name("privacy").click() # switch window in 7 seconds time.sleep(7) # window_handles[1] is a second window driver.switch_to.window(driver.window_handles[1]) # prints the title of the second window print("Second window title = " + driver.title) # window_handles[0] is a first window driver.switch_to.window(driver.window_handles[0]) # prints windows id print(driver.window_handles)
Producción:
First window title = Yahoo Second window title = Welcome to the Verizon Media Privacy Policy | Verizon Media Policies ['CDwindow-F25D48D2602CBD780FB2BE8B34A3BEAC', 'CDwindow-A80A74DFF7CCD47F628AF860F3D46913']
Explicación:
El programa primero abrirá yahoo, luego abrirá la privacidad en yahoo en una nueva pestaña y luego volverá a cambiar a la pestaña de yahoo en 7 segundos, es decir, la primera ventana.
Caso opcional: si el usuario necesita abrir una nueva ventana y cambiar entre ellas.
- ejecutar_script es un método para pasar JavaScript como una string
- window.open() es un método para abrir la nueva ventana
Ejemplo 1:
Python3
# Open the new window driver.execute_script("window.open()") # window switch to new 3rd window driver.switch_to.window(driver.window_handles[2]) # get the new url in window 3 driver.get("https://www.geeksforgeeks.org/") # print the 3rd window title print(driver.title)
Producción:
GeeksforGeeks | A computer science portal for geeks
Explicación:
El programa permite abrir una nueva ventana con el método get() que tiene un parámetro como geeks for geeks URL e imprime el título de esa ventana.
Ejemplo 2:
Python3
# import modules from selenium import webdriver import time # assign path and driver PATH = "C:/chromedriver.exe" driver = webdriver.Chrome(PATH) # assign URL driver.get("https://login.yahoo.com/") print("First window title = " + driver.title) # switch to new window driver.find_element_by_class_name("privacy").click() print(driver.window_handles) driver.switch_to.window(driver.window_handles[1]) print("Second window title = " + driver.title) # switch to new window driver.execute_script("window.open()") print(driver.window_handles) driver.switch_to.window(driver.window_handles[2]) driver.get("https://www.geeksforgeeks.org/") print(driver.title)
Producción:
Título de la primera ventana = Yahoo
[‘CDwindow-3D8EFAF1BC9A66342F78731C64C802BD’, ‘CDwindow-B6ADD61824FA954B7E52A9844D304C34’]
Título de la segunda ventana = Bienvenido a la Política de privacidad de Verizon Media | Políticas de medios de Verizon
[‘CDwindow-3D8EFAF1BC9A66342F78731C64C802BD’, ‘CDwindow-B6ADD61824FA954B7E52A9844D304C34’, ‘CDwindow-3176B13D77F832E4DEC6869134FECD1D’]
FrikisparaGeeks | Un portal de informática para geeks
Explicación:
El script hace lo siguiente:
- Abre yahoo e imprime el título.
- Abre la privacidad de yahoo e imprime el título.
- Abre la nueva ventana y abre geeks para geeks e imprime el título.
Publicación traducida automáticamente
Artículo escrito por shiv_ka_ansh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA