WhatsApp Bot Automate.


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:

  1. 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.
  2. 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.
  3. 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.
  4. 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:

  1. 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.
  2. 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.
  3. Uso de la instancia de la clase:
    • En el bloque principal (if __name__ == "__main__":), se instancia la clase WhatsAppBot y se llama al método send_messages con la lista de contactos.

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:

  1. Se instancia la clase WhatsAppBot, que configura el entorno de Selenium y el navegador Chrome.
  2. El método send_messages se encarga de enviar mensajes a los contactos proporcionados en la lista.
  3. 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.
  4. Se manejan posibles excepciones, como la no localización del elemento de entrada de mensaje.
  5. 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 usando pip install selenium.

Pasos:

  1. Descargar el archivo:
    • Descarga el archivo que contiene el código de automatización de WhatsApp en Python.
  2. Instalar Selenium:
    • Abre una terminal o línea de comandos y ejecuta pip install selenium para instalar la biblioteca necesaria.
  3. 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.
  4. 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").
  5. Ejecutar el código:
    • Guarda el archivo.
    • Ejecuta el archivo Python en tu terminal o entorno de desarrollo.
  6. 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.

,

¿Tienes un cometario sobre esto? Dímelo en Twitter o Facebook.