Selenium es una herramienta popular y potente utilizada para la automatización de navegadores web. Permite controlar y manipular interacciones en navegadores, como hacer clic en botones, rellenar formularios, extraer datos o navegar por diferentes páginas web de manera automatizada. Esta herramienta es extremadamente útil en la industria del desarrollo de software y pruebas, así como en la automatización de tareas repetitivas en la web.
El programa implementado con Selenium es un bot de automatización para WhatsApp Web, una adaptación que explora las capacidades de Selenium para interactuar con la versión web de WhatsApp. Esta automatización específica se centra en el envío de mensajes predefinidos a una lista de contactos. Aunque este ejemplo es específico para WhatsApp, la lógica y la estructura podrían adaptarse para diversas aplicaciones:
Utilidades y aplicaciones:
- Pruebas automatizadas: En el ámbito del desarrollo de software, Selenium se utiliza para crear pruebas automatizadas que verifiquen la funcionalidad de aplicaciones web. En este caso, se podría adaptar para simular interacciones del usuario en la interfaz web de WhatsApp.
- Automatización de tareas repetitivas: Este tipo de programa puede ser utilizado para enviar notificaciones, recordatorios, o mensajes predefinidos a una lista de contactos en cualquier plataforma web que requiera interacciones similares.
- Gestión de contactos o comunicación automatizada: Podría adaptarse para el manejo automatizado de comunicaciones, campañas de marketing o gestión de clientes a través de plataformas de mensajería, proporcionando respuestas predefinidas o actualizaciones programadas.
- Recopilación de datos: Puede emplearse para recopilar datos o información de sitios web específicos al automatizar la navegación y extracción de información.
La combinación de Selenium con la programación permite la automatización de procesos que, de otra manera, requerirían interacciones manuales, ahorrando tiempo y esfuerzo en tareas repetitivas o en la gestión de comunicaciones a través de interfaces web.
Estructura del programa:
- Clase WhatsAppBot:
- Abstrae la funcionalidad de interactuar con WhatsApp Web.
- Inicializa la configuración del bot y encapsula la lógica de envío de mensajes.
- Método
send_messages
:- Recorre una lista de contactos, accede a la URL de WhatsApp para cada contacto y envía una serie de mensajes predefinidos.
- Maneja posibles excepciones al buscar el elemento de entrada de mensaje.
- Uso de la instancia de la clase:
- En el bloque principal (
if __name__ == "__main__":
), se instancia la claseWhatsAppBot
y se llama al métodosend_messages
con la lista de contactos.
- En el bloque principal (
Principios de Programación Orientada a Objetos (POO):
- Abstracción: La clase
WhatsAppBot
oculta la complejidad interna de la interacción con WhatsApp Web, proporcionando métodos simples para enviar mensajes a contactos. - Encapsulación: Los detalles internos, como la configuración del navegador, se mantienen encapsulados dentro de la clase, lo que permite un uso sencillo y modular del bot.
- Modularidad y Reutilización: El código está organizado de manera modular, con métodos específicos para tareas individuales. La encapsulación permite reutilizar fácilmente la lógica de interacción con WhatsApp en otros proyectos.
¿Te gustaría aprender Programación Orientada a Objetos con Python? Te recomiendo este curso: Curso profesional de Python. A lo largo de este curso, nos introduciremos al mundo de la programación en Python, abordando conceptos teóricos y prácticos; comenzaremos con instrucciones y tipos datos simples, definiremos funciones, luego crearemos nuestros propios módulos, aprenderemos conceptos de la OOP / POO y mucho más.
Flujo de ejecución:
- Se instancia la clase
WhatsAppBot
, que configura el entorno de Selenium y el navegador Chrome. - El método
send_messages
se encarga de enviar mensajes a los contactos proporcionados en la lista. - Para cada contacto, el bot accede a la URL de WhatsApp, busca el elemento de entrada de mensaje y envía una serie de mensajes predefinidos.
- Se manejan posibles excepciones, como la no localización del elemento de entrada de mensaje.
- Una vez completado el envío de mensajes, se cierra el navegador.
En resumen, el programa automatiza el envío de mensajes a través de WhatsApp Web utilizando POO, facilitando la modularidad, reutilización y mantenimiento del código para interacciones automatizadas con los contactos proporcionados.
Código del programa.
from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
import os
import time
class WhatsAppBot:
def __init__(self):
# Configuración inicial del bot
self.working_directory = os.getcwd() # Obtiene el directorio de trabajo actual
self.chrome_options = Options() # Opciones para el navegador Chrome
self.chrome_options.add_argument(f"--user-data-dir={self.working_directory}/ChromeProfile") # Establece el directorio de perfil de Chrome
self.driver = Chrome(options=self.chrome_options) # Inicializa el controlador de Chrome
self.message_input_xpath = '//*[@id="main"]/footer/div[1]/div/span[2]/div/div[2]/div[1]/div[2]/div[1]' # XPath del área de entrada de mensaje
def send_messages(self, contacts):
# Iteración a través de los contactos y envío de mensajes
for name, number in contacts:
url = f"<https://web.whatsapp.com/send?phone={number}>" # Construye la URL de WhatsApp para el contacto
self.driver.get(url) # Accede a la URL de WhatsApp
time.sleep(25) # Espera a que la página cargue completamente
try:
message_input_element = self.driver.find_element(By.XPATH, self.message_input_xpath) # Busca el elemento de entrada de mensaje
if message_input_element.is_enabled():
# Mensajes a enviar
messages = [
f"Hola {name}. Mi nombre es Ángel Sánchez, fundador de Azul School...",
"Te mando mensaje ya que estamos celebrando nuestro cuarto aniversario...",
"¿Te gustaría que te brinde información? Quedan pocas disponibles."
]
for message in messages:
message_input_element.send_keys(message) # Ingresa el mensaje
message_input_element.send_keys(Keys.RETURN) # Presiona Enter para enviar el mensaje
time.sleep(3) # Espera entre cada mensaje
print(f"Mensaje enviado correctamente a {name} ({number}).")
except Exception as e:
print(f"No se pudo encontrar el elemento para {name} ({number}). Error: {str(e)}")
time.sleep(10) # Espera antes de pasar al siguiente contacto
self.driver.quit() # Cierra el navegador al finalizar el envío de mensajes
if __name__ == "__main__":
# Inicialización del bot y envío de mensajes a los contactos
bot = WhatsAppBot()
contacts = [
("Nombre", "521111111111"),
# Agregar más contactos si es necesario
]
bot.send_messages(contacts)
Pasos para usar el archivo de automatización de WhatsApp con Selenium:
Requisitos previos:
- Tener Python instalado en tu sistema.
- Instalar la biblioteca
selenium
usandopip install selenium
.
Pasos:
- Descargar el archivo:
- Descarga el archivo que contiene el código de automatización de WhatsApp en Python.
- Instalar Selenium:
- Abre una terminal o línea de comandos y ejecuta
pip install selenium
para instalar la biblioteca necesaria.
- Abre una terminal o línea de comandos y ejecuta
- Crear un archivo Python:
- Abre tu editor de texto o entorno de desarrollo (por ejemplo, VS Code, PyCharm, etc.).
- Copia y pega el código en un nuevo archivo con extensión
.py
.
- Configurar los contactos:
- En la sección
contacts
, añade los contactos a los que deseas enviar mensajes. Sigue el formato:("Nombre", "Número de teléfono")
.
- En la sección
- Ejecutar el código:
- Guarda el archivo.
- Ejecuta el archivo Python en tu terminal o entorno de desarrollo.
- Observar la ejecución:
- Observa cómo el programa automatiza el proceso de iniciar sesión en WhatsApp Web y enviar mensajes a los contactos especificados.
Notas adicionales:
- Asegúrate de tener una conexión a internet activa y de haber iniciado sesión en WhatsApp Web antes de ejecutar el código.
- Personaliza los mensajes en la lista
messages
si deseas enviar mensajes diferentes a los contactos.
Siguiendo estos pasos, podrás utilizar el archivo para automatizar el envío de mensajes a través de WhatsApp Web utilizando Selenium con Python.
¿Te gustaría aprender a trabajar con Selenium? Te recomiendo este curso: Selenium con Python: Automatización de mensajes en WhatsApp. En este curso vamos a automatizar el envió de mensajes en WhatsApp. El curso es totalmente practico, y durante el desarrollo de este crearemos un pequeño proyecto de verificación de códigos de registro, donde al usuario que se está registrado se le envía un mensaje único vía WhatsApp que después debe de ingresar en la aplicación para terminar su registro.