Esta inquietud se puede abordar de diferentes maneras, pero nosotros te compartimos la resolución más completa en nuestra opinión.
Solución:
Esto realmente funcionó para mí en 3.x:
driver.switch_to.window(driver.window_handles[1])
se agregan identificadores de ventana, por lo que esto selecciona la segunda pestaña en la lista
para continuar con la primera pestaña:
driver.switch_to.window(driver.window_handles[0])
Algunos enfoques posibles:
1 – Cambia entre las pestañas usando las teclas send_keys (CONTROL + TAB)
self.driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.TAB)
2 – Cambiar entre las pestañas usando ActionsChains (CONTROL+TAB)
actions = ActionChains(self.driver)
actions.key_down(Keys.CONTROL).key_down(Keys.TAB).key_up(Keys.TAB).key_up(Keys.CONTROL).perform()
3 – Otro enfoque podría hacer uso de los métodos de Selenium para verificar la ventana actual y pasar a otra:
Puedes usar
driver.window_handles
para encontrar una lista de identificadores de ventana y luego intente cambiar usando los siguientes métodos.
- driver.switch_to.active_element
- driver.switch_to.default_content
- driver.switch_to.window
Por ejemplo, para cambiar a la última pestaña abierta, puede hacer lo siguiente:
driver.switch_to.window(driver.window_handles[-1])
La respuesta aceptada no funcionó para mí.
Para abrir una nueva pestaña y hacer que Selenium cambie, usé:
driver.execute_script('''window.open("https://some.site/", "_blank");''')
sleep(1) # you can also try without it, just playing safe
driver.switch_to.window(driver.window_handles[-1]) # last opened tab handle
# driver.switch_to_window(driver.window_handles[-1]) # for older versions
si necesita volver a la pestaña principal, use:
driver.switch_to.window(driver.window_handles[0])
Resumen:
los window_handles
contiene una lista de los handles
de abierto tabs
úsalo como argumento en switch_to.window()
para cambiar entre pestañas.
Si entiendes que te ha sido útil nuestro post, sería de mucha ayuda si lo compartes con otros desarrolladores de este modo nos ayudas a extender nuestro contenido.