Python веб-драйвер селена - PullRequest
0 голосов
/ 20 июня 2020

Я делаю бота для WhatsApp, и мне нужно знать, как поместить его в oop, пока не придет новое сообщение, чтобы ответить на него.

Есть идеи?

Мой код:

from selenium import webdriver
import time

class WhatsappBot:
    def __init__(self):
        self.mensagem = "Mensagem teste" #mensagem a enviar
        self.grupos = ["Bloco de notas"] #grupos/user a enviar msg
        options = webdriver.ChromeOptions()
        options.add_argument('lang=pt-br')
        options.add_argument('--user-data-dir=/Users/arthurgomes/AppData/Local/Google/Chrome/User Data/Default')
        options.add_argument('--profile-directory=Default')
        self.driver = webdriver.Chrome(executable_path=r'./chromedriver.exe', options=options)

    def EnviarMensagens(self): 
        # <span dir="auto" title="Bloco de notas" class="_3ko75 _5h6Y_ _3Whw5">Bloco de notas</span>
        # <div tabindex="-1" class="_3uMse">
        # <span data-icon="send" class="">
        print('dhuawdhauw')
        self.driver.get('https://web.whatsapp.com/')
        time.sleep(5)
        count = 0
        while count < 3:  
            for grupo in self.grupos:
                grupo = self.driver.find_element_by_xpath(f"//span[@title='{grupo}']")
                time.sleep(0.2)
                grupo.click()
                chat_box = self.driver.find_element_by_class_name('_3uMse')
                time.sleep(0.2)
                chat_box.click()
                chat_box.send_keys(self.mensagem)
                botao_enviar = self.driver.find_element_by_xpath("//span[@data-icon='send']")
                time.sleep(0.2)
                botao_enviar.click()
                time.sleep(0.2)
                print(count)
                count +=1
        if count >= 3:
            exit()


bot = WhatsappBot()
bot.EnviarMensagens()

1 Ответ

0 голосов
/ 20 июня 2020

Попробуйте проверить источник изменения элемента DOM окна чата. Я не тестировал этот код, и он мог отправить программу в бесконечный l oop.

import time
timeout = 10 # check every 10 seconds for messages
chatbox_xpath = "//div[@class='chatbox']" # representation only

while True:
    source = driver.find_element_by_xpath(chatbox_xpath).get_attribute('innerHTML')
    time.sleep(timeout)
    if source != 
        driver.find_element_by_xpath(chatbox_xpath).get_attribute('innerHTML'):
       break
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...