Selênio

Automação do navegador usando Selenium (Python)

Automação do navegador usando Selenium (Python)
SELÊNIO é uma ferramenta baseada na web e de código aberto que é usada para controlar o navegador da web através de muitas linguagens de programação. É uma ferramenta de terceiros e está disponível para muitas linguagens de programação (e.g. Java, Python, C #, PHP etc.). Tem suporte para quase todos os navegadores. Neste tutorial, veremos como usar Selenium com Python porque Python fornece um ambiente confortável para usar esta ferramenta. Selenium API para Python permite que seu programa controle diretamente seu navegador de maneira semelhante a um humano. Ele pode abrir novas guias para você, preencher suas informações, enviar formulários, clicar em links diferentes e outras ações semelhantes. Aqui veremos como automatizamos nosso navegador usando selênio com Python.

Instalação de selênio

Antes de usar SELÊNIO módulo em python, temos que instalá-lo. Execute o seguinte comando no terminal para instalá-lo.

pip instalar selênio

OU

pip3 instalar selênio

Isso irá instalar SELÊNIO módulo e agora está pronto para usar.

Drivers da Web

Antes de automatizar o navegador da web usando o módulo SELENIUM, o driver da web do navegador escolhido é necessário. Para automatizar o navegador Chrome, devemos ter o driver da web do Chrome. O caminho, onde o arquivo do driver da web é colocado, é passado como argumento. O driver da web interage com o navegador da web por meio de um protocolo. Vá para o link a seguir para baixar drivers da Web de diferentes navegadores.

https: // www.selêniohq.org / download /

Começando

Depois de instalar os módulos necessários, você pode abrir python CLI e começar a brincar com seu navegador. Então, vamos importar o webdriver e outros módulos primeiro, esses módulos e classes permitirão que seu programa Python envie pressionamentos de tecla e outras informações para seu navegador.

C: \ Users \ Usama Azad> python
Python 3.6.4 (v3.6.4: d48eceb, 19 de dezembro de 2017, 06:54:40) [MSC v.1900 64 bits (AMD64)] no win32
Digite "ajuda", "direitos autorais", "créditos" ou "licença" para obter mais informações.
>>> do selênio import webdriver
>>> de selênio.driver da web.comum.chaves importar chaves
#caminho para seus drivers do Chrome
>>> driver = webdriver.Chrome ('C: \ chromedriver')

Isso abrirá uma nova janela do navegador Chrome para você. Agora você pode obter selênio para ir a qualquer site usando .método get (). Este método abre o site e esperará que ele carregue, então você pode inserir o próximo comando.

>>> motorista.get ("https: // www.Facebook.com ")

Como encontrar elementos em uma página da web

Podemos encontrar um elemento específico em uma página da web seguindo o método.

Localizando Elementos usando Selênio

Para localizar elementos em uma página da web, usamos 'find_element'método. A seguir estão os 'find_element'métodos disponíveis em SELÊNIO.

Usando os métodos acima, podemos localizar um elemento em uma página da web e usá-lo em nosso código de automação.

Clicar em diferentes elementos da página da web

O método click () no selênio pode ser usado para clicar em diferentes links e elementos de botão que você encontrou usando os métodos acima. Por exemplo, você deseja clicar em “Conta esquecida?”Na página do Facebook

>>> link_button = driver.find_element_by_link_text ('Conta esquecida?')
>>> link_button.clique()

Enviar Chaves Especiais

Selenium também tem um módulo que permite enviar chaves especiais (e.g, Enter, Escape, Page down, page up etc.) enquanto navega na web. Você precisa importar este módulo usando o seguinte comando

>>> de selênio.driver da web.comum.chaves importar chaves

Por exemplo, você está lendo um artigo na Wikipedia sobre a história dos Estados Unidos, mas está com preguiça de pressionar a tecla de seta para BAIXO depois de um tempo. Você pode automatizar enviando esta chave para o navegador usando Selenium

from selenium import webdriver
de selênio.driver da web.comum.chaves importar chaves
tempo de importação
driver = webdriver.Chrome ('C: \ chromedriver')
#Abra o link do artigo usando o método get
motorista.get ("https: // en.wikipedia.org / wiki / Estados Unidos ")
#Comece desde o início da página
elem = driver.find_element_by_tag_name ('html')
enquanto verdadeiro:
 
Tempo.dormir (5)
elem.send_keys (chaves.BAIXA)

Como automatizar o navegador

Nesta seção, veremos como automatizar nosso navegador da web com a ajuda de alguns casos de uso.

Faça login em sites de mídia social automaticamente

Com a automação da web, você pode facilmente tornar seu processo de login automático. Se você verifica seus sites de mídia social em um horário específico (digamos, 20h) regularmente, é bom automatizar esse processo. A seguir está o código para automatizar o processo de login de dois sites de mídia social 'facebook' e 'twitter' usando SELÊNIO módulo em Python.

# importando webdriver do módulo de selênio
from selenium import webdriver
 
# importando chaves especiais do selênio
de selênio.driver da web.comum.chaves importar chaves
 
# criando objeto 'driver' para 'Google-Chrome'
driver = webdriver.Chrome ('caminho para o driver do Chrome')
 
# maximizando a janela
motorista.maximize_window ()
 
# abrindo facebook
motorista.obter('http: // www.Facebook.com')
 
# localizando o elemento 'E-mail ou telefone' usando o atributo 'id'
userName = driver.find_element_by_id ('email')
 
# Digitando o nome de usuário ou o e-mail do facebook
nome do usuário.send_keys ('Digite o nome de usuário / e-mail')
 
# localizando o elemento 'Senha' usando o atributo 'id'
passWord = driver.find_element_by_id ('passar')
 
# inserindo senha para o facebook
senha.send_keys ("Digite a senha")
 
# localizando o elemento 'botão de login' usando o atributo 'id' e pressionando 'Enter'
motorista.find_element_by_id ('u_0_b').send_keys (chaves.ENTRAR)
 
# abrindo nova aba para o twitter
motorista.execute_script ("janela.abrir ('http: // www.Twitter.com ',' tab2 '); ")
 
# alternando para uma nova guia
motorista.switch_to_window ('tab2')
 
#locating elemento 'log in' e clicando nele
motorista.find_element_by_xpath ('// * [@ id = "doc"] / div / div [1] / div [1] / div [2] / div [1]').clique()
 
# localizando o elemento 'Telefone, e-mail ou nome de usuário'
userName = driver.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form /
fieldset / div [1] / input ')
 
# inserindo nome de usuário para twitter
nome do usuário.send_keys ('Digite o nome do usuário')
 
# localizando o elemento 'Senha'
passWord = driver.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form /
fieldset / div [2] / input ')
# inserindo senha para twitter
senha.send_keys ('Digite a senha')
# localizando o botão 'logar' e clicando nele
motorista.find_element_by_xpath ('// * [@ id = "page-container"] / div / div [1] / form / div [2] / botão')
.clique()

O código acima automatiza o navegador para fazer login em sites de mídia social. Em primeiro lugar, criamos um objeto do nosso navegador favorito. Neste caso de uso, consideramos 'Chrome' como um navegador. Para criar o objeto, passamos o caminho do nosso 'chromedriver' como um argumento. Então entramos na url do facebook e logamos no Facebook selecionando elementos e passando nome de usuário e senha.

Depois disso abrimos uma nova aba e entramos na url do twitter. Depois disso, mudamos para a nova guia, pois o controle do código ainda estava na primeira guia, embora a segunda estivesse aberta. Em seguida, logamos no Twitter selecionando elementos e passando nome de usuário e senha.

Automação de compras online

Outro bom exemplo de automação de navegador pode ser a compra online. Por exemplo, você deseja comprar uma câmera online, mas os preços são muito altos. Você verifica todos os dias se o preço está na sua faixa ou não. Esta tarefa pode ser automatizada usando SELÊNIO e você pode evitar a verificação do preço todos os dias. O código a seguir irá informá-lo por correio se o preço do seu produto desejado é acessível ou não. Se o produto desejado estiver à venda, o programa irá notificá-lo por e-mail.

# importando webdriver do módulo de selênio
from selenium import webdriver
 
# importing módulo smtplib para enviar e-mail
importar smtplib
 
# definindo função de mail para informar por e-mail
def mail ():
 
# estabelecendo conexão com o servidor gmail com nome de domínio e número da porta. 
Isso difere com cada provedor de e-mail
conexão = smtplib.SMTP ('smtp.gmail.com ', 587)
 
# diga olá para o servidor
conexão.Ehlo ()
 
# iniciando conexão TLS criptografada
conexão.starttls ()
 
# logar no servidor gmail com seu endereço principal e senha
conexão.login ('endereço de e-mail do remetente', 'senha')
 
# enviando e-mail para você mesmo informando sobre o preço da câmera
conexão.sendmail ('endereço de e-mail do remetente', 'endereço de e-mail do destinatário',
'Assunto: Você pode comprar a câmera')
 
# finalizando conexão
conexão.Sair()
# função de correio termina aqui
 
# iniciando o google chrome fornecendo o caminho de chromedriver como argumento
driver = webdriver.Chrome ('caminho para chromedriver')
 
# minimizando a janela do cromo
motorista.minimize_window ()
 
# abrindo draz.site pk
motorista.obter('https: // www.daraz.pk /')
 
# localizando elemento da barra de pesquisa usando o atributo id para pesquisar a câmera
searchBar = motorista.find_element_by_id ('q')
 
#writing camera na barra de pesquisa
Barra de pesquisa.send_keys ('câmera')
 
#locating search button element using xpath of element
search = driver.find_element_by_xpath ('// * [@ id = "topActionHeader"] / div / div [2] / div / div [2]
/ form / div / div [2] / botão ')
 
#clicando no botão de pesquisa
procurar.clique()
 
# localizando elemento de seu produto desejado usando o atributo xpath
product = driver.find_element_by_xpath ('// * [@ id = "root"] / div / div [3] / div [1] / div / div [1]
/ div [2] / div [1] / div / div / div [2] / div [2] / a ')
 
# clicando no produto desejado
produtos.clique()
 
# localizando elemento de preço usando o atributo xpath
preço = motorista.find_element_by_xpath ('// * [@ id = "module_product_price_1"] / div / div / span')
 
# extraindo texto do elemento de preço. Isso dá o preço do produto como 'Rs. 24.500 '
preço = preço.texto
 
# converter preço em string
Preço = str (preço)
 
# definindo um array vazio. Isso será usado na extração de dígitos do preço como '24500'
formulário 'Rs. 24.500 '
num = []
 
# lendo todas as entradas da cadeia de preços, uma por uma, usando o loop for
por x no preço:
 
# verificar se a entrada é um dígito ou não, pois queremos apenas dígitos no preço
se x.isdigit ():
 
# adicionando apenas dígitos à lista numérica
num.anexar (x)
 
# juntando todas as entradas da lista num. Agora, o preço é uma string contendo apenas dígitos
preço = ".juntar (num)
 
# converter string de preço em inteiro
preço = int (preço)
 
# verificar se o preço é acessível ou não
se preço <= 25000:
 
# função de call mail para informá-lo sobre o preço
correspondência()
 
# fechando o navegador
motorista.Sair()

O código acima abre daraz.pk site e procura a câmera e te informa por e-mail se o preço é acessível. Primeiro de tudo nós importamos SELÊNIO e SMTPLIB módulos. Em seguida, definimos a função 'mail' que envia e-mail informando que o preço é acessível, quando chamado.

Depois disso, abrimos o navegador Chrome usando chromedriver e pesquisamos por 'daraz.pk '. Em seguida, localizamos nosso produto desejado usando elementos e seus atributos. Como os elementos são encontrados e localizados, foi descrito acima. O preço que obtivemos foi uma string, então convertemos essa string em um inteiro e verificamos se o preço é acessível ou não. Se o preço for acessível, ligue para a função 'mail'.

Criando Cron Job

Os dois scripts de automação acima devem ser executados uma vez por dia em um horário específico. Podemos gerenciar isso usando cron job. Tarefas que são adicionadas ao crontab podem ser executadas em um horário específico repetidamente. Para adicionar as tarefas acima no crontab, primeiro execute o seguinte comando no Terminal Linux.

[email protegido]: ~ $ crontab -e

O comando acima irá abrir o arquivo crontab para editar. No final do arquivo, digite o seguinte comando.

0 8 * * * python / path / to / python / script

Vemos entradas antes do comando da direita para a esquerda.

Portanto, este comando será executado às 8 horas todos os dias.

Conclusão

Neste artigo, discutimos como você pode usar SELÊNIO junto com Python para automatizar seu navegador usando diferentes técnicas. Você pode automatizar sua rotina de trabalho diária, preencher formulários, baixar suas coisas e muito mais usando isso. Discutimos apenas dois exemplos aqui, mas você pode automatizar cada coisa que um ser humano pode fazer manualmente com o navegador.

O botão esquerdo do mouse não funciona no Windows 10
Se você estiver usando um mouse dedicado com seu laptop ou computador desktop, mas o o botão esquerdo do mouse não funciona no Windows 10/8/7 por algu...
O cursor pula ou se move aleatoriamente enquanto digita no Windows 10
Se você descobrir que o cursor do mouse pula ou se move por conta própria, de forma automática e aleatória ao digitar em um laptop ou computador com W...
Como reverter a direção de rolagem do Mouse e Touchpads no Windows 10
Mouse e Touchpads não apenas torna a computação mais fácil, mas mais eficiente e menos demorada. Não podemos imaginar uma vida sem esses dispositivos,...