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ênioOU
pip3 instalar selênioIsso 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> pythonPython 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.
- Em primeiro lugar, pressione o F12 Uma página de origem é aberta no lado direito da janela, conforme exibido abaixo
- Agora pressione 'Ctrl + Shift + C'ou clique no símbolo presente no canto superior esquerdo da página de origem.
- Mova a seta 'Email ou telefonecampo 'e clique. Este elemento será selecionado e o código-fonte deste elemento é destacado na página de origem, conforme exibido abaixo. Pode-se ver que temos os seguintes atributos para o elemento selecionado
- nome = “email”
- class = “inputtext login_form_input_box”
- id = “email”
Podemos localizar 'Email ou telefoneelemento 'usando qualquer um dos atributos acima.
- Se não tivermos nenhum dos atributos mencionados acima, também podemos selecionar o elemento usando 'XPath'. Para copiar XPath, clique com o botão direito no código-fonte destacado na página de origem. Então vá para 'Copiar> Copiar XPath'.
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.
- find_element_by_class_name (nome)
- find_element_by_tag_name (nome)
- find_element_by_link_text (texto)
- find_element_by_css_selector (seletor)
- find_element_by_name (nome)
- find_element_by_id (id)
- find_element_by_xpath (XPath)
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 chavesPor 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 webdriverde 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êniofrom 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êniofrom 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 -eO comando acima irá abrir o arquivo crontab para editar. No final do arquivo, digite o seguinte comando.
0 8 * * * python / path / to / python / scriptVemos entradas antes do comando da direita para a esquerda.
- O primeiro asterisco, a partir da direita, significa que este comando será executado todos os dias da semana.
- O segundo asterisco significa que este comando será executado todos os meses
- O terceiro asterisco mostra que este comando será executado todos os dias do mês
- A quarta entrada é '8', o que significa que este script será executado na 8ª hora do dia
- A quinta entrada que é '0' significa que este comando será executado no minuto 0.
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.