Automatizacion con Selenium y Python - Bot de registro automatico

Automatizacion con Selenium y Python - Bot de registro automatico

Aprende a crear un bot automatizado con Selenium y Python para registrar usuarios en plataformas web. Guia paso a paso con codigo completo.

En la era digital, la automatizacion de tareas repetitivas ha revolucionado la eficiencia en entornos laborales, educativos y personales. Los bots automatizados son herramientas clave para este proposito, permitiendo interactuar con aplicaciones web de manera autonoma. En este articulo, exploraremos como crear un bot Automatizado con Selenium y Python, enfocandonos en un caso practico: un script que automatiza el registro en una plataforma de suscripcion y el ingreso de mas datos. Ademas, explicaremos paso a paso como ejecutar este codigo en Visual Studio Code (VS Code).


Que es Selenium?#

Definicion y Proposito#

Selenium es una herramienta de codigo abierto diseñada para automatizar navegadores web. Su principal funcion es simular la interaccion humana con paginas web, lo que lo convierte en una solucion ideal para pruebas de software, scraping web y automatizacion de procesos. A diferencia de otras herramientas, Selenium soporta multiples lenguajes de programacion (como Python, Java y C#) y navegadores (Chrome, Firefox, Edge).

Caracteristicas Clave#


Indice#

  1. Que es un Bot Automatizado?
  2. Como obtener el XPath de un elemento web?
  3. Que es Python?
  4. Requisitos Previos
  5. Estructura del Codigo
  6. Manejo de Errores y Logging
  7. Consideraciones Eticas y Legales
  8. Video Tutorial + Codigo completo

Que es un Bot Automatizado?#

Concepto y Aplicaciones#

Un bot automatizado es un programa informatico que ejecuta tareas predefinidas sin intervencion humana. Estos bots pueden:

Ventajas y Desafios#

Ventajas:

Desafios:

Interesante: BOT Seleium


Como obtener el XPath de un elemento web?#

Existen varios metodos para obtener el XPath de un elemento en una pagina web. A continuacion, te explico el proceso paso a paso en navegadores como Chrome o Edge.

Metodo usando Chrome/Edge (Herramientas de Desarrollo)#

1. Abre las Herramientas de Desarrollo

2. Selecciona el elemento

3. Copia el XPath

Alternativas y consejos#


Que es Python?#

Lenguaje de Programacion Versatil#

Python es un lenguaje de alto nivel conocido por su sintaxis limpia y legible. Su versatilidad lo convierte en la eleccion preferida para desarrollo web, analisis de datos, inteligencia artificial y automatizacion. Para este proyecto, aprovechamos las bibliotecas de Python como selenium, undetected_chromedriver y logging.

Beneficios para la Automatizacion#


Requisitos Previos#

Herramientas Necesarias#

  1. Instalar Python: Descargar desde python.org e incluirlo en la variable de entorno PATH.
  2. Instalar VS Code: Descargar desde code.visualstudio.com.
  3. Extensiones Recomendadas:
    • Python: Para autocompletado y depuracion.
    • Pylance: Mejora el analisis estatico del codigo.

Instalacion de Bibliotecas Necesarias#

Ejecute los siguientes comandos en la terminal de VS Code:

Terminal window
pip install selenium undetected-chromedriver

Estructura del Codigo#

1. Configuracion Inicial#

El script comienza con la importacion de librerias y la definicion de datos de prueba:

import undetected_chromedriver as uc
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException, NoSuchElementException, WebDriverException
import time
import logging
# Datos de prueba (ejemplo)
USER_DATA = {
"email": "correosejemplo@ejemplo.com",
"password": "passstrong",
"name": "Prueba",
"lastname": "Gonzalez",
"card_number": "4242424242424242",
"card_expiry": "1230",
"card_cvv": "000",
"postal_code": "10080",
}

Que hace esto?


2. Configuracion del Navegador (setup_driver)#

def setup_driver():
options = uc.ChromeOptions()
options.add_argument("--disable-blink-features=AutomationControlled")
options.add_argument("--no-sandbox")
options.add_argument("--disable-dev-shm-usage")
options.add_argument('--disable-gpu')
options.add_argument('--disable-extensions')
try:
driver = uc.Chrome(options=options)
driver.maximize_window()
return driver
except WebDriverException as e:
logging.error(f"Error al iniciar el navegador: {e}")
raise

Explicacion:


3. Automatizacion del Registro (register_automatic)#

Paso 1: Acceso a la Pagina y Navegacion#

driver.get("https://slipstreammusic.com/pricing")
start_button = WebDriverWait(driver, 20).until(
EC.element_to_be_clickable((By.XPATH, '//*[@id="42f8de49-bc02-47ac-b3dc-f797b11ab031"]/div[1]/section/main/div/div[1]/div/div/div[2]/article/main/div[2]/a/span/span/p'))
)
start_button.click()

Funcionalidad:

Paso 2: Rellenar Formulario de Registro#

name_field = WebDriverWait(driver, 20).until(
EC.element_to_be_clickable((By.XPATH, '//*[@id="firstName"]'))
)
name_field.send_keys(user_data["name"])

Detalles:

Paso 3: Manejo de Iframes de Stripe#

stripe_iframe = WebDriverWait(driver, 20).until(
lambda d: next(
iframe for iframe in d.find_elements(By.CSS_SELECTOR, "iframe[name^='__privateStripeFrame']")
if iframe.is_displayed() and "payment" in iframe.get_attribute("src")
)
)
driver.switch_to.frame(stripe_iframe)

Como funciona:

Paso 4: Validacion Final#

success_indicator = WebDriverWait(driver, 20).until(
EC.presence_of_element_located((By.XPATH, '//*[contains(text(), "¡Bienvenido!")]'))
)

Objetivo:


Manejo de Errores y Logging#

Registro de Acciones#

logging.basicConfig(
level=logging.INFO,
format='%(message)s',
handlers=[logging.StreamHandler()]
)

Ventaja:

Captura de Excepciones#

except TimeoutException:
logging.error("Tiempo de espera agotado para un elemento")
driver.save_screenshot('error.png')
return False

Estrategia:


Ejecucion del Bot#

Bloque Principal#

if __name__ == "__main__":
driver = None
try:
driver = setup_driver()
if register_automatic(driver, USER_DATA):
logging.info("Proceso finalizado con exito")
else:
logging.error("Ocurrieron errores durante el proceso")
time.sleep(30)
except Exception as e:
logging.error(f"Error critico: {str(e)}")
finally:
if driver:
try:
driver.quit()
logging.info("Navegador cerrado correctamente")
except Exception as e:
logging.error(f"Error al cerrar el navegador: {str(e)}")

Pasos:

  1. Inicia el navegador con setup_driver().
  2. Ejecuta el proceso de registro con register_automatic().
  3. Cierra el navegador al finalizar, incluso si ocurre un error.

Consideraciones Eticas y Legales#


Como obtengo el XPath?#

Puedes obtener el XPath de cualquier elemento web siguiendo estos pasos:

  1. Abre las herramientas de desarrollador (F12).
  2. Selecciona el elemento con el icono de inspeccion.
  3. Haz clic derecho en el codigo HTML resaltado.
  4. Selecciona Copy > Copy XPath.

Codigo Completo#

Descarga el codigo completo del bot programado para automatizar el registro en una web directamente desde mi repositorio en GitHub:

Codigo Open Source: github.com/todoreal/bot-automatizado-selenium


Video Tutorial#

Puedes ver un video tutorial en el siguiente enlace:


Conclusion#

Este bot demuestra como Selenium y Python pueden automatizar tareas repetitivas en la web. Al seguir esta guia, podras adaptar el codigo para proyectos como scraping de datos, pruebas de interfaz o gestion de cuentas. Recuerda siempre verificar las politicas del sitio objetivo y usar estas herramientas con responsabilidad.

Recomendaciones finales#

Reflexion final#

La automatizacion con Selenium y Python abre un mundo de posibilidades para optimizar procesos y ahorrar tiempo. Con las herramientas y conocimientos adecuados, puedes crear bots que realicen tareas complejas de manera autonoma y eficiente.

Nota: Utiliza estas tecnicas de manera etica y responsable. La automatizacion debe ser una herramienta para mejorar la productividad, no para actividades maliciosas.

Comunidad TodoReal

¿Te sirvió esta guía o herramienta?

Únete a nuestro canal en Telegram o WhatsApp para no perderte actualizaciones, nuevos servidores y guías avanzadas.

Entradas relacionadas

Comentarios

Comparte tu opinión sobre esta publicación.