Acessando whatsapp com Python e Selenium no Windows 10!


Fala, galera! 

Depois de muito tempo, vou botar o blog em dia, to pensando em fazer um Instagram pra postar as coisas que faço de vez em quando mas que não irão pro blog(a menos que peçam) e separar o blog da minha conta pessoal.

Mas, sem delongas, vamos de Python 2.7 + Selenium pra perturbar aquele seu amigo no Whatsapp web! Eu sei que tem soluções práticas pra fazer isso direto com Javascript, mas eu estava fazendo uma automação pra um chatbot (https://dialogflow.com) e usando o Python com Selenium pra enviar uma carga de frases pro chatbot responder e ir treinando o bichinho, e daí pensei se eu não conseguiria fazer o mesmo com o Whatsapp web. E pior que deu certo mesmo!

Vídeo demonstrativo do script funcionando: https://www.youtube.com/watch?v=zj-cy-ORVUQ

Eu testei tudo no Windows 10(64 bits), futuramente vou incluir os passos pro Ubuntu também.
Vou partir do princípio que você já tenha o Python 2.7, o pip e o navegador Google Chrome instalado no seu sistema, qualquer dúvida é só comentar.

O pip já vem instalado no Python para versões superiores à 2.7.9 que sejam baixadas do site oficial https://www.python.org
Quando este tutorial foi escrito, usei as seguintes versões:
  • Google Chrome: 66.0.3359.181 (Versão oficial) 64 bits
  • Chrome (web)Driver : 2.38
  • Python: 2.7.11
  • Selenium: 3.0.2
  • SelAssist(extensão instalada no Chrome): 0.0.3.10

A extensão SelAssist é bacana pois te ajuda a encontrar aquilo que você quer manipular no HTML e a pesquisar direto como você usaria aquele trecho na busca do Selenium.

Abaixo um exemplo simples de uso da extensão:
Inspecionando um elemento simples aqui

Clica na barra do SelAssist pra ele mostrar mais informações sobre o elemento

Escolhi uma classe desse elemento para testar

Aqui é depois de você pegar alguma propriedade do elemento(nesse caso a classe), serve para testar se realmente vêm o elemento que você está pensando, pois podem vir vários e você ter que tratar isso depois

 Bom, agora que eu acho você entendeu como usar(se quiser usar, né!), vamos partir pra instalar e testar o Selenium!

Aqui no meu Windows 10, a instalação do pip fica em C:\Python27\Scripts , daí acho mais fácil abrir o CMD pelo iniciar mesmo, digitar:
cd C:\Python27\Scripts

depois, verificar se está no diretório correto, usando o comando DIR pra listar os arquivos da pasta:
dir

e se estiver tudo ok, só usar o
pip.exe install selenium

e aguardar a instalação



Já baixou o Chrome (web)Driver? Tá lá em azul clarinho onde eu listei as versões das aplicações usadas no topo! Deixa ele na mesma pasta que o seu script python pra facilitar.


# -*- coding: utf-8 -*-
from random import *
import time #usada no sleep
from selenium import webdriver #usado pra abrir o navegador
from selenium.webdriver.common.keys import Keys #usado para enviar teclas especiais(tab, enter...)
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions as EC

LINK = "https://web.whatsapp.com/"
WEBDRIVER_CHROME = "chromedriver.exe"
USUARIO_OU_GRUPO = "Stark"

def envia_msg(elemento, msg):
 mensagem = msg.decode('utf-8', 'ignore')
 # print "\n########enviando mensagem '%s' para '%s'\n#############\n" %(mensagem, elemento)
 elemento.send_keys(mensagem)
 elemento.send_keys(Keys.RETURN)
 time.sleep(1)

driver = webdriver.Chrome(WEBDRIVER_CHROME)
driver.get(LINK)

for i in range(1,25):
        print "%i\n" %(i)
        time.sleep(1)
try:
        input_text = driver.find_element_by_tag_name("input")
        input_text.send_keys(USUARIO_OU_GRUPO)
        time.sleep(1)
        input_text.send_keys(Keys.TAB)
        input_text.send_keys(Keys.TAB)
        input_text.send_keys(Keys.TAB)
        time.sleep(1)
        input_text = driver.find_element_by_class_name("_2S1VP")
        envia_msg(input_text, "Olá, humano! A era das máquinas começa agora!")
        input_text.send_keys(Keys.RETURN)
except Exception, e:
        raise e



nesse caso eu mando mensagem pro meu amigo Stark, aí você escolhe isso lá no topo do programa e envio a mensagem "Olá, humano! A era das máquinas começa agora!" . Daí vocês escolhem o que é mais legal de mandar =)

E espero que o blogger não altere a marcação do python

*o tutorial não está tão completo quanto eu gostaria, mas pra ficar legal eu preciso de tempo, e alguma outra plataforma mais fácil de postar, o blogger já tá muito ultrapassado, pretendo migrar pra outra(aceito sugestões!) e ir fazendo uns tutoriais mais bacanas =)

Vídeo demonstrativo do script funcionando: https://www.youtube.com/watch?v=zj-cy-ORVUQ

Comentários

Postagens mais visitadas