1. Introducción a la interacción con elementos de formularios
Los formularios en las páginas web son el lugar donde comienza la magia de la interacción. Imagina un formulario como un misterioso panel de control que permite al usuario interactuar con el sistema. En lugar de dar instrucciones a un robot aspirador, le proporcionamos información al sitio web.
Cómo ingresar texto en campos de texto
Para empezar, hablemos de cómo Selenium nos permite ingresar texto en los campos de texto. Esto se hace utilizando el método send_keys()
. Vamos a profundizar en ello paso a paso.
from selenium import webdriver
# Establecemos la ruta al web-driver, esta es la ruta a tu copia del webdriver
driver = webdriver.Chrome(executable_path='path/to/chromedriver')
# Abrimos la página web
driver.get('http://example.com/login')
# Encontramos el campo de entrada (por ejemplo, por id) e ingresamos texto
username_field = driver.find_element_by_id('username')
username_field.send_keys('mi_cuenta_super_genial')
password_field = driver.find_element_by_id('password')
password_field.send_keys('mi_súper_secreto_password')
En este sencillo ejemplo, abrimos una página y encontramos los elementos de entrada mediante su ID
. Después utilizamos el método send_keys()
para pasar texto a nuestros campos. ¡Sí, es tan simple como copiar y pegar, pero a otro nivel!
Un truco útil para rellenar campos de texto
Si te parece que un formulario está actuando extraño, es posible que ya haya texto en el campo de entrada. Antes de ingresar nuevo texto, limpia el anterior utilizando el método clear()
.
username_field.clear()
username_field.send_keys('nuevo_valor')
Este pequeño truco te salvará de dolores de cabeza innecesarios, ¡de verdad!
2. Hacer clic en botones
Ahora que nuestros campos de entrada están llenos, es hora de hacer clic en un botón, por ejemplo, para enviar el formulario. Con Selenium, esto se hace utilizando el método click()
. Es algo así como hacer clic en el botón de "Ver más memes", pero programáticamente.
# Encontramos el botón por su nombre y hacemos clic
login_button = driver.find_element_by_name('login')
login_button.click()
Y así, ¡nuestro script de Selenium se ha convertido en un maestro clicker, capaz de mucho más que solo pulsar "Hacer elección" en juegos!
Ejemplos de uso
Veamos un ejemplo que combina el uso de los métodos send_keys()
y click()
para llenar y enviar un formulario de registro.
# Abrimos la página de registro
driver.get('http://example.com/register')
# Rellenamos el formulario de registro
driver.find_element_by_id('first_name').send_keys('Iván')
driver.find_element_by_id('last_name').send_keys('Ivanov')
driver.find_element_by_id('email').send_keys('ivan@example.com')
driver.find_element_by_id('password').send_keys('súperSecreto123')
# Hacemos clic en el botón "Registrarse"
register_button = driver.find_element_by_css_selector('.register-button')
register_button.click()
Este sencillo ejemplo muestra cómo puedes automatizar el proceso de registro en un sitio. Esto puede ser útil para probar formularios de registro y simular actividad de usuarios.
3. Manejo de formularios complicados
A veces las páginas quieren jugar contigo. Haces clic en un botón y no pasa nada. O peor aún, la página lanza un error. Hablemos de algunos problemas comunes y cómo resolverlos.
Trabajar con elementos dinámicos
A veces los elementos en la página no se cargan de inmediato. En tales casos, tu script puede intentar interactuar con un elemento antes de que esté cargado. Es como empezar a hacer una tortilla antes de sacar los huevos del refrigerador.
Para evitar estos problemas, utiliza esperas. Selenium te permite esperar hasta que el elemento esté disponible:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# Esperamos hasta que el elemento sea clicable antes de hacer clic
register_button = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.CSS_SELECTOR, '.register-button'))
)
register_button.click()
Con WebDriverWait
puedes indicarle a Selenium que espere hasta que el elemento esté listo para actuar. Esto aumenta significativamente la confiabilidad de tu script.
Interacción con elementos invisibles
Algunos elementos en la página pueden ser invisibles, como botones o campos ocultos. Esto puede causar un error al intentar interactuar. En tal caso, puedes hacer visible el elemento utilizando JavaScript:
driver.execute_script("arguments[0].style.visibility='visible';", hidden_element)
hidden_element.click()
Este método te permite interactuar con elementos que están ocultos por alguna razón.
4. Aplicación práctica: automatización de formularios
Ahora que hemos aprendido cómo interactuar con formularios, veamos dónde se puede aplicar esto en la vida real.
Tu jefe decidió que todos deben completar informes diarios a través de un formulario web. Y tú, por supuesto, quieres automatizar un poco este tedioso proceso. Con Selenium, puedes crear un script que complete y envíe automáticamente el formulario con los datos de tu informe todos los días.
Ejemplo de automatización de informes
Imagina que tenemos un sitio con un formulario para un informe diario. El formulario incluye campos para tu nombre, departamento e informe de las tareas completadas. Hagamos esto automático:
driver.get('http://example.com/daily_report')
# Rellenamos el formulario de informe
driver.find_element_by_id('name').send_keys('Ana Petrova')
driver.find_element_by_id('department').send_keys('Tecnologías')
driver.find_element_by_id('report').send_keys('¡Hoy corregí todos los bugs!')
# Enviamos el formulario
submit_button = driver.find_element_by_id('submit')
submit_button.click()
Este script puede ahorrarte un tiempo valioso y eliminar la posibilidad de errores humanos. Ten en cuenta que para formularios complejos necesitas probar cada paso y considerar posibles errores.
¡Y así, hemos llegado al final de nuestra lección de hoy! Hoy aprendimos a escribir texto en campos y hacer clic en botones como los sistemas de encuestas en línea, dándole un poder increíble para automatizar las interacciones con las páginas web.
Sigue experimentando con Selenium y quédate con nosotros para aprender más sobre cómo convertir tu navegador en una verdadera máquina de automatización.
GO TO FULL VERSION