Operaciones de navegador de Selenium
Selenium no solo puede manipular elementos de la página web, sino también controlar el comportamiento del propio navegador, como gestionar ventanas, manejar ventanas emergentes, operar Cookies, ejecutar JavaScript, etc.
A continuación se muestran las operaciones de navegador más comunes en Selenium y sus descripciones:
| Tipo de operación | Método | Descripción |
|---|---|---|
| Abrir nueva ventana | execute_script("window.open('URL');") | Utilizar JavaScript para abrir una nueva ventana. |
| Cambiar de ventana | switch_to.window(window_handle) | Cambiar al identificador de ventana especificado. |
| Cerrar ventana | close() | Cerrar la ventana actual. |
| Maximizar ventana | maximize_window() | Maximizar la ventana del navegador. |
| Establecer el tamaño de la ventana | set_window_size(width, height) | Establecer el tamaño de la ventana del navegador. |
| Modo de pantalla completa | fullscreen_window() | Establecer la ventana del navegador en modo de pantalla completa. |
| Abrir página web | get(url) | Abrir la URL especificada. |
| Avanzar y retroceder | back()yforward() | Volver a la página anterior o avanzar a la página siguiente. |
| Recargar página | refresh() | Recargar la página actual. |
| Manejar la ventana emergente Alert | switch_to.alertCombinado conaccept()odismiss() | Manejar la ventana emergente Alert, hacer clic en Aceptar o Cancelar. |
| Manejar la ventana emergente Confirm | switch_to.alertCombinado conaccept()odismiss() | Manejar la ventana emergente Confirm, hacer clic en Aceptar o Cancelar. |
| Manejar la ventana emergente Prompt | switch_to.alertCombinado consend_keys()yaccept()odismiss() | Manejar la ventana emergente Prompt, ingresar texto y hacer clic en Aceptar o Cancelar. |
| Añadir Cookie | add_cookie(cookie_dict) | Añadir la Cookie especificada. |
| Obtener Cookie | get_cookie(name)oget_cookies() | Obtener la Cookie especificada o todas las Cookies. |
| Eliminar Cookie | delete_cookie(name)odelete_all_cookies() | Eliminar la Cookie especificada o todas las Cookies. |
| Ejecutar JavaScript | execute_script(script) | Ejecutar el código JavaScript especificado. |
| Obtener el valor de retorno de JavaScript | execute_script("return ...") | Ejecutar JavaScript y devolver el resultado. |
| Cambiar a iframe | switch_to.frame(iframe_element) | Cambiar al iframe especificado. |
| Volver a la página principal | switch_to.default_content() | Volver a la página principal. |
1. Manejo de ventanas emergentes del navegador (alert, confirm, prompt)
En las aplicaciones web, las ventanas emergentes (como alert, confirm, prompt) son una forma común de interacción con el usuario. Selenium proporciona laAlertclase para manejar estas ventanas emergentes.
1.1 Manejo de la ventana emergente alert
alertLa ventana emergente se utiliza normalmente para mostrar un mensaje, y el usuario solo puede hacer clic en el botón 'Aceptar' para cerrarla.
Ejemplo
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.alert import Alert
# Configurar la ruta correcta del driver
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# Abrir la página web
driver.get("https://example.com")
# Disparar la ventana emergente alert
driver.execute_script("alert('Esta es una ventana emergente de alert');")
# Cambiar a la ventana emergente alert
alert = Alert(driver)
# Obtener el texto de la ventana emergente
print(alert.text)
# Hacer clic en el botón 'Aceptar' para cerrar la ventana emergente
alert.accept()
# Cerrar el navegador
driver.quit()
1.2 Manejo de la ventana emergente confirm
confirmLa ventana emergente se utiliza normalmente para confirmar una acción; el usuario puede elegir 'Aceptar' o 'Cancelar'.
Ejemplo
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.alert import Alert
# Configurar la ruta correcta del driver
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# Abrir la página web
driver.get("https://example.com")
# Disparar la ventana emergente confirm
driver.execute_script("confirm('Esta es una ventana emergente de confirm');")
# Cambiar a la ventana emergente confirm
alert = Alert(driver)
# Obtener el texto de la ventana emergente
print(alert.text)
# Hacer clic en el botón 'Aceptar'
alert.accept()
# O hacer clic en el botón 'Cancelar'
# alert.dismiss()
# Cerrar el navegador
driver.quit()
1.3 Manejo de la ventana emergente prompt
promptLa ventana emergente se utiliza normalmente para obtener la entrada del usuario; el usuario puede ingresar texto y elegir 'Aceptar' o 'Cancelar'.
Ejemplo
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.alert import Alert
# Configurar la ruta correcta del driver
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# Iniciar el navegador
driver = webdriver.Chrome()
# Abrir la página web
driver.get("https://example.com")
# Disparar la ventana emergente prompt
driver.execute_script("prompt('Esta es una ventana emergente de prompt');")
# Cambiar a la ventana emergente prompt
alert = Alert(driver)
# Obtener el texto de la ventana emergente
print(alert.text)
# Ingresar texto
alert.send_keys("Entrada del usuario")
# Hacer clic en el botón 'Aceptar'
alert.accept()
# O hacer clic en el botón 'Cancelar'
# alert.dismiss()
# Cerrar el navegador
driver.quit()
2. Cambiar entre ventanas y pestañas
En las aplicaciones web, los usuarios pueden abrir varias ventanas o pestañas. Selenium proporciona elswitch_to.window()método para cambiar entre ventanas o pestañas.
2.1 Cambiar de ventana
Ejemplo
from selenium.webdriver.chrome.service import Service as ChromeService
# Configurar la ruta correcta del driver
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# Abrir la primera ventana
driver.get("https://example.com")
# Abrir la segunda ventana
driver.execute_script("window.open('https://example.org');")
# Obtener todos los identificadores de ventana
window_handles = driver.window_handles
# Cambiar a la segunda ventana
driver.switch_to.window(window_handles[1])
# Operar en la segunda ventana
print(driver.title)
# Volver a la primera ventana
driver.switch_to.window(window_handles[0])
# Cerrar el navegador
driver.quit()
2.2 Cambiar de pestaña
Cambiar de pestaña es similar a cambiar de ventana, porque cada pestaña es un identificador de ventana independiente.
Ejemplo
from selenium.webdriver.chrome.service import Service as ChromeService
# Configurar la ruta correcta del driver
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# Abrir la primera pestaña
driver.get("https://example.com")
# Abrir la segunda pestaña
driver.execute_script("window.open('https://example.org');")
# Obtener todos los identificadores de pestaña
tab_handles = driver.window_handles
# Cambiar a la segunda pestaña
driver.switch_to.window(tab_handles[1])
# Operar en la segunda pestaña
print(driver.title)
# Volver a la primera pestaña
driver.switch_to.window(tab_handles[0])
# Cerrar el navegador
driver.quit()
3. Manejo de iframes
iframeEs otra página web incrustada en una página web. Selenium proporciona elswitch_to.frame()método para cambiar a iframe.
3.1 Cambiar a iframe
Ejemplo
from selenium.webdriver.chrome.service import Service as ChromeService
# Configurar la ruta correcta del driver
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# Abrir la página web
driver.get("https://example.com")
# Cambiar a iframe
iframe = driver.find_element_by_tag_name("iframe")
driver.switch_to.frame(iframe)
# Operar dentro del iframe
print(driver.page_source)
# Volver a la página principal
driver.switch_to.default_content()
# Cerrar el navegador
driver.quit()
3.2 Volver a la página principal
Después de completar las operaciones en el iframe, se puede utilizar elswitch_to.default_content()método para volver a la página principal.
Ejemplo
driver.switch_to.default_content()
4. Operaciones con Cookies del navegador
Selenium proporcionaget_cookies()、add_cookie()、delete_cookie()métodos como estos para operar las Cookies del navegador.
4.1 Obtener Cookies
Ejemplo
from selenium.webdriver.chrome.service import Service as ChromeService
# Configurar la ruta correcta del driver
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# Abrir la página web
driver.get("https://example.com")
# Obtener todas las Cookies
cookies = driver.get_cookies()
print(cookies)
# Cerrar el navegador
driver.quit()
4.2 Añadir Cookie
Ejemplo
from selenium.webdriver.chrome.service import Service as ChromeService
# Establecer la ruta correcta del controlador
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# Abrir la página web
driver.get("https://example.com")
# Agregar Cookie
driver.add_cookie({"name": "test", "value": "123"})
# Obtener todas las Cookies
cookies = driver.get_cookies()
print(cookies)
# Cerrar el navegador
driver.quit()
4.3 Eliminar Cookie
Ejemplo
from selenium.webdriver.chrome.service import Service as ChromeService
# Establecer la ruta correcta del controlador
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# Abrir la página web
driver.get("https://example.com")
# Agregar Cookie
driver.add_cookie({"name": "test", "value": "123"})
# Eliminar Cookie
driver.delete_cookie("test")
# Obtener todas las Cookies
cookies = driver.get_cookies()
print(cookies)
# Cerrar el navegador
driver.quit()
5. Ejecutar código JavaScript
Selenium proporcionaexecute_script()métodos para ejecutar código JavaScript.
5.1 Ejecutar código JavaScript
Ejemplo
from selenium.webdriver.chrome.service import Service as ChromeService
# Establecer la ruta correcta del controlador
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# Abrir la página web
driver.get("https://example.com")
# Ejecutar código JavaScript
driver.execute_script("alert('Este es un cuadro de diálogo de JavaScript');")
# Cerrar el navegador
driver.quit()
5.2 Obtener el valor de retorno de JavaScript
Ejemplo
from selenium.webdriver.chrome.service import Service as ChromeService
# Establecer la ruta correcta del controlador
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# Abrir la página web
driver.get("https://example.com")
# Ejecutar código JavaScript y obtener el valor de retorno
result = driver.execute_script("return document.title;")
print(result)
# Cerrar el navegador
driver.quit()
6. Ejemplo completo
A continuación se muestra un ejemplo completo que demuestra cómo utilizar varias operaciones del navegador:
Ejemplo
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
# Establecer la ruta correcta del controlador
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# Abrir la página web
driver.get("https://www.example.com")
# Maximizar la ventana
driver.maximize_window()
# Agregar Cookie
driver.add_cookie({"name": "test", "value": "123"})
# Obtener Cookie
cookie = driver.get_cookie("test")
print("Cookie:", cookie)
# Ejecutar JavaScript
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# Manejar el cuadro de diálogo Alert
driver.execute_script("alert('Hello, Selenium!');")
alert = driver.switch_to.alert
print(Texto del cuadro de diálogo:, alert.text)
alert.accept()
# Cambiar al iframe
iframe = driver.find_element(By.ID, "iframe-id")
driver.switch_to.frame(iframe)
# Volver a la página principal
driver.switch_to.default_content()
# Cerrar el navegador
driver.quit()