Este artigo mostrará como configurar o selênio em sua distribuição Linux (i.e., Ubuntu), bem como como executar a automação da Web básica e a demolição da Web com a Biblioteca Selenium Python 3.
Pré -requisitos
Para experimentar os comandos e exemplos usados neste artigo, você deve ter o seguinte:
1) Uma distribuição Linux (de preferência Ubuntu) instalada no seu computador.
2) Python 3 instalado em seu computador.
3) PIP 3 instalado no seu computador.
4) O navegador do Google Chrome ou Firefox instalado no seu computador.
Você pode encontrar muitos artigos sobre esses tópicos no Linuxhint.com. Certifique -se de verificar esses artigos se precisar de mais assistência.
Preparando o ambiente virtual do Python 3 para o projeto
O ambiente virtual do Python é usado para criar um diretório isolado do projeto Python. Os módulos Python que você instalar usando PIP serão instalados apenas no diretório do projeto, em vez de globalmente.
O python virtualenv O módulo é usado para gerenciar ambientes virtuais de Python.
Você pode instalar o python virtualenv módulo globalmente usando o PIP 3, como segue:
$ sudo pip3 install virtualenvPIP3 baixará e instalará globalmente todos os módulos necessários.
Neste ponto, o Python virtualenv O módulo deve ser instalado globalmente.
Crie o diretório do projeto python-selenium-Basic/ No seu diretório de trabalho atual, como segue:
$ mkdir -pv python-selenium-basic/driversNavegue até o seu diretório de projeto recém -criado python-selenium-Basic/, do seguinte modo:
$ CD Python-selenium-Basic/Crie um ambiente virtual do Python em seu diretório de projeto com o seguinte comando:
$ virtualenv .EnvO ambiente virtual do Python agora deve ser criado em seu diretório de projeto.'
Ative o ambiente virtual do Python em seu diretório de projeto através do seguinte comando:
$ fonte .Env/bin/ativarComo você pode ver, o ambiente virtual do Python é ativado para este diretório de projeto.
Instalando a Biblioteca de Selenium Python
A Biblioteca Selênio Python está disponível no repositório oficial do Python Pypi.
Você pode instalar esta biblioteca usando o PIP 3, como segue:
$ PIP3 Instale o selênioA biblioteca Selênio Python agora deve ser instalada.
Agora que a biblioteca Selênio Python está instalada, a próxima coisa que você precisa fazer é instalar um driver da web para o seu navegador da web favorito. Neste artigo, mostrarei como instalar os drivers da web do Firefox e Chrome para Selenium.
Instalando o driver do Firefox Gecko
O driver do Firefox Gecko permite controlar ou automatizar o navegador da Web do Firefox usando o Selenium.
Para baixar o motorista do Firefox Gecko, visite a página do GitHub de Mozilla/Geckodriver de um navegador da web.
Como você pode ver, v0.26.0 é a versão mais recente do motorista do Firefox Gecko no momento em que este artigo foi escrito.
Para baixar o motorista do Firefox Gecko, role um pouco para baixo e clique no alcatrão Linux Geckodriver.Arquivo GZ, dependendo da sua arquitetura do sistema operacional.
Se você estiver usando um sistema operacional de 32 bits, clique no Geckodriver-v0.26.0-Linux32.alcatrão.gz link.
Se você estiver usando um sistema operacional de 64 bits, clique no Geckodriver-v0.26.0-Linuxxx64.alcatrão.gz link.
No meu caso, vou baixar a versão de 64 bits do driver do Firefox Gecko.
Seu navegador deve solicitar que você salve o arquivo. Selecione Salvar Arquivo e depois clique OK.
O arquivo de motorista do Firefox Gecko deve ser baixado no ~/Downloads diretório.
Extraia o Geckodriver-v0.26.0-Linux64.alcatrão.gz Arquivo do ~/Downloads diretório para o motoristas/ Diretório do seu projeto inserindo o seguinte comando:
$ tar -xzf ~/downloads/geckodriver -v0.26.0-Linux64.alcatrão.GZ -C Drivers/
Uma vez extraído o arquivo do motorista do Firefox Gecko, um novo Geckodriver O arquivo binário deve ser criado no motoristas/ Diretório do seu projeto, como você pode ver na captura de tela abaixo.
Testando o driver de selenium Firefox Gecko
Nesta seção, mostrarei como configurar seu primeiro script de Python de Selenium para testar se o driver do Firefox Gecko está funcionando.
Primeiro, abra o diretório do projeto python-selenium-Basic/ com seu IDE ou editor favorito. Neste artigo, usarei o código do Visual Studio.
Crie o novo script python Ex01.py, e digite as seguintes linhas no script.
do selênio importar webdriverDepois de terminar, salve o Ex01.py Script Python.
Vou explicar o código em uma seção posterior deste artigo.
A linha seguinte configura o selênio para usar o motorista do Firefox Gecko do motoristas/ Diretório do seu projeto.
Para testar se o motorista do Firefox Gecko está trabalhando com o selênio, execute o seguinte Ex01.py Script Python:
$ python3 ex01.pyO navegador da Web do Firefox deve visitar automaticamente o Google.com e feche -se depois de 5 segundos. Se isso ocorrer, então o motorista do Selênio Firefox está funcionando corretamente.
Instalando o Chrome Web Driver
O Chrome Web Driver permite controlar ou automatizar o navegador do Google Chrome usando o Selenium.
Você deve baixar a mesma versão do driver da web do Chrome que o do seu navegador da web do Google Chrome.
Para encontrar o número da versão do seu navegador do Google Chrome, visite Chrome: // Configurações/Ajuda no Google Chrome. O número da versão deve estar no Sobre Chrome seção, como você pode ver na captura de tela abaixo.
No meu caso, o número da versão é 83.0.4103.116. As três primeiras partes do número da versão (83.0.4103, no meu caso) deve corresponder às três primeiras partes do número da versão do Chrome Web Driver.
Para baixar o Chrome Web Driver, visite a página oficial do Chrome Driver Download.
No Lançamentos atuais Seção, o driver do Chrome para os lançamentos mais atuais do navegador do Google Chrome estará disponível, como você pode ver na captura de tela abaixo.
Se a versão do Google Chrome que você está usando não estiver no Lançamentos atuais seção, role um pouco para baixo e você deve encontrar a versão desejada.
Depois de clicar na versão correta do driver do Chrome, ele deve levá -lo à página seguinte. Clique no Chromedriver_linux64.fecho eclair link, conforme indicado na captura de tela abaixo.
O arquivo do driver da web do Chrome agora deve ser baixado.
O arquivo do driver da web do Chrome agora deve ser baixado no ~/Downloads diretório.
Você pode extrair o cromedriver-linux64.fecho eclair Arquivo do ~/Downloads diretório para o motoristas/ Diretório do seu projeto com o seguinte comando:
$ UNZIP ~/Downloads/Chromedriver_linux64.Drivers Zip -d/Uma vez extraído o arquivo do driver do Chrome, um novo cromedriver O arquivo binário deve ser criado no motoristas/ Diretório do seu projeto, como você pode ver na captura de tela abaixo.
Testando o driver da web de selenium chrome
Nesta seção, mostrarei como configurar seu primeiro script de Python de Selenium para testar se o driver da web do Chrome está funcionando.
Primeiro, crie o novo script python ex02.py, e digite as seguintes linhas de códigos no script.
do selênio importar webdriverDepois de terminar, salve o ex02.py Script Python.
Vou explicar o código em uma seção posterior deste artigo.
A linha seguinte configura o selênio para usar o driver da web do Chrome do motoristas/ Diretório do seu projeto.
Para testar se o driver da web do Chrome está trabalhando com o selênio, execute o ex02.py Script Python, como segue:
$ python3 ex01.pyO navegador do Google Chrome deve visitar automaticamente o Google.com e feche -se depois de 5 segundos. Se isso ocorrer, então o motorista do Selênio Firefox está funcionando corretamente.
Noções básicas de raspagem na web com selênio
Eu estarei usando o navegador da web do Firefox a partir de agora. Você também pode usar o Chrome, se quiser.
Um script básico de selênio em python deve se parecer com o script mostrado na captura de tela abaixo.
Primeiro, importe o selênio WebDriver de selênio módulo.
Em seguida, importe o Chaves de selênio.WebDriver.comum.chaves. Isso ajudará você a enviar as prensas de teclado para o navegador que você está automatizando do Selenium.
A linha a seguir cria um navegador Objeto para o navegador da Web do Firefox usando o Driver do Firefox Gecko (WebDriver). Você pode controlar as ações do navegador do Firefox usando este objeto.
Para carregar um site ou URL (estarei carregando o site https: // www.Duckduckgo.com), chame o pegar() Método do navegador Objeto no seu navegador Firefox.
Usando o selênio, você pode escrever seus testes, realizar sucata na web e, finalmente, fechar o navegador usando o desistir() Método do navegador objeto.
Acima está o layout básico de um script de selênio python. Você estará escrevendo essas linhas em todos os seus scripts de Selênio Python.
Exemplo 1: Imprimir o título de uma página da web
Este será o exemplo mais fácil discutido usando o selênio. Neste exemplo, imprimiremos o título da página da web que estaremos visitando.
Crie o novo arquivo ex04.py e digite as seguintes linhas de códigos nele.
do selênio importar webdriverDepois de terminar, salve o arquivo.
Aqui o navegador.título é usado para acessar o título da página da web visitada e o imprimir() A função será usada para imprimir o título no console.
Depois de executar o ex04.py script, deve:
1) Abra o Firefox
2) Carregue a página da web desejada
3) busque o título da página
4) Imprima o título no console
5) e finalmente, feche o navegador
Como você pode ver, o ex04.py O script imprimiu o título da página da web muito bem no console.
$ python3 ex04.pyExemplo 2: Imprimir os títulos de várias páginas da web
Como no exemplo anterior, você pode usar o mesmo método para imprimir o título de várias páginas da web usando o loop python.
Para entender como isso funciona, crie o novo script python Ex05.py e digite as seguintes linhas de código no script:
do selênio importar webdriverDepois de terminar, salve o script python Ex05.py.
Aqui o URLs Lista mantém o URL de cada página da web.
A para O loop é usado para iterar através do URLs lista de itens.
Em cada iteração, o selênio diz ao navegador para visitar o url e obtenha o título da página da web. Depois que o selênio extraiu o título da página da web, ele é impresso no console.
Execute o script python Ex05.py, e você deve ver o título de cada página da web no URLs lista.
$ python3 ex05.pyEste é um exemplo de como o selênio pode executar a mesma tarefa com várias páginas da web ou sites.
Exemplo 3: Extraindo dados de uma página da web
Neste exemplo, mostrarei o básico da extração de dados de páginas da web usando o Selenium. Isso também é conhecido como raspagem na web.
Primeiro, visite o aleatório.Org Link do Firefox. A página deve gerar uma string aleatória, como você pode ver na captura de tela abaixo.
Para extrair os dados aleatórios de string usando selênio, você também deve conhecer a representação HTML dos dados.
Para ver como os dados aleatórios da string são representados no HTML, selecione os dados aleatórios da string e pressione o botão direito do mouse (RMB) e clique em Inspecione o elemento (Q), conforme anotado na captura de tela abaixo.
A representação HTML dos dados deve ser exibida no Inspetor guia, como você pode ver na captura de tela abaixo.
Você também pode clicar no Inspecione o ícone ( ) Para inspecionar os dados da página.
Clique no ícone Inspect. A representação HTML dos dados deve ser exibida como antes.
Como você pode ver, os dados aleatórios da string são embrulhados em um html pré tag e contém a classe dados.
Agora que conhecemos a representação HTML dos dados que queremos extrair, criaremos um script python para extrair os dados usando selênio.
Crie o novo script python Ex06.py e digite as seguintes linhas de códigos no script
do selênio importar webdriverDepois de terminar, salve o Ex06.py Script Python.
Aqui o navegador.pegar() Método carrega a página da web no navegador Firefox.
O navegador.find_element_by_css_selector () Método pesquisa o código HTML da página para obter um elemento específico e o retorna.
Nesse caso, o elemento seria pré.dados, o pré tag que tem o nome da classe dados.
Abaixo de pré.dados elemento foi armazenado no DataElement variável.
O script então imprime o conteúdo de texto do selecionado pré.dados elemento.
Se você executar o Ex06.py Script Python, ele deve extrair os dados aleatórios da string da página da web, como você pode ver na captura de tela abaixo.
$ python3 ex06.pyComo você pode ver, cada vez que eu corro o Ex06.py Script Python, ele extrai um dado de string aleatório diferente da página da web.
Exemplo 4: Extraindo a lista de dados da página da web
O exemplo anterior mostrou como extrair um único elemento de dados de uma página da web usando selênio. Neste exemplo, mostrarei como usar o Selenium para extrair uma lista de dados de uma página da web.
Primeiro, visite o gerador de nome aleatório.Informações do seu navegador da Web do Firefox. Este site gerará dez nomes aleatórios cada vez que você recarregue a página, como pode ver na captura de tela abaixo. Nosso objetivo é extrair esses nomes aleatórios usando selênio.
Se você inspecionar a lista de nomes mais de perto, poderá ver que é uma lista ordenada (ol marcação). O ol Tag também inclui o nome da classe lista de nomes. Cada um dos nomes aleatórios é representado como um item de lista (li tag) dentro do ol marcação.
Para extrair esses nomes aleatórios, crie o novo script python ex07.py e digite as seguintes linhas de códigos no script.
do selênio importar webdriverDepois de terminar, salve o ex07.py Script Python.
Aqui o navegador.pegar() Método carrega a página da web geradora de nomes aleatórios no navegador Firefox.
O navegador.find_elements_by_css_selector () O método usa o seletor CSS ol.Namelist Li para encontrar tudo li elementos dentro do ol tag tendo o nome da classe lista de nomes. Eu armazenei todos os selecionados li elementos no lista de nomes variável.
A para O loop é usado para iterar através do lista de nomes lista de li elementos. Em cada iteração, o conteúdo do li O elemento é impresso no console.
Se você executar o ex07.py Script Python, ele buscará todos os nomes aleatórios da página da web e a imprimirá na tela, como você pode ver na captura de tela abaixo.
$ python3 ex07.pySe você executar o script pela segunda vez, ele deve retornar uma nova lista de nomes de usuário aleatórios, como você pode ver na captura de tela abaixo.
Exemplo 5: Formulário de envio - pesquisando no DuckDuckgo
Este exemplo é tão simples quanto o primeiro exemplo. Neste exemplo, visitarei o mecanismo de busca do DuckDuckgo e pesquisarei o termo seleênio HQ usando selênio.
Primeiro, visite o mecanismo de busca do DuckDuckgo do navegador da Web do Firefox.
Se você inspecionar o campo de entrada de pesquisa, ele deve ter o ID Search_form_input_homepage, Como você pode ver na captura de tela abaixo.
Agora, crie o novo script python ex08.py e digite as seguintes linhas de códigos no script.
do selênio importar webdriverDepois de terminar, salve o ex08.py Script Python.
Aqui o navegador.pegar() O método carrega a página inicial do mecanismo de busca do DuckDuckgo no navegador da Web do Firefox.
O navegador.find_element_by_id () o método seleciona o elemento de entrada com o ID Search_form_input_homepage e o armazena no SearchInput variável.
O SearchInput.send_keys () O método é usado para enviar os dados da imprensa de chaves para o campo de entrada. Neste exemplo, ele envia a string seleênio HQ, e a tecla Enter é pressionada usando o Chaves.DIGITAR constante.
Assim que o mecanismo de busca do DuckDuckgo receber a tecla Enter Press (Chaves.DIGITAR), ele pesquisa e exibe o resultado.
Execute o ex08.py Script Python, como segue:
$ python3 ex08.pyComo você pode ver, o navegador da Web do Firefox visitou o mecanismo de busca do DuckDuckgo.
Ele digitou automaticamente seleênio HQ Na caixa de texto de pesquisa.
Assim que o navegador recebeu a tecla Enter Press (Chaves.DIGITAR), ele exibiu o resultado da pesquisa.
Exemplo 6: enviando um formulário no W3Schools.com
No Exemplo 5, o envio do formulário do mecanismo de pesquisa do DuckDuckgo foi fácil. Tudo que você precisava fazer era pressionar a tecla Enter. Mas este não será o caso de todos os envios de formulários. Neste exemplo, mostrarei a você um manuseio de formulários mais complexo.
Primeiro, visite a página HTML Forms of W3Schools.com do navegador da web do Firefox. Depois que a página carregar, você deve ver um formulário de exemplo. Este é o formulário que enviaremos neste exemplo.
Se você inspecionar o formulário, o Primeiro nome O campo de entrada deve ter o ID fname, o Sobrenome O campo de entrada deve ter o ID lname, e a Botão de envio deve ter o tipo enviar, Como você pode ver na captura de tela abaixo.
Para enviar este formulário usando selênio, crie o novo script python Ex09.py e digite as seguintes linhas de códigos no script.
do selênio importar webdriverDepois de terminar, salve o Ex09.py Script Python.
Aqui o navegador.pegar() Método abre a página W3Schools HTML Forms no navegador da Web do Firefox.
O navegador.find_element_by_id () O método encontra os campos de entrada pelo ID fname e lname e os armazena no fname e lname variáveis, respectivamente.
O fname.claro() e lname.claro() Métodos limpe o primeiro nome padrão (John) fname Valor e sobrenome (DOE) lname valor dos campos de entrada.
O fname.send_keys () e lname.send_keys () Tipo de métodos Shahriar e Shovon no Primeiro nome e Sobrenome campos de entrada, respectivamente.
O navegador.find_element_by_css_selector () O método seleciona o Botão de envio da forma e o armazena no botão de envio variável.
O botão de envio.send_keys () O método envia a tecla Enter Press (Chaves.DIGITAR) para o Botão de envio da forma. Esta ação envia o formulário.
Execute o Ex09.py Script Python, como segue:
$ python3 ex09.pyComo você pode ver, o formulário foi enviado automaticamente com as entradas corretas.
Conclusão
Este artigo deve ajudá -lo a começar com testes de navegador de selênio, automação da web e bibliotecas de sucata na web no Python 3. Para mais informações, consulte a documentação oficial do Selênio Python.