¿Cómo cambiar a una nueva ventana en Selenium para Python?

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:

  1. Abre yahoo e imprime el título.
  2. Abre la privacidad de yahoo e imprime el título.
  3. 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *