Como Criar um Bot no WhatsApp de Mensagens Automáticas

como criar um bot no whatsapp

Como criar um bot no WhatsApp de envio de mensagem automáticas

Para todas as vovós, tios e tias, vendedores e amigos de plantão, que gostam de enviar mensagem para os conhecidos todos os dias, eu tenho um segredo para você: aprenda a fazer isso de um jeito mais eficiente, deixando o código trabalhar por você.

Por que fazer um trabalho manual todo dia se podemos, através da programação com Python, criar um robô para o WhatsApp uma vez e depois deixar ele trabalhando incansavelmente por nós?

Você está pronto para montar o nosso “robô WhatsApp”? Ele irá enviar as mensagens que você definir para todos os grupos ou contatos individuais que você quiser.

Se você está pronto para aprender, então bora lá!

Instalação das ferramentas

Instalação do Python

Para que a gente consiga criar nosso bot, iremos fazer a instalação do Python. Para fazer a instalação do Python acesse https://www.python.org/downloads/  e faça o download da versão mais atual do Python. 


Na sequência execute o arquivo de instalação, mas fique atento as duas opções que você precisa marcar, ou o restante do tutorial não irá funcionar. Marque as opções Add Python to PATH(ou a tradução disso em português) e Install Launcher.

Se a instalação foi feita corretamente, você deve possuir o Python instalado agora.

Podemos verificar se a instalação funcionou corretamente abrindo o terminal (botão iniciar -> digite cmd no windows) , digitando python e apertando enter. Você deve receber uma mensagem dizendo qual é a versão atual instalada em seu computador. Algo como a imagem abaixo:

Caso este comando gere um erro, e não exiba a versão do Python. Volte aos passos anteriores e faça a instalação novamente.

Instalação do Selenium

Agora temos que fazer a instalação que nos permitirá fazer a automação de tarefas na web.

O nosso exemplo de hoje sendo a automação de envio de mensagens para contatos e grupos no WhatsApp web.

Abra um novo terminal e digite:

pip install selenium

Ao rodar este comando você estará instalando a biblioteca que utilizaremos para navegar até o whatsapp web.

Caso tenha um erro aqui, é provável que sua instalação do python não foi feita corretamente. Desinstale o python e siga o passo da instalação novamente.

Baixando o Google Chrome Driver

A seguir temos que fazer o download do Google Chrome Driver que é um navegador especialmente criado para fazer automação de sites.

Ao acessar o site, você verá algumas versões diferentes para fazer o download. Você deve baixar uma versão igual à versão do Google Chrome que esta instalada em seu computador.

Como descobrir a sua versão atual do Google Chrome?

Vá até em configurações, sobre Google Chrome(minha versão está em inglês, mas as imagens devem ajudar)

Após clicar neste menu, seremos levados para uma página onde podemos verificar a versão do Chrome que temos instalado. No meu caso possuo a versão 80, mas é possível que você possua uma versão diferente.

Agora temos a informação que precisamos: nossa versão do Google Chrome. Com essa informação em mãos, navegue ate https://chromedriver.chromium.org/downloads. E clique na versão que corresponde a sua versão do Chrome.

No meu caso estarei fazendo o download da versão 80(baixe a versão do seu Google Chrome)

Na página a seguir você deve baixar o arquivo correspondente ao seu sistema operacional. Como uso Windows 10, estarei fazendo o download da versão para o Windows:

Após ter feito o download do driver, extraia o arquivo .zip para que possamos usar ele no próximo passo.

Criando uma pasta para o projeto

Navegue até algum lugar no seu computador(área de trabalho, por exemplo) e crie uma nova pasta.

Vamos chamar essa pasta de “bot whatsapp”(o nome não importa). Feito isso copie o chromedriver.exe que você acaba de extrair para dentro desta pasta. Estes arquivos serão usados a seguir.

Instalação do VS Code

Navegue até https://code.visualstudio.com/ e clique no botão de download.

Após o download, execute o arquivo e faça os seguintes passos para fazer a instalação do VS Code

Clique em Próximo ou Next
Marque as opções em vermelho acima, caso ainda não estejam,
Clique em finalizar ou finish para concluir a instalação do Vs Code

O Vs Code deve abrir automaticamente. Caso não abra vá até botão iniciar –> vs code.

Preparando o VS Code para uso do Python

Ao abrir o VS Code pela primeira vez, as ferramentas da linguagem de programação Python não estarão instaladas.

Para fazer essa instalação, clique em Python dentro de “Tools and languages“(ou o correspondente disso em português) e aguarde até que ele fique cinza, como na imagem abaixo.

Clique em open folder(ou “abrir pasta” caso esteja em português) e selecione a pasta”bot whatsapp”, criada no passo anterior.

Hora do código

Ok, estamos agora dentro da pasta onde iremos colocar nosso código. Para criar um arquivo python, clique com o botão esquerdo em New File(ou novo arquivo em português).

A seguir iremos criar um arquivo chamado whatsapp_bot.py. Com isso você deve ter o arquivo whatsapp_bot..py aberto, caso ele não tenha aberto automaticamente, faça isso agora.

Caso precise renomear o arquivo, clique em cima dele e aperte F2 no seu teclado para alterar o nome do arquivo.

Configurando nome dos grupos e pessoas

Copie o código abaixo para dentro do arquivo whatsapp bot, você deve alterar as mensagens dentro da Parte 1 e Parte 2 como visto no código abaixo.

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time

class WhatsappBot:
    def __init__(self):
        # Parte 1 - A mensagem que você quer enviar
        self.mensagem = "Bom dia pessoal, veja o video que acabou de sair https://www.youtube.com"
        # Parte 2 - Nome dos grupos ou pessoas a quem você deseja enviar a mensagem
        self.grupos_ou_pessoas = ["GRUPO DA FAMÍLIA", "GRUPO DE VENDAS"]
        options = webdriver.ChromeOptions()
        options.add_argument('lang=pt-br')
        self.driver = webdriver.Chrome(
            executable_path=r'./chromedriver.exe', chrome_options=options)

A única configuração que você precisa fazer já foi feita no bloco de código do passo anterior. No entanto, ele ainda não está completo, adicione o código abaixo ao arquivo whatsapp_bot.py .

	def EnviarMensagens(self):
	        self.driver.get('https://web.whatsapp.com')
	        time.sleep(30)
	        for grupo_ou_pessoa in self.grupos_ou_pessoas:
	            campo_grupo = self.driver.find_element_by_xpath(
	                f"//span[@title='{grupo_ou_pessoa}']")
	            time.sleep(3)
	            campo_grupo.click()
	            chat_box = self.driver.find_element_by_class_name('_13mgZ')
	            time.sleep(3)
	            chat_box.click()
	            chat_box.send_keys(self.mensagem)
	            botao_enviar = self.driver.find_element_by_xpath(
	                "//span[@data-icon='send']")
	            time.sleep(3)
	            botao_enviar.click()
	            time.sleep(5)


bot = WhatsappBot()
bot.EnviarMensagens()

Para executar o código acima temos 2 opções.
Opção 1) Clicar no botao “Play” do VS Code

Opção 2) Executar o script Python diretamente no terminal.

Para abrir o terminal aperte CTRL + ` (tecla logo abaixo do ESC) no seu teclado e digite py.exe + nome do arquivo que criou.

No nosso caso como criei o arquivo chamado whatsapp_bot.py, estarei rodando o comando abaixo:

py.exe whatsapp_bot.py

Acessando o WhatsApp Web

Após ter rodado o arquivo o nosso programa irá abrir o site do WhatsApp Web.

Nele você deverá ler o QR code para que ele possa abrir o whatsapp web.

Agora você não precisa fazer mais nada. Apenas aguarde a veja o nosso bot fazer o trabalho para a gente 😎 .

P.S. – O bot irá enviar mensagem apenas para contatos que estejam visíveis quando você abre o Whatsapp Web. Caso o contato ou grupo para o qual está tentando enviar mensagem não esteja visível nessa janela, o bot não irá funcionar, sendo necessário alterar o código para que ele trate essas situações também.

Considerações Finais

Isso é apenas um exemplo de um Bot que podemos criar usando o Python + Selenium. Imagina o quanto você poderia fazer se soubesse ainda mais sobre esse tema?

Imagine se você pudesse

  • Criar robôs que trabalham por você?
  • Usar a programação ao seu favor?
  • Economizar dezenas de horas?
  • Monetizar seu conhecimento?

É exatamente isso que estarei te ensinando neste curso, saiba mais clicando aqui.

Prefere assistir vídeo? Veja a explicação completa no vídeo abaixo:

131 comentários em “Como Criar um Bot no WhatsApp de Mensagens Automáticas”

  1. Muito bom. Daria para usar “Grupos %”? Pegar todos os grupos que começam com a palavra “grupos”? como seria?

  2. Joao marcos santso

    Cara muito top, voce podia dar umas dicas de como colocar uma lista de telefone .txt para enviar para alguns contatos

    1. ou podia ser uma lista do excel…eu preciso enviar de telefones do excell e não quero salvar os contatos na minha conta do android…tem como fazer isso???

  3. Rafael Henrique

    Achei muito bom, porém não consegui rodar no meu pc, fiz conforme ensinado, sempre aparecia uma mensagem enorme embaixo, no terminal:
    Windows PowerShell
    Copyright (C) Microsoft Corporation. Todos os direitos reservados.

    Experimente a nova plataforma cruzada PowerShell https://aka.ms/pscore6

    PS C:\Users\WINDOWS 10\Desktop\Bot whatsapp> & "C:/Users/WINDOWS 10/AppData/Local/Programs/Python/Python38-32/python.exe" "c:/Users/WINDOWS 10/Desktop/Bot whatsapp/whatsapp_bot.py"
    c:/Users/WINDOWS 10/Desktop/Bot whatsapp/whatsapp_bot.py:13: DeprecationWarning: use options instead of chrome_options
    self.driver = webdriver.Chrome(
    Traceback (most recent call last):
    File "C:\Users\WINDOWS 10\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\common\service.py", line
    72, in start
    self.process = subprocess.Popen(cmd, env=self.env,
    File "C:\Users\WINDOWS 10\AppData\Local\Programs\Python\Python38-32\lib\subprocess.py", line 854, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
    File "C:\Users\WINDOWS 10\AppData\Local\Programs\Python\Python38-32\lib\subprocess.py", line 1307, in _execute_child
    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
    FileNotFoundError: [WinError 2] O sistema não pode encontrar o arquivo especificado

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File "c:/Users/WINDOWS 10/Desktop/Bot whatsapp/whatsapp_bot.py", line 35, in
    bot = WhatsappBot()
    File "c:/Users/WINDOWS 10/Desktop/Bot whatsapp/whatsapp_bot.py", line 13, in __init__
    self.driver = webdriver.Chrome(
    File "C:\Users\WINDOWS 10\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 73, in __init__
    self.service.start()
    File "C:\Users\WINDOWS 10\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\common\service.py", line
    81, in start
    raise WebDriverException(
    selenium.common.exceptions.WebDriverException: Message: 'chromedriver.exe' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home

    1. Jhonatan de Souza

      Bom essa “mensagem enorme” é uma dica e indicação de o que precisa ser resolvido.
      A única linha que você precisa ler e entender é a última aqui:
      “selenium.common.exceptions.WebDriverException: Message: ‘chromedriver.exe’ executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/hom
      Ela está dizendo que o caminho que usou para o chromedriver.exe não está sendo encontrado, qual caminho você utilizou. O correto-se está fazendo igual o tutorial é: r’./chromedriver.exe’
      Caso isso não funcione é possível que tenha que colocar o caminho completo do chromedriver.exe

      Ex: ‘c:/jhonatan/area de trabalho/bot whatsapp/chromedriver.exe’

      Isso é um exemplo de um caminho completo, se você copiar ele não irá funcionar porque esse caminho é o caminho no meu computador, você precisa alterar para usar o seu caminho.

      1. Olá Jonathan no meu também esta dando o mesmo erro do dele.
        Porém segui o tutorial ponto a ponto, verifiquei todos os pontos e acentos, verifiquei enfim tudo o que eu poderia ter verificado e não funcionou. O meu código é esse:
        from selenium import webdriver
        from selenium.webdriver.chrome.options import Options
        import time

        class whatsappbot:
        def _init_(self):
        self.mensagem= “Olá tudo bem?”
        self.grupos =[“Divulgação 01″,”Divulgação 02″,”Divulgação 03″,”Divulgação 04″,”Divulgação 05″]
        options = webdriver.ChromeOptions()
        options.add_argument(‘lang=pt-br’)
        self.driver = webdriver.Chrome(
        executable_path=r’./chromedriver.exe’, chrome_options=options)

        def EnviarMensagens(self):
        #ENTREGADORES BRASIL
        #
        #
        self.driver.get(‘https://web.whatsapp.com’)
        time.sleep(30)
        for grupo in self.grupos:
        grupo = self.driver.find_element_by_xpath(f”//span[@title='{grupo}’]”)
        time.sleep(3)
        grupo.click()
        chat_box = self.driver.find_elements_by_class_name(‘_2vJ01′)
        time.sleep(3)
        chat_box.click()
        chat_box.send_keys(self.mensagem)
        botao_enviar = self.driver.find_element_by_xpath(“//span[@data-icon=’send’]”)
        time.sleep(3)
        botao_enviar.click()
        time.sleep(5)

        bot = whatsappbot()
        bot.EnviarMensagens()

        E o erro que esta dando é esse:

        C:\Program Files (x86)\Python38-32\python.exe: can’t open file ‘./whatsapp_bot.py’: [Errno 2] No such file or directory
        PS C:\Users\Fábio>
        Não vai de geito algum. Poderia me auxiliar por gentileza professor?

  4. DOUGLAS ALMEIDA SANTOS

    eu adorei essa parada, mas…
    eu já tive uma meia dúzia de erros, já até desinstalei e fiz o processo do zero algumas vezes
    nada funcionou.
    esses são alguns erros:
    options = webdriver.ChromeOptions()
    Windows PowerShell

    PS C:\Douglas 0305\Bot Whatsapp> & C:/Users/dougl/AppData/Local/Programs/Python/Python38-32/python.exe “c:/Douglas 0305/Bot Whatsapp/whatsapp_bot.py”
    Traceback (most recent call last):
    File “c:/Douglas 0305/Bot Whatsapp/whatsapp_bot.py”, line 30, in
    File “c:/Douglas 0305/Bot Whatsapp/whatsapp_bot.py”, line 7, in __init__
    options = webdriver.ChromeOptions()
    NameError: name ‘webdriver’ is not defined
    PS C:\Douglas 0305\Bot Whatsapp> & C:/Users/dougl/AppData/Local/Programs/Python/Python38-32/python.exe “c:/Douglas 0305/Bot Whatsapp/whatsapp_bot.py”
    File “c:/Douglas 0305/Bot Whatsapp/whatsapp_bot.py”, line 12
    self.driver.get(‘https://web.whatsapp.com’)
    IndentationError: expected an indented block
    PS C:\Douglas 0305\Bot Whatsapp> & C:/Users/dougl/AppData/Local/Programs/Python/Python38-32/python.exe “c:/Douglas 0305/Bot Whatsapp/whatsapp_bot.py”
    Traceback (most recent call last):
    File “c:/Douglas 0305/Bot Whatsapp/whatsapp_bot.py”, line 30, in
    bot = WhatsappBot()
    File “c:/Douglas 0305/Bot Whatsapp/whatsapp_bot.py”, line 7, in __init__
    NameError: name ‘webdriver’ is not defined
    PS C:\Douglas 0305\Bot Whatsapp> & C:/Users/dougl/AppData/Local/Programs/Python/Python38-32/python.exe “c:/Douglas 0305/Bot Whatsapp/whatsapp_bot.py”
    Traceback (most recent call last):
    File “c:/Douglas 0305/Bot Whatsapp/whatsapp_bot.py”, line 30, in
    bot = WhatsappBot()
    File “c:/Douglas 0305/Bot Whatsapp/whatsapp_bot.py”, line 7, in __init__
    options = webdriver.ChromeOptions()
    NameError: name ‘webdriver’ is not defined
    PS C:\Douglas 0305\Bot Whatsapp> & C:/Users/dougl/AppData/Local/Programs/Python/Python38-32/python.exe “c:/Douglas 0305/Bot Whatsapp/whatsapp_bot.py”
    Traceback (most recent call last):
    File “c:/Douglas 0305/Bot Whatsapp/whatsapp_bot.py”, line 29, in
    bot = WhatsappBot()
    File “c:/Douglas 0305/Bot Whatsapp/whatsapp_bot.py”, line 7, in __init__
    options = webdriver.chrome_options()
    NameError: name ‘webdriver’ is not defined
    PS C:\Douglas 0305\Bot Whatsapp>

    tiveram outros…
    o sistema acusa que não reconhece o termo webdriver, o time, o self

    enfim, topo até anydesk pra fazer essa parada rodar…

    1. No meu esta dando Erro
      {
      “resource”: “/c:/Users/Noel Cunha/Desktop/BotWhatsapp/Whatsapp_bot.py”,
      “owner”: “python”,
      “code”: “syntax-error”,
      “severity”: 8,
      “message”: “unexpected indent (, line 11)”,
      “source”: “pylint”,
      “startLineNumber”: 11,
      “startColumn”: 13,
      “endLineNumber”: 11,
      “endColumn”: 13
      }

    2. Leandro Macedo

      Estou adorando suas aulas e tutorials. Acabei de finalizar o curso de Javascript. Inclusive, esta mensagem está sendo enviada via console do inspecionar elemento como ensinado no curso. Parabéns e OBRIGADO!

    3. Eduardo Pereira

      Parabéns pelo projeto. Não conheço Phython mas consegui fazer funcionar apenas copiando o código mas eu gostaria de aprender melhor o processo na linguagem com a qual eu tenho trabalhado ultimamente que é C# e não estou conseguindo.
      Ele não consegue encontrar:

      destino = driver.FindElement(By.XPath(“//span[@title=’- Edu Oi Antigo’]”));

      Já tentei de diversas maneiras e nada.
      Se puder me ajude.
      Desde já agradeço.

  5. OLICIO JOSE DA SILVA

    O meu rodou somente o primeiro nome, já o segundo nome da erro, o interessante que se eu uso outro nome não roda e nem numero!! mas se eu repetir o nome ele roda!!

    toods os nomes estao corretos

  6. Silvio Rangel

    Boa noite, Jhonatan!

    O meu apareceu esse código:
    PS C:\Users\Silvio\Desktop\Bot_Whats> & C:/Users/Silvio/AppData/Local/Programs/Python/Python38-32/python.exe c:/Users/Silvio/Desktop/Bot_Whats/whatsapp_bot.py
    Traceback (most recent call last):
    File “c:/Users/Silvio/Desktop/Bot_Whats/whatsapp_bot.py”, line 1, in
    class WhatsappBot:
    File “c:/Users/Silvio/Desktop/Bot_Whats/whatsapp_bot.py”, line 31, in WhatsappBot
    bot = WhatsappBot()
    NameError: name ‘WhatsappBot’ is not defined
    PS C:\Users\Silvio\Desktop\Bot_Whats> py.exe .\whatsapp_bot.py
    Traceback (most recent call last):
    File “.\whatsapp_bot.py”, line 1, in
    class WhatsappBot:
    File “.\whatsapp_bot.py”, line 31, in WhatsappBot
    bot = WhatsappBot()
    NameError: name ‘WhatsappBot’ is not defined
    PS C:\Users\Silvio\Desktop\Bot_Whats>

    Informa que o nome WhatsappBot não foi definido.
    Como faço para consertar?
    De já, obrigado!

    1. Pelo que vi Silvio faltou colocar o nome no seu Bot, seria algo como
      bot = WhatsappBot(‘Nome do Bot aqui’)

  7. Harreson Lima

    Olá, estou fazendo seu curso de JAvaScript completo, e teno adorado as aulas, obrigado por compartilhar seu conhecimento. Essa mensagem esta sendo feita como exercicio das suas aulas. Gratidão!

  8. 01 from selenium import webdriver
    02 import time
    03
    04 class whatsappBot:
    05 def __init__(self):
    06 self.mensagem = “Bom dia Filhota,”
    07 self.grupos = [“Thelissa Amanda-015″]
    08 options = webdriver.ChromeOptions()
    09 options.add_argument(‘lang=pt-br’)
    10 self.driver = webdriver.chrome(executable_path=r’C:\Users\usuario\Desktop\BotWhats>/chromedriver.exe’)
    11
    12 def EnviarMensagens(self):
    13 # Thelissa Amanda-015
    14 #
    15 #
    16
    17 self.driver.get(‘https://web.whatsapp.com’)
    18 time.sleep(30)
    19 for grupo in self.grupos:
    20 grupo = self.drive.find_element_by_xpath(f”//span[@title='{grupo}’]”)
    21 time.sleep(3)
    22 grupo.click()
    23 chat_box = self.driver.find_element_by_class_name(‘_1Plpp’)
    24 time.sleep(3)
    25 chat_box.click()
    26 chat_box.send_keys(self.mensagem)
    27 botao_enviar = self.drive.find_element_by_xpath(“//span[@data-icon=’send’]”)
    18 time.sleep(3)
    29 botão_enviar.click()
    30 time.sleep(5)
    31 bot = whatsappBot(zapbot)
    32 bot.EnviarMensagens()

    ==================
    C:\Users\usuario\Desktop\BotWhats> py.exe zapbot.py
    Traceback (most recent call last):
    File “zapbot.py”, line 31, in
    bot = whatsappBot(zapbot)
    NameError: name ‘zapbot’ is not defined

    1. Jhonatan de Souza

      Veja a publicação novamente, seu código está diferente.
      bot = whatsappBot(zapbot)
      essa linha está errada, não é para passar nada aqui.
      remova o zapbot de dentro do parenteses

  9. Amigo jhonatan,
    Como pode ver acima segui a risca todas as dicas, assisti ao seu vídeo 6 vezes com calma para certificar-me que não estava passando batido em alguma rotina, li o código que você disponibilizou e fiz todas as alterações que estavam diferentes do vídeo e não consegui o mesmo resultado que você obteve no vídeo.
    Por favor mostre-me onde estou errando.

    Obrigado

    1. Jhonatan de Souza

      bot = whatsappBot(zapbot) está incorreto, vejo o tutorial escrito acima.
      Você não deve adicionar a palavra zapbot aqui

      1. Bom dia Jhonatan,

        Primeiramente muito obrigado pela sua prestimosa atenção, sua observação é justa, porém vamos atirando até acertar…(risos).
        Fiz a correção conforme orientado mas continua apresentando ERRO, Eu coloquei o endereço completo onde está o chromedriver para ver se funcionava.

        File “c:/Users/usuario/Desktop/BotWhats/zapbot.py”, line 31, in
        bot = whatsappBot()
        File “c:/Users/usuario/Desktop/BotWhats/zapbot.py”, line 10, in _init_
        self.driver = webdriver.chrome(executable_path=r’C:\Users\usuario\Desktop\BotWhats>/chromedriver.exe’)
        TypeError: ‘module’ object is not callable

  10. Oi, boa tarde!
    Achei esse projeto muito massa! Mas tive um probleminha… No caso de o grupo ter emojin no nome como devo proceder para que funcione?

    1. Jhonatan de Souza

      seria necessário encontrar o equivalente do código ansii para fazer isso.
      Dê uma pesquisada sobre codigo ansii emoji e use eles.
      Não consigo te dar uma passo a passo detalhado. Mas isso já pode servir como início para suas buscar

  11. Sua didática e detalhamento é sensacional, não há como não aprender, parabéns!
    Você ganhou um inscrito vitalício, mas vai acabar recebendo as dúvidas também, kkkkkkk
    Não sou dev e estou iniciando com Python por hobby, então talvez seja uma pergunta estúpida, mas vai assim mesmo.
    Ao rodar o código aparece o erro: AttributeError: ‘list’ object has no attribute ‘click’
    Estou rodando em MAC, mas acho que não é esse o problema, então fiquei em dúvida se falta instalar alguma biblioteca?

    1. Jhonatan de Souza

      Fala moises, bem vindo ao site e obrigado pelo comentário!
      Sobre o erro que mencionou:
      Se você dar uma googlada vai perceber que o erro está dizendo que você está tentando enviar o click para uma lista de objetos(o que é impossível).
      Você só pode enviar o click para um único objeto.
      Isso significa que em algum momento você(provavelmente) digitou o código find_elements ao invés de find_element (no singular)
      Se for este o caso, basta remover o S do método find_elements e usar a versão no singular
      ‘list’ object has no attribute ‘click’

  12. Por questões de princípio não uso Chrome e sim Firefox. Estou tentando usar o geckodriver mas dá erro. Então gostaria de saber como converter o programa zapbot usando uma biblioteca equivalente para o Firefox?

    1. Jhonatan de Souza

      Entendi, a única coisa que mudaria seria a declaração inicial de como usar o geckodriver ao invéz do chromedriver.exe

  13. JHONATAN parabéns pela didática show, implementei o código mas ocorreu o erro abaixo, ainda não consegui descobri o aconteceu, as únicas mudanças em relação ao seu código são as duas primeiras linhas que não estão no blog, mas estão no youtube, o nome do grupo do Whatsapp e a mudança do nome do elemento do chat_box.

    DevTools listening on ws://127.0.0.1:54660/devtools/browser/e982577a-c5c0-4487-84d4-e159ee0bba2b
    [21816:6656:0421/155008.132:ERROR:browser_switcher_service.cc(238)] XXX Init()
    Traceback (most recent call last):
    File “f:/Google/Projeto_Bot_Whatsapp/zapbot.py”, line 36, in
    bot.EnviarMensagens()
    AttributeError: ‘WhatsappBot’ object has no attribute ‘EnviarMensagens’
    PS F:\Google\Projeto_Bot_Whatsapp>

    Segue o código:

    from selenium import webdriver
    import time

    class WhatsappBot:
    def __init__(self):
    # Parte 1 – A mensagem que você quer enviar
    self.mensagem = “Bom dia pessoal, veja o video que acabou de sair https://www.youtube.com
    # Parte 2 – Nome dos grupos ou pessoas a quem você deseja enviar a mensagem
    self.grupos_ou_pessoas = [“Revisão depois”]
    options = webdriver.ChromeOptions()
    options.add_argument(‘lang=pt-br’)
    self.driver = webdriver.Chrome(
    executable_path=r’./chromedriver.exe’, chrome_options=options)

    def EnviarMensagens(self):
    self.driver.get(‘https://web.whatsapp.com’)
    time.sleep(30)
    for grupo_ou_pessoa in self.grupos_ou_pessoas:
    campo_grupo = self.driver.find_element_by_xpath(
    f”//span[@title='{grupo_ou_pessoa}’]”)
    time.sleep(3)
    campo_grupo.click()
    chat_box = self.driver.find_element_by_class_name(‘_2tW_W’)
    time.sleep(3)
    chat_box.click()
    chat_box.send_keys(self.mensagem)
    botao_enviar = self.driver.find_element_by_xpath(
    “//span[@data-icon=’send’]”)
    time.sleep(3)
    botao_enviar.click()
    time.sleep(5)

    bot = WhatsappBot()
    bot.EnviarMensagens()

  14. Descobri qual era o problema no seu segundo código, na parte: “def EnviarMensagens(self):” no seu texto não está indentado, tá no começo da linha, se alguém copiar e não ajustar dá erro, mas se olhar na imagem seguinte dá pra perceber que deveria estar indentado, fiz esse ajuste e passou desse erro.

    1. Jhonatan de Souza

      ah sim, vou verificar.
      Obrigado
      Editado: Acabei de verificar e estava ok, é possível que o editor adicionou a indentação quando copiou e colou

  15. JHONATAN, testei o programa e funcionou, aproveitei e coloquei um tratamento de exceção pra checar envio de mensagens para pessoas e realmente parece esse bot não faz isso, envia mensagem apenas somente para grupos, é isso mesmo?

    1. Jhonatan de Souza

      o bot enviar mensagens para o nome das pessoas que estiverem dentro da lista, apenas isso.
      Então serve para ambos

  16. Estou com esse erro:

    {
    “resource”: “/C:/Users/Grimaldi/Desktop/bot whatsapp/whatsapp_bot.py”,
    “owner”: “python”,
    “code”: “undefined-variable”,
    “severity”: 8,
    “message”: “Undefined variable ‘time'”,
    “source”: “pylint”,
    “startLineNumber”: 29,
    “startColumn”: 13,
    “endLineNumber”: 29,
    “endColumn”: 13
    }

    O seu erro está aqui: “message”: “Undefined variable ‘time'”,
    Ou seja você está usando uma varia´vel que não foi declarada antes.
    Veja/leia o tutorial e certifique-se que essa variável(e qualquer outra que possa ter esquecido também) tenha sido declarada corretamente

  17. Olá, cara, eu fiz tudo certo (pelo q eu vi), mas n está funcionando, me ajuda aqui?

    from selenium import webdriver
    import time

    class WhatsappBot:
    def __init__(self):
    self.mensagem = “Testando”
    self.grupos = [“BOT”]
    options = webdriver.ChromeOptions()
    options.add_argument(‘lang=pt-br’)
    self.driver = webdriver.Chrome(executable_path=r’./chromedriver.exe’)

    def EnviarMensagens(self):
    # BOT
    #
    #

    self.driver.get(‘https://web.whatsapp.com’)
    time.sleep(30)
    for grupo in self.grupos:
    grupo = self.driver.find_element_by_xpath(f”//span[@title='{grupo}’]”)
    time.sleep(3)
    grupo.click()
    chat_box = self.driver.find_element_by_class_name(‘_1Plpp’)
    time.sleep(3)
    chat_box.click()
    chat_box.send_keys(self.mensagem)
    botao_enviar = self.driver.find_element_by_xpath(“//span[@data-icon=’send’]”)
    time.sleep(3)
    botao_enviar.click()
    time.sleep(5)

    bot = WhatsappBot()
    bot.EnviarMensagens()

    Quando eu rodo, aparece isso:

    Editei seu comentário pq estava gigante. O seu erro está apenas na última linha
    selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 77

    A versão do chrome driver que você instalou está incorreta, veja esse vídeo que criei que ensina como instalar a versão correta : https://www.youtube.com/watch?v=Ot10qzrb13c
    Fazendo isso o restante deve funcionar

    1. Ola,
      Neste caso,
      Toda vez que o navegador Chrome for atualizado, temos que atualizar WebDriver também?
      Isso?. Para evitar esse erro?

  18. Incrível cara!!!
    Fui acompanhando passo a passo…
    Deram uns errinhos aqui, mas fui olhando com detalhe o que falava em cada um.
    E no final, não tava carregando a url do whats no chrome, mas era pq o segundo def não tava indentado corretamente.
    Parabéns! vou passar a acompanhar sempre seus conteúdos!
    E quando terminar as minhas demandas aqui, quero participar de um curso seu. Achei top conseguir fazer uma coisa funcional!!!!

  19. O meu deu o seguinte erro:
    Bluetooth: bluetooth_adapter_winrt.cc:1055 Getting Default Adapter failed.
    🙁

    1. Jhonatan de Souza

      Fala antonio, não cheguei a ver este erro antes, teria que dar uma pesquisada para tentar encontrar uma solução

  20. ola, boa tarde
    o meu esta dando 9 erros, poderia me ajudar?
    os erros são:
    Undefined variable ‘webdriver’
    Undefined variable ‘webdriver’
    Undefined variable ‘time’
    Undefined variable ‘time’
    Undefined variable ‘time’
    Undefined variable ‘time’
    Undefined variable ‘time’
    Instance of ‘WhatsappBot’ has no ‘EnviarMensagens’ member
    Unused variable ‘EnviarMensagens’

    eu botei a mesma quantidade de erros que mostra lá
    se quiser eu mando as linhas de codigo que eu usei

  21. Cara fantastico sua didatica… tentei aqui e ainda estou tentando rodar em mac, mas estou tendo esse erro.

    File “/Users/andreribeiro/Desktop/BOT Projetos/BOTZap/zapbot.py”, line 16
    campo_grupo = self.driver.find_element_by_xpath(f”//span[@title='{grupo}’]”)
    ^
    SyntaxError: invalid syntax

    1. Como faria lá no código na parte de digitar a mensagem e nomes dos grupos ou pessoal, eu quando transformar de py para exe( console)? Exe: na parte de digitar a mensagem: colocaria, input(‘digite sua mensagem: ‘)??

      1. Armando C.G. Soares

        Baixei o teu código do Baixe o código usado neste vídeo: http://b.link/BaixarCodigoBotWhatsApp
        [Running] python -u “c:\RoboWatsap\bot_whatsapp\zapbot.py”
        File “c:\RoboWatsap\bot_whatsapp\zapbot.py”, line 18
        campo_grupo = self.driver.find_element_by_xpath(f”//span[@title='{grupo_ou_pessoa}’]”)
        ^
        SyntaxError: invalid syntax

  22. Boa tarde! POderia me ajudar ,meu código esta assim.
    class WhatsappBot:
    def __init__(self):
    # Parte 1 – A mensagem que você quer enviar
    self.mensagem = “Bom dia pessoal, veja o video que acabou de sair https://www.youtube.com
    # Parte 2 – Nome dos grupos ou pessoas a quem você deseja enviar a mensagem
    self.grupos_ou_pessoas = [“GRUPO DA FAMÍLIA”, “GRUPO DE VENDAS”]
    options = webdriver.ChromeOptions()
    options.add_argument(‘lang=pt-br’)
    self.driver = webdriver.Chrome(
    executable_path=’C:/Users/gabri/OneDrive/Área de Trabalho/BotWhatsapp/.vscode/chromedriver.exe’, chrome_options=options)

    def EnviarMensagens(self):
    self.driver.get(‘https://web.whatsapp.com’)
    time.sleep(30)
    for grupo_ou_pessoa in self.grupos_ou_pessoas:
    campo_grupo = self.driver.find_element_by_xpath(
    f”//span[@title='{grupo_ou_pessoa}’]”)
    time.sleep(3)
    campo_grupo.click()
    chat_box = self.driver.find_element_by_class_name(‘_13mgZ’)
    time.sleep(3)
    chat_box.click()
    chat_box.send_keys(self.mensagem)
    botao_enviar = self.driver.find_element_by_xpath(
    “//span[@data-icon=’send’]”)
    time.sleep(3)
    botao_enviar.click()
    time.sleep(5)
    Mas aparece esse erro!
    Traceback (most recent call last):
    File “c:\Users\gabri\OneDrive\�rea de Trabalho\BotWhatsapp\.vscode\zapBot.py”, line 31, in
    bot = WhatsappBot()
    File “c:\Users\gabri\OneDrive\�rea de Trabalho\BotWhatsapp\.vscode\zapBot.py”, line 7, in __init__
    options = webdriver.ChromeOptions()
    NameError: name ‘webdriver’ is not defined

    Alguém poderia me ajudar?

  23. Meu Amigo Jonathan

    Continuo tentando e está me dando este erro, você poderia por favor me orientar, muito obrigado pela sua atenção.

    self.driver = webdriver.chrome(executable_path=r’C:./chromedriver.exe’, Chrome_options=options)
    TypeError: ‘module’ object is not callable

    C:\Users\usuario\Desktop\BotWhats>C:/Users/usuario/AppData/Local/Programs/Python/Python38-32/python.exe c:/Users/usuario/Desktop/BotWhats/zapbot.py
    Traceback (most recent call last):
    File “c:/Users/usuario/Desktop/BotWhats/zapbot.py”, line 31, in
    bot = whatsappBot()
    File “c:/Users/usuario/Desktop/BotWhats/zapbot.py”, line 10, in _init_
    self.driver = webdriver.chrome(executable_path=r’./chromedriver.exe’, Chrome_options=options)
    TypeError: ‘module’ object is not callable

  24. O MEU NAO ENVIOU NAO, FIZ TUDO COMO ORIENTADO, VEIO ESSA MSG

    IndentationError: unexpected indent
    PS D:\SOFTWARE\Robo whats\bot whats> & C:/Users/RALLY/AppData/Local/Programs/Python/Python38-32/python.exe “d:/SOFTWARE/Robo whats/bot whats/whatsapp_bot.py”

    A indentação está incorreta, veja se o espaçamento está correto em todas as linhas do seu código.
    Se nunca ouviu falar sobre identação no python veja aqui https://www.portugal-a-programar.pt/forums/topic/72954-resolvido-uma-correcta-indenta%C3%A7%C3%A3o/

  25. Gostei muito do treinamento, mas o meu ainda não está funcionando. como eu tinha outras instalações antigas de Python no notebook e desinstalei tudo. Começou a dar problema de path, a instalação não estava consertando sozinha, dei uma mexida nas variáveis do sistema, mas acho que não deu certo, pois o erro que sempre dá é:
    Traceback (most recent call last):
    File “zapbot.py”, line 33, in
    bot.EnviarMensagens()
    File “zapbot.py”, line 16, in EnviarMensagens
    self.driver.get(‘https://web.whatsapp.com’)
    AttributeError: ‘WhatsappBot’ object has no attribute ‘driver’

    O programa:
    from selenium import webdriver
    import time

    class WhatsappBot:
    def _init_(self):
    self.mensagem = “Boa tarde , Teste 1!”
    self.grupos = [“Mano1″,”Filho”]
    options = webdriver.ChromeOptions()
    options.add_argument(‘lang=pt-br’)
    self.driver = webdriver.Chrome(executable_path=r’./chromedriver.exe’)
    self.driver = webdriver.Chrome(executable_path=r’./chromedriver.exe’, chrome_options=options)

    def EnviarMensagens(self):
    #Manuel Ziane
    #
    #
    self.driver.get(‘https://web.whatsapp.com’)

    time.sleep(30)

    for grupo in self.grupos:
    grupo = self.driver.find_element_by_xpath(f”//span[@title='{grupo}’]”)
    time.sleep(3)
    grupo.click()
    chat_box = self.driver.find_element_by_class_name(‘_1Plpp’)
    time.sleep(3)
    chat_box.click()
    chat_box.send_keys(self.mensagem)
    botao_enviar = self.driver.find_element_by_xpath(“//span[@data-icon=’send’]”)
    time.sleep(3)
    botao_enviar.click()
    time.sleep(5)

    bot = WhatsappBot()
    bot.EnviarMensagens()

    Me dê uma luz por favor!

    1. Estou achando que é problema com a importação do selenium. Quais deveriam ser as variáveis PATH para um bom funcionamento do Python? Já desinstalei 3 vezes o Python e nada deu certo.

  26. Marcelo Roberto

    Muito bom… parabéns!!! Aqui deu erro. Ele até abre a janela pra eu ler o QRCode mas não faz nada além disso. Exibe o erro no console:

    DeprecationWarning: use options instead of chrome_options
    self.driver = webdriver.Chrome(
    [15508:7616:0504/151414.548:ERROR:configuration_policy_handler_list.cc(90)] Unknown policy: EnableCommonNameFallbackForLocalAnchors
    [15508:7616:0504/151414.710:ERROR:configuration_policy_handler_list.cc(90)] Unknown policy: EnableCommonNameFallbackForLocalAnchors

    DevTools listening on ws://127.0.0.1:56095/devtools/browser/d88cff25-66a6-45cc-905b-a7066325d3df
    [15508:7616:0504/151414.949:ERROR:browser_switcher_service.cc(238)] XXX Init()
    [15508:7616:0504/151424.666:ERROR:device_event_log_impl.cc(162)] [15:14:24.675] Bluetooth: bluetooth_adapter_winrt.cc:1055 Getting Default Adapter failed.
    Traceback (most recent call last):
    File “c:/Users/G7 Workstation 4/Documents/Bot WhatsApp/zapbox.py”, line 36, in
    bot.EnviarMensagens()
    File “c:/Users/G7 Workstation 4/Documents/Bot WhatsApp/zapbox.py”, line 20, in EnviarMensagens
    campo_grupo = self.driver.find_element_by_xpath(
    File “C:\Program Files (x86)\Python38-32\lib\site-packages\selenium\webdriver\remote\webdriver.py”, line 394, in find_element_by_xpath
    return self.find_element(by=By.XPATH, value=xpath)
    File “C:\Program Files (x86)\Python38-32\lib\site-packages\selenium\webdriver\remote\webdriver.py”, line 976, in find_element
    return self.execute(Command.FIND_ELEMENT, {
    File “C:\Program Files (x86)\Python38-32\lib\site-packages\selenium\webdriver\remote\webdriver.py”, line 321, in execute
    self.error_handler.check_response(response)
    File “C:\Program Files (x86)\Python38-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py”, line 242, in check_response
    raise exception_class(message, screen, stacktrace)
    selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {“method”:”xpath”,”selector”:”//span[@title=’Família – Grupo’]”}
    (Session info: chrome=81.0.4044.129)

    Sabe o que poderia ser?

  27. Judson Ferreira

    Boa noite meu amigo, Desde já parabéns pelo vídeo e o tutorial muito top mesmo, no meu deu um erro mais da pra ver nítido que é na parte da mensagens para o grupo o boot vai fazendo oque é pra fazer mais na hora de escrever a mensagem não acontence.
    o erro é esse
    zapbot.py:13: DeprecationWarning: use options instead of chrome_options
    self.driver = webdriver.Chrome(

    DevTools listening on ws://127.0.0.1:59487/devtools/browser/e5515c54-72f0-44a2-a07a-a6a278b16ad3
    [12152:7176:0505/004749.691:ERROR:browser_switcher_service.cc(238)] XXX Init()
    [12152:7176:0505/004758.275:ERROR:device_event_log_impl.cc(162)] [00:47:58.276] Bluetooth: bluetooth_adapter_winrt.cc:1055 Getting Default Adapter failed.
    Traceback (most recent call last):
    File “zapbot.py”, line 36, in
    bot.EnviarMensagens()
    File “zapbot.py”, line 24, in EnviarMensagens
    chat_box = self.driver.find_element_by_class_name(‘_13mgZ’)
    File “C:\Users\User\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\remote\webdriver.py”, line 564, in find_element_by_class_name
    return self.find_element(by=By.CLASS_NAME, value=name)
    File “C:\Users\User\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\remote\webdriver.py”, line 976, in find_ele self.error_handler.check_response(response)
    File “C:\Users\User\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py”, line 242, 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”:”._13mgZ”}
    (Session info: chrome=81.0.4044.129)

    PS C:\Users\User\Desktop\bot_whatsapp_envio_mensagens-master>
    PS C:\Users\User\Desktop\bot_whatsapp_envio_mensagens-master>
    PS C:\Users\User\Desktop\bot_whatsapp_envio_mensagens-master> py.exe zapbot.py
    zapbot.py:13: DeprecationWarning: use options instead of chrome_options
    self.driver = webdriver.Chrome(

    DevTools listening on ws://127.0.0.1:60212/devtools/browser/5947e19f-9b2e-473a-bcb6-c14fb29a8518
    [8872:12992:0505/005531.454:ERROR:browser_switcher_service.cc(238)] XXX Init()
    [8872:12992:0505/005539.693:ERROR:device_event_log_impl.cc(162)] [00:55:39.693] Bluetooth: bluetooth_adapter_winrt.cc:1055 Getting Default Adapter failed.
    Traceback (most recent call last):
    File “zapbot.py”, line 36, in
    bot.EnviarMensagens()
    File “zapbot.py”, line 24, in EnviarMensagens
    chat_box = self.driver.find_element_by_class_name(‘_13mgZ’)
    File “C:\Users\User\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\remote\webdriver.py”, line 564, in find_element_by_class_name
    return self.find_element(by=By.CLASS_NAME, value=name)
    File “C:\Users\User\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\remote\webdriver.py”, line 976, in find_element
    return self.execute(Command.FIND_ELEMENT, {
    File “C:\Users\User\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\remote\webdriver.py”, line 321, in execute
    self.error_handler.check_response(response)
    File “C:\Users\User\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py”, line 242, 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”:”._13mgZ”}
    (Session info: chrome=81.0.4044.129)

  28. {
    “resource”: “/c:/Users/Sandra/Desktop/bot whatsapp/Whatsapp_bot.py”,
    “owner”: “python”,
    “code”: “syntax-error”,
    “severity”: 8,
    “message”: “unexpected indent (, line 11)”,
    “source”: “pylint”,
    “startLineNumber”: 11,
    “startColumn”: 13,
    “endLineNumber”: 11,
    “endColumn”: 13
    }

    como resolvo esse erro por grntileza

    tenho essa versao de codigo

    [editei seu código, porque o erro já está na primeira parte que comentou,]

    aguardo obrigada

    1. Jhonatan de Souza

      [editei seu código, porque o erro já está na primeira parte que comentou,]
      “message”: “unexpected indent (, line 11)”,

      Verifique a identação do código, que está diferente do que passei.
      Caso não saiba o que é identação, eu estou me referindo aos espaços entre cada linha

  29. Gabriel Vianna

    Fala pessoal, consegui rodar o tutorial!

    Meu objetivo é criar um bot de diálogo de atendimento.

    Vou listar os problemas que eu tive e como eu resolvi.

    1. Importação da classe webdriver (NameError: name ‘webdriver’ is not defined)
    Adicionei no inicio do code a linha: from selenium import webdriver

    2. Indentação do conteúdo da função EnviarMensagens()
    Shift + TAB no conteúdo que tava deslocado.

    3. Traceback… DeprecationWarning: use options instead of chrome_options
    Na linha,
    self.driver = webdriver.Chrome(executable_path=r’./chromedriver.exe’, chrome_options=options)
    troquei “chrome_options” por “options”, ficando “options=options”

    4. Traceback… in EnviarMensagens
    chat_box = self.driver.find_element_by_class_name(‘_13mgZ’)

    Cliquei com o botão direito no header do WhatsAppWeb, e escolhi a opção “Inspecionar”.

    A tela é divida e o código fonte da página é exibido.
    Primeiro procurei por “_13mgZ” e o resultado foi zero ocorrências.
    Quer dizer que o nome da classe mudou e precisava ser atualizado no Python.
    Procurei no código fonte da página pelo nome do grupo desejado. Encontrei:

    Grupo Teste

    No Python, no lugar de “_13mgZ”, tentei usar cada uma das classes (“_1wjpf”, “_3NFp9”, “_3FXB1”). Mas eu recebi os logs:

    Message: element not interactable
    ou
    Message: stale element reference: element is not attached to the page document

    Então percebi que precisava modificar um pouco o code. Ficou assim:


    # Esta linha serviu para abrir o chat do grupo.
    chat_box = self.driver.find_element_by_class_name(‘_3NFp9′)
    time.sleep(3)

    # Esta linha e a próxima serviram para encontrar o campo onde o texto é digitado.
    # Sem esta linha, é encontrado o campo de texto lateral de pesquisa.
    chat_box = self.driver.find_element_by_xpath(“//div[@id=’main’]”)

    # Foi preciso inspecionar elemento para identificar a classe “_2S1VP”.
    chat_box = chat_box.find_element_by_class_name(‘_2S1VP’)

    chat_box.click()

    OBS 1: Na árvore do código fonte da página, outras classes além de “_3NFp9” serviram para abrir o chat do grupo. Como eu deixei 5 conversas visíveis, as classes que apareciam 5 vezes eram candidatas a serem usadas.

    OBS 2: No futuro, é possível que as classes sejam novamente atualizadas. Neste caso, a minha recomendação é inspecionar os elementos e identificar as classes atuais.

    Já usei o Selenium em Java em outras aplicações.
    Não sei se usar o Selenium é o ideal para criar um bot de atendimento.
    Vou continuar procurando outros métodos.
    Agradeço pelo post e espero ter contribuído.

    Abraços.

    1. Gabriel Vianna

      O comentário acabou omitindo texto, exibindo apenas “Grupo Teste” por causa do uso das tags .

      Quando eu procurei no código fonte da página pelo nome do grupo desejado, encontrei:

      span dir=”auto” title=”Grupo Teste” class=”_1wjpf _3NFp9 _3FXB1″

  30. Jhonatan, fantástico vou baixar essa semana. E tem alguma ferramenta que consigo usar o mesmo Whats em mais que um computador ? Vi que tem mais produtos pagos e caros, pois é mensal.

  31. Patricia de Menezes

    Ola boa tarde!
    Primeiramente quero parabenizar pelo conteúdo, estou aprendendo python e seu projeto foi muito bacana para o aprendizado.

    Agora se puder gostaria de uma ajuda sua Jhonatan. estou com problema na execução do meu mmeu programa, mais precisamente no codigo {chat_box.send_keys(self.mensagem)} – aparece a mensagem “ocorreu excecao: ElementNotinTeractableException”
    mensagem: element not interactable

    Nao consegui resolver.

    1. Patrícia de Menezes Barbosa

      Ola boa tarde!
      Primeiramente quero parabenizar pelo conteúdo, estou aprendendo python e seu projeto foi muito bacana para o aprendizado.

      Agora se puder gostaria de uma ajuda sua Jhonatan. estou com problema na execução do meu mmeu programa, mais precisamente no codigo {chat_box.send_keys(self.mensagem)} – aparece a mensagem “ocorreu excecao: ElementNotinTeractableException”
      mensagem: element not interactable

      Nao consegui resolver.

      @ JHONATAN DE SOUZA Consegue me ajudar com esse problema?

      Desde ja agradeco a atencao.

      1. Acho que a pergunta dele é a mesma que eu ia fazer. Tem como usar este bot para enviar imagens? Ou ele funciona apenas com texto?

  32. from selenium import webdriver
    import time

    class WhatsappBot:
    def __init__(self):
    # parte 1 – mensagem que você quer enviar
    self.mensagem = “boa tarde”
    self.grupos = [“G”]
    options = webdriver.ChromeOptions()
    options.add_argument(‘lang=pt-br’)
    self.driver = webdriver.Chrome(executable_path=’C:/Users/pedro/Desktop/bot whats/chromedriver.exe’)

    def EnviarMensagens(self):
    self.driver.get(‘https://https://web.whatsapp.com/’)
    time.sleep(30)
    for grupo_ou_pessoa in self.grupos_ou_pessoas :
    campo_grupo= self.driver.find_element_by_xpatch(f”//span[@title='{grupo_ou_pessoa}’]”)
    time.sleep(3)
    campo_grupo.click()
    chat_box = self.driver.find_element_by_class_name(‘_1Plpp’)
    time.sleep(3)
    chat_box.click()
    chat_box.send_keys(self.mensagem)
    botao_enviar = self.driver.find_element_by_xpatch(“//span[@data-icon=’send’]”)
    time.sleep(3)
    botao_enviar.click()
    time.sleep(5)

    bot = WhatsappBot()
    bot.EnviarMensagens()

    creio que digitei tudo certo porem ele da erro no bot.EnviarMensagens() ja tentei de tudo e não consigo resolver

  33. Olá! Quero agradecer antes pelo tutorial! Mas no meu esta dando erro seguinte mensagem
    “line 7, in __init__
    options = webdriver.ChromeOptions()
    NameError: name ‘webdriver’ is not defined”
    Deve ser por causa desse webdriver difere a versao atual do meu Google sendo que não tem pra donwload. Versão atual chrome 83.0.4103.61 (Versão oficial) 64 bits
    Tem algo pode ser feito?

    E como faço pra mandar pra lista dos meus contatos números não salvos tem como?

  34. Vinícius Lopes

    Parabéns pela didática. Consegui seguir todo o tutorial. Estou rodando em Linux Mint 64, Gogle Chrome 83.
    Chega a abrir o Whatsapp Web, mas dá o seguinte erro:
    File “/home/vinicius/Área de Trabalho/Bot Whatsapp/venv/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py”, line 242, in check_response
    raise exception_class(message, screen, stacktrace)
    selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: Unable to locate an element with the xpath expression //span[@title={grupo}] because of the following error:
    SyntaxError: Failed to execute ‘evaluate’ on ‘Document’: The string ‘//span[@title={grupo}]’ is not a valid XPath expression.
    (Session info: chrome=83.0.4103.97)

    Vi que mais alguns tem um erro parecido.

  35. Ola..

    Excelente post..
    Fiz o procedimento mas esta apresentando o seguinte erro:

    AttributeError: ‘WhatsappBot’ object has no attribute ‘driver’

    Alguém poderia me dar uma dica?
    Obrigado

  36. Luiz J. Bruno

    Olá Mestre, Boa noite!

    Poderia fazer no Pycharm? É possível criar uma aplicação para os usuários utilizarem para os seus contatos?
    Aguardando a abertura das inscrições do seus curso.

    No aguardo. Obrigado.

    Luiz Bruno

  37. Caro Jonathan.

    Primeiramente valeu pelo video, muito bom e um projeto bem legal para usar os loops e variables que eu particularmente tenho aprendido vendo os videos teus.

    Quanto ao projeto de automacao de mensagens eu fiquei trancado em um erro de sintax na linha 22

    File “zapbot.py”, line 22
    field_group = self.driver.find_element_by_xpath(f”//span[@title='{group}’]”)
    ^
    SyntaxError: invalid syntax

    o problema que eu identifiquei (eu acho) foi que a funcao str representada pelo f, ta causando um erro que eu nao consigo resolver sozinho. eu tentei substituir a linha (f”//span[@title='{group}’]”) por (str(“//span[@title='{group}’]”)), e o programa abriu porem na hora de encontrar os grupos um erro similar ocorreu.

    quando eu subtituo a parte {group} no codigo por um nome de um dos meus grupos, (sem o f no inicio do parentses) a mensagem eh enviada (se eu tenho 5 grupos diferentes em self.groups a mensagem eh mandada para o mesmo grupo 5 vezes)

    enfim, se puder dar uma luz ficarei muito agradecido pois tenho certeza que a hora que eu descobrir o bug, vai ser algo muito imbecil que vai me irritar profundamente 🙂

    abraco e obrigado pela atencao

  38. Olá, estou terminando o curso de javascript, que por sinal é ótimo, para assumir uma vaga específica na empresa onde trabalho. Muito obrigado pela iniciativa. Sou ainda um iniciante, mas com bastante vontade de aprendizado.

  39. Anderson Luis Silva de Freitas

    ola boa noite
    o meu aparece uma mensagem assim
    Instance of ‘zapbot’ has no ‘EnviarMensagens’ member
    {
    “resource”: “/c:/Users/alean/Desktop/boot whatsapp/zapbot.py”,
    “owner”: “python”,
    “code”: “no-member”,
    “severity”: 8,
    “message”: “Instance of ‘zapbot’ has no ‘EnviarMensagens’ member”,
    “source”: “pylint”,
    “startLineNumber”: 33,
    “startColumn”: 1,
    “endLineNumber”: 33,
    “endColumn”: 1
    }
    o que estou errando
    obrigado

  40. Cara, acabei encontrando este artigo sem querer, mas parece ser muito proveitoso, tentarei reproduzir depois, desde já agradeço por compartilhar seus conhecimentos.

  41. Wagner Dantas

    Estou com esse problema:

    AttributeError: ‘WhatsappBot’ object has no attribute ‘driver’
    PS D:\Meus Documentos\Desktop\Bot Whatsapp> py.exe zapbot.py

  42. GUILHERME DIAS

    Olá, eu fiz o funcionou perfeitamente.

    Tem como pular a verficação por QR CODE?
    Tipo ele conectar automaticamente??

  43. Olá! Meu nome é Henrique e estou finalizando seu curso de JavaScript no YouTube, e inclusive estou enviando essa mensagem pelo Console conforme explicado no curso. Sensacional! Meus parabéns pelo conteúdo e muito obrigado por compartilhar!!

  44. roberta moreira

    Bom dia JHONATAN, conheci seu trabalho hoje e primeiramente meus parabéns, virei fã.
    No entanto, estou elaborando um bot onde o objetivo dele é responder automaticamente as pessoas que entrarem em contato, considerando que eu não tenho os usuários delas salvos.

  45. Opa, boa noite
    Tive um problema,onde, no terminal se da a seguinte mensagem:
    PS C:\Users\Ultrabook\Desktop\Bot Whatsapp> & C:/Users/Ultrabook/AppData/Local/Programs/Python/Python38-32/python.exe “c:/Users/Ultrabook/Desktop/Bot Whatsapp/whatsapp_bot.py”ms/Python/Python38-32/python.exe “c:/Users/Ultrabook/Desktop/Bot Whatsapp/whatsapp_boptions instead of chrome_optionst.py”
    c:/Users/Ultrabook/Desktop/Bot Whatsapp/whatsapp_bot.py:13: DeprecationWarning: use options instead of chrome_options f12eb647714
    self.driver = webdriver.Chrome(

    DevTools listening on ws://127.0.0.1:50950/devtools/browser/e358591d-3225-40e5-86a0-ff12eb647714

    Traceback (most recent call last):
    File “c:/Users/Ultrabook/Desktop/Bot Whatsapp/whatsapp_bot.py”, line 36, in
    bot.EnviarMensagens()
    File “c:/Users/Ultrabook/Desktop/Bot Whatsapp/whatsapp_bot.py”, line 24, in EnviarMensagens
    chat_box = self.driver.find_element_by_class_name(‘_13mgZ’)
    File “C:\Users\Ultrabook\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\remote\webdriver.py”, line 564, in find_element_by_class_name
    return self.find_element(by=By.CLASS_NAME, value=name)
    File “C:\Users\Ultrabook\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\remote\webdriver.py”, line 976, in find_element
    return self.execute(Command.FIND_ELEMENT, {
    File “C:\Users\Ultrabook\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\remote\webdriver.py”, line 321, in execute
    self.error_handler.check_response(response)
    File “C:\Users\Ultrabook\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py”, line 242, 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”:”._13mgZ”}
    (Session info: chrome=84.0.4147.105)

    PS C:\Users\Ultrabook\Desktop\Bot Whatsapp> [5172:5296:0804/211123.879:ERROR:device_event_log_impl.cc(208)] [21:11:23.880] Bluetooth: bluetooth_adapter_winrt.cc:736 GetBluetoothAdapterStaticsActivationFactory failed: Classe nÒo registrada (0x80040154)

    Agradeceria a ajuda

  46. Pingback: Como criar um bot no telegram - chatbot DO ZERO - Dev Aprender

  47. Dev, mt show cara. Como eu adapto esse código pra enviar a mensagem pra contatos individuais? (São muitos kk) todos estão salvos no telefone.

  48. Parabéns pelo vídeo, muito bom!
    Funcionou aqui apenas para um nome, todos os outros que coloco ele diz que não localiza, já conferi os nomes e estão escritos corretamente, mas não localiza.
    O que pode estar acontecendo?

  49. JEAN SOUSA CSOMO SOBRINHO

    bom dia
    Achei muito interessante a aula, você foi diretamente ao ponto, foi confiante, isso é importante para quem ta iniciando programação, ((esse é meu caso)), segui suas dicas mas acho que houve vacilo da minha parte….
    _________________________________________________
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    import time

    class WhatsappBot:
    def _init_(self):
    # Parte 1 – A mensagem que você quer enviar
    self.mensagem = “Bom dia pessoal, veja o video que acabou de sair https://www.youtube.com
    # Parte 2 – Nome dos grupos ou pessoas a quem você deseja enviar a mensagem
    self.grupos_ou_pessoas = [“GRUPO DA FAMÍLIA”, “GRUPO DE VENDAS”]
    options = webdriver.ChromeOptions()
    options.add_argument(‘lang=pt-br’)
    self.driver = webdriver.Chrome(
    executable_path=r’./chromedriver.exe’, chrome_options=options)

    def EnviarMensagens(self):
    self.driver.get(‘https://web.whatsapp.com’) >>>>>>>erro na linha 18
    time.sleep(30)
    for grupo_ou_pessoa in self.grupos_ou_pessoas:
    campo_grupo = self.driver.find_element_by_xpath(
    f”//span[@title='{grupo_ou_pessoa}’]”)
    time.sleep(3)
    campo_grupo.click()
    chat_box = self.driver.find_element_by_class_name(‘_13mgZ’)
    time.sleep(3)
    chat_box.click()
    chat_box.send_keys(self.mensagem)
    botao_enviar = self.driver.find_element_by_xpath(
    “//span[@data-icon=’send’]”)
    time.sleep(3)
    botao_enviar.click()
    time.sleep(5)

    bot = WhatsappBot()
    bot.EnviarMensagens()>>>>>>>erro na linha 36
    ________________________________________________________________________________
    resultado TERMINAL

    Windows PowerShell
    Copyright (C) Microsoft Corporation. Todos os direitos reservados.

    Experimente a nova plataforma cruzada PowerShell https://aka.ms/pscore6

    PS E:\newbot> & C:/Users/studio/AppData/Local/Programs/Python/Python38-32/python.exe e:/newbot/whatsapp_bot.py
    Traceback (most recent call last):
    File “e:/newbot/whatsapp_bot.py”, line 36, in
    bot.EnviarMensagens()
    File “e:/newbot/whatsapp_bot.py”, line 18, in EnviarMensagens
    self.driver.get(‘https://web.whatsapp.com’)
    AttributeError: ‘WhatsappBot’ object has no attribute ‘driver’
    PS E:\newbot>

  50. Boa tarde! Esse bot pode ser usado por muito tempo sem que o WhatsApp bloqueie o número ou esse problema ainda não foi resolvido?

  51. Cara vc é muito inteligente, obrigada por compartilhar seu conhecimento, vou demorar uns 3 dias pra fazer isso! rsrsrsrs Valeu!

  52. Renato Dantas

    Muito boa a aula!
    Seria possível implementar um código para adição de imagens?
    Tentei mas estou enfrentando vários problemas:
    def enviar_foto(foto):
    #class _295He
    image_box = driver.find_element_by_xpath(‘//div[contains(@class,”_295He”)]’)
    image_box.click()
    #_1dxx-
    input_box = driver.find_element_by_class_name(“_1dxx-“)
    input_box.send_keys(foto)
    input_box.send_keys(Keys.ENTER)

    Essa função recebe o endereço da foto, mas no whats é aberto a tela de busca de imagens e para nisso!
    Se puder dar uma luz aqui agradeço!
    Abraço!

  53. Olá…

    É possível reconhecer mensagens recebidas no Whatsapp Web para usar como variável para envio de respostas automáticas?

  54. Ola, estou seguindo os passos da aula porem as imagens de exemplo nao estão carregando, elas estão com link quebrado

  55. Fui fazer hoje e tive que mudar essa linha

    chat_box = self.driver.find_element_by_class_name(‘_2A8P4’)

    aparentemente mudou o nome da classe desde a publicação.

  56. Plínio Marinho

    Primeiramente muito obrigado pelo seu curso de javascript, só conhecia o javascript só por nome, porém suas aulas foram bem didáticas e objetivas. Hoje finalizo o seu curso com uma ideia como funciona o javascript.
    Parabéns mano e obrigado pelas aulas.
    Que Deus lhe abençoe e ilumine os seus projetos atuais e futuros.

  57. Olá! Estou em Luxemburgo tentando me inserir no mercado de desenvolvimento estudando pelo seu curso de JavaScript! Parabéns pelo material!

  58. Boa noite,

    Achei super interessante seu tutorial, apliquei com sucesso e estou trabalhando na evolução.

    Porém gostaria de saber como faço para acessar um grupo e coletar os dados dos participantes ( Nome, Foto e Telefone ) E a quantidade total.

    Muito obrigado.

  59. Comecei estudando Java em 2011 desejando criar aplicativos, não consegui terminar, fundi o cérebro, voltei agora em 1 de fevereiro de 2021 e estudei toda orientação a objeto do Java novamente, apenas para descobrir que já não se faz mais app com Java. Dai comecei a estudar React Native e vi que o pré requisito era saber JS e cai de paraquedas aqui, Termino hoje as ultimas aulas de JS aqui. Agora descubro que um dos apps que eu queria fazer, que era jsutamente um boot de whatsapp, tem aqui um curso afu pra isso em Pythom… bom.. here i going again…Parabéns Jhonathan tu é 10!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *