'WhatsApp Bot in Python with WebDriver

from typing import Any
import requests
from selenium import webdriver
from time import sleep 
# import logging
from pyfiglet import Figlet
from selenium.webdriver.common.by import By

def AnyWord(word):
    f = Figlet(font='slant')
    print(f.renderText(word))

def main():
    print('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
    AnyWord('Starting...')
    print('Trying to connect to Whatsapp-Web via Chrome')
    print('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
    global driver
    driver = webdriver.Chrome(PATH)
    driver.implicitly_wait(15) 
    driver.get('https://web.whatsapp.com')
    driver.implicitly_wait(10)
    choose()

def choose():
    insys = input('What do you want? \n 1 = Spam Someone \n 2 = auto answer \n Enter = Quit')
    if insys == '1':
        print('you choosed spam')
        spam()
    else:
        quit()

def spam():
    driver.find_element(By.CSS_SELECTOR, "span[title='" + input("Enter name to spam: ") + "']").click()
    inputString = input("Enter message to send: ")
    inputAmount = int(input("Enter an Amount of messages"))
    for i in range(inputAmount):
        driver.find_element(By.XPATH, '//*[@id="main"]/footer/div[1]/div/span[2]/div/div[2]/div[1]/div/div[2]').send_keys(inputString)
        driver.implicitly_wait(1)
        driver.find_element(By.XPATH, '//*[@id="main"]/footer/div[1]/div/span[2]/div/div[2]/div[2]').click()

if __name__ == "__main__":
    PATH = "C:/Users/florianbl/Documents/chromedriver.exe"
    main()

If I run the code it come: Enter name to spam: Jushkun Traceback (most recent call last): File "c:\Users\florianbl\Documents\scripts\whatsapp_bot.py", line 62, in <module> main() File "c:\Users\florianbl\Documents\scripts\whatsapp_bot.py", line 23, in main choose() File "c:\Users\florianbl\Documents\scripts\whatsapp_bot.py", line 29, in choose spam() File "c:\Users\florianbl\Documents\scripts\whatsapp_bot.py", line 37, in spam driver.find_element(By.CSS_SELECTOR, "span[title='" + input("Enter name to spam: ") + "']").click() File "C:\Users\florianbl\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\selenium\webdriver\remote\webdriver.py", line 1248, in find_element return self.execute(Command.FIND_ELEMENT, { File "C:\Users\florianbl\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\selenium\webdriver\remote\webdriver.py", line 425, in execute self.error_handler.check_response(response) File "C:\Users\florianbl\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\selenium\webdriver\remote\errorhandler.py", line 247, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"span[title='Jushkun']"} (Session info: chrome=100.0.4896.75)

and also:

[16160:11864:0406/094422.314:ERROR:gpu_init.cc(446)] Passthrough is not supported, GL is disabled, ANGLE is [19008:25812:0406/094522.321:ERROR:device_event_log_impl.cc(214)] [09:45:22.322] USB: usb_service_win.cc:391 Could not read device interface GUIDs: Das System kann die angegebene Datei nicht finden. (0x2) [19008:25812:0406/094522.324:ERROR:device_event_log_impl.cc(214)] [09:45:22.325] USB: usb_service_win.cc:354 Could not get child device's service name: Element nicht gefunden. (0x490) [19008:25812:0406/094522.326:ERROR:device_event_log_impl.cc(214)] [09:45:22.327] USB: usb_service_win.cc:391 Could not read device interface GUIDs: Das System kann die angegebene Datei nicht finden. (0x2)



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source