Selênio

Usando Selenium com o driver do Firefox

Usando Selenium com o driver do Firefox
Selenium é uma ótima ferramenta para teste de navegador, automação da web e web scraping. Selenium pode controlar a maioria dos navegadores modernos. eu.e., Firefox, Chrome, Chromium, Opera, Apple Safari. Para controlar um navegador, o Selenium precisa de uma ferramenta chamada driver da Web. A maioria dos fornecedores de navegadores modernos fornece o software de driver da Web para seus navegadores.

Para controlar o navegador Mozilla Firefox a partir do Selenium, você deve usar o Gecko Web Driver.

Neste artigo, vou mostrar como configurar o Selenium para executar testes de navegador, automação da web, tarefas de web scraping usando o navegador Mozilla Firefox. Então vamos começar.

Pré-requisitos:

Para experimentar os comandos e exemplos deste artigo, você deve ter,

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) Mozilla Firefox instalado no seu computador.

Você pode encontrar muitos artigos sobre esses tópicos no LinuxHint.com. Certifique-se de verificá-los se precisar de alguma ajuda.

Preparando o ambiente virtual Python 3 para o projeto:

O ambiente virtual Python é usado para criar um diretório de projeto Python isolado. Os módulos Python que você instala usando PIP serão instalados apenas no diretório do projeto, não globalmente.

Pitão virtualenv módulo é usado para gerenciar ambientes virtuais Python.

Você pode instalar o Python virtualenv módulo globalmente usando PIP 3 da seguinte forma:

$ sudo pip3 install virtualenv

Pitão virtualenv deve ser instalado.

Crie um diretório de projeto selênio-firefox / em seu diretório de trabalho atual da seguinte maneira:

$ mkdir -pv selenium-firefox / drivers

Navegue até o diretório do seu projeto recém-criado selênio-firefox / do seguinte modo:

$ cd selenium-firefox /

Crie um ambiente virtual Python no diretório do seu projeto com o seguinte comando:

$ virtualenv .venv

O ambiente virtual Python deve ser criado no diretório do seu projeto.

Ative o ambiente virtual Python a partir do diretório do seu projeto com o seguinte comando:

$ source .env / bin / ativar

Instalando a biblioteca Selenium Python:

A biblioteca Selenium está disponível no repositório oficial Python PyPI.

Você pode instalar a biblioteca Selenium Python usando o PIP 3 da seguinte maneira:

$ pip3 install selenium

A biblioteca Selenium Python deve ser instalada.

Instalando o driver Firefox Gecko:

Para baixar o driver Firefox Gecko, visite a página de lançamentos do GitHub de mozilla / geckodriver em seu navegador favorito.

Como você pode ver, v0.26.0 é a versão mais recente do Firefox Gecko Driver no momento em que este livro foi escrito.

Para baixar o driver Firefox Gecko, role um pouco para baixo e clique no tar do Linux geckodriver.arquivo gz dependendo da arquitetura do seu 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-linuxx64.alcatrão.gz link.

Vou baixar a versão de 64 bits do driver Firefox Gecko.

Seu navegador deve solicitar que você salve o arquivo. Selecione Salvar Arquivo e clique em OK.

O driver Firefox Gecko deve ser baixado.

O arquivo do driver Firefox Gecko deve ser baixado no ~ / Downloads diretório.

Você pode extrair o geckodriver-v0.26.0-linux64.alcatrão.gz arquivo do ~ / Downloads diretório para o motoristas / diretório do seu projeto com o seguinte comando:

$ tar -xzf ~ / Downloads / geckodriver-v0.26.0-linux64.alcatrão.drivers gz -C /

Uma vez que o arquivo do driver Firefox Gecko é extraído, um novo arquivo binário geckodriver deve ser criado no motoristas / diretório do seu projeto, como você pode ver na imagem abaixo.

Primeiros passos com Selenium usando o driver Firefox Gecko:

Nesta seção, vou mostrar como configurar seu primeiro script Selenium Python para testar se o driver Firefox Gecko está funcionando.

Primeiro, crie um novo script Python ex00.py no diretório do seu projeto e digite as seguintes linhas nele.

from selenium import webdriver
de selênio.driver da web.comum.chaves importar chaves
navegador = webdriver.Firefox (executable_path = "./ drivers / geckodriver ")
navegador.get ('https: // www.linuxhint.com ')
imprimir ('Título:% s'% navegador.título)
navegador.Sair()

Quando terminar, salve ex00.py Script Python.

As linhas 1 e 2 importam todos os componentes necessários do selênio Biblioteca Python.

A linha 4 cria um objeto de driver da web do Firefox usando o driver da web.Raposa de fogo() método e armazena-o em um navegador variável. O executable_path argumento é usado para informar ao driver da web onde procurar o binário do driver Firefox Gecko. Neste caso, o geckodriver binário do motoristas / diretório do projeto.

Na linha 6, navegador.obter() método carrega linuxhint.com em um navegador Firefox.

Assim que o site terminar de carregar, a linha 7 imprime o título do site, aqui, navegador.título propriedade é usada para acessar o título do site.

A linha 8 fecha o navegador Firefox usando o navegador.Sair() método.

Você pode executar o script Python ex00.py com o seguinte comando:

$ python3 ex00.py

O Selenium deve abrir um navegador Firefox e visitar o linuxhint.com site automaticamente.

Assim que a página for carregada, o título do site deve ser impresso no console e o navegador da web deve ser fechado automaticamente.

Então, o Selenium está funcionando corretamente com o driver Firefox Gecko.

Exemplo 01: executando o Firefox no modo sem cabeça usando Selenium

Você também pode executar o Selenium com o Firefox Gecko Driver no modo headless. O modo headless do Selenium Firefox não requer nenhuma interface gráfica do usuário instalada no seu computador. Assim, você será capaz de executar o Selenium Firefox em qualquer servidor headless Linux.

Primeiro, crie um novo script Python ex01.py no diretório do seu projeto e digite as seguintes linhas de códigos nele.

from selenium import webdriver
de selênio.driver da web.Raposa de fogo.opções opções de importação
de selênio.driver da web.comum.chaves importar chaves
firefoxOptions = Options ()
firefoxOptions.add_argument ("- sem cabeça")
navegador = webdriver.Firefox (executable_path = "./ drivers / geckodriver ", options = firefoxOptions)
navegador.get ('https: // www.linuxhint.com ')
imprimir ('Título:% s'% navegador.título)
navegador.Sair()

Quando terminar, salve o ex01.py Script Python.

A linha 1 e a linha 3 são iguais às linhas 1 e 2 de ex00.py Script Python.

A linha 2 importa o Firefox Opções de selênio biblioteca.

A linha 5 cria um objeto de opções do firefox e o armazena no firefoxOptions variável.

Linha 6 usa o firefoxOptions.add_argument () método para adicionar o -sem cabeça Sinalizador de linha de comando do Firefox para o firefoxOptions objeto.

Na linha 8, opções argumento é usado para passar o firefoxOptions ao inicializar o driver da web do Firefox usando o driver da web.Raposa de fogo() método.

O resto das linhas do ex01.py script é o mesmo que o ex00.py.

Você pode executar o script Python ex01.py com o seguinte comando:

$ python3 ex01.py

Como você pode ver, o título do site (linuxhint.com) é impresso no console sem abrir nenhuma versão gráfica do navegador Firefox.

Como você pode ver, o Selenium também está trabalhando em um ambiente Ubuntu sem controle, onde não tenho nenhuma interface gráfica do usuário instalada.

Agora que você sabe como passar o -sem cabeça Sinalizador / opção de linha de comando do Firefox usando o driver Selenium Firefox Gecko, você pode passar quaisquer outros sinalizadores / opções de linha de comando do Firefox.

Você pode encontrar todos os sinalizadores / opções de linha de comando suportados do Firefox em Opções de linha de comando - Mozilla | Página MDN.

Exemplo 02: Extraindo Lorem Ipsum usando Selênio

Nesta seção, vou mostrar como fazer web scrapping básico usando Selenium Firefox Gecko Driver.

Primeiro, visite a página Lorem Ipsum Generator no navegador Firefox. Como você pode ver, a página gerou 5 parágrafos aleatórios. Vamos extrair todo o texto gerado (todos os 5 parágrafos) desta página.

Antes de começar a extrair informações de uma página da web, você deve conhecer a estrutura HTML do conteúdo da página.

Você pode encontrar facilmente a estrutura HTML do conteúdo que deseja extrair usando o Firefox Developer Tool. Abrir Firefox Developer Tool, pressione o botão direito do mouse (RMB) na página e clique em Inspecionar elemento (Q).

Firefox Developer Tool deve ser aberto. Clique no Ícone de inspeção () como marcado na imagem abaixo.

Passe o mouse sobre o primeiro parágrafo, conforme mostrado na captura de tela abaixo. Em seguida, pressione o botão esquerdo do mouse (LMB) para selecioná-lo.

A estrutura HTML dos parágrafos deve ser exibida no Inspecionar guia do Firefox Developer Tool. Como você pode ver, os parágrafos lorem ipsum gerados estão dentro de um div tag que tem o eu ia lipsum.

Para extrair os parágrafos lorem ipsum usando o driver Selenium Firefox Gecko, crie um novo script Python ex02.py no diretório do seu projeto e digite as seguintes linhas de códigos nele.

from selenium import webdriver
de selênio.driver da web.Raposa de fogo.opções opções de importação
de selênio.driver da web.comum.chaves importar chaves
firefoxOptions = Options ()
firefoxOptions.add_argument ("- sem cabeça")
navegador = webdriver.Firefox (executable_path = "./ drivers / geckodriver ", options = firefoxOptions)
navegador.get ('https: // www.lipsum.com / feed / html ')
lipsum = navegador.find_element_by_id ('lipsum')
imprimir (lábios.texto)
navegador.Sair()

Quando terminar, salve o ex02.py Script Python.

A linha 10 carrega a página do gerador lorem ipsum usando o navegador.obter() método.

O conteúdo do lorem ipsum está dentro de um div tag com o id lipsum. A linha 12 usa o navegador.find_element_by_id () método para selecioná-lo na página da web e armazená-lo no lipsum variável.

A linha 13 imprime o conteúdo lorem ipsum gerado no console. Aqui o texto propriedade é usada para acessar o conteúdo do div elemento com o id lipsum.

Agora, execute o script Python ex02.py do seguinte modo:

$ python3 ex02.py

Como você pode ver, o Selenium extraiu o conteúdo do lorem ipsum da página da web corretamente.

Executando o script Python ex02.py novamente irá fornecer a você uma saída diferente, como você pode ver na imagem abaixo.

Exemplo 03: Extraindo dados de lista usando Selenium

Nesta seção, vou mostrar um exemplo de dados de lista de scrapping da web de um site usando o driver Selenium Firefox Gecko no modo headless.

Primeiro, visite o gerador de nomes aleatórios.informações do navegador Firefox. Este site irá gerar 10 nomes aleatórios cada vez que você recarregar a página, como você pode ver na imagem abaixo. Nosso objetivo é extrair esses nomes aleatórios usando Selenium no modo headless.

Para descobrir a estrutura HTML da lista, você deve abrir o Firefox Developer Tool. Para fazer isso, pressione o botão direito do mouse (RMB) na página e clique em Inspecionar elemento (Q).

Firefox Developer Tool deve ser aberto. Clique no Ícone de inspeção () como marcado na imagem abaixo.

Em seguida, passe o mouse sobre a lista de Nomes aleatórios. A lista deve ser destacada conforme marcado na imagem abaixo. Em seguida, pressione o botão esquerdo do mouse (LMB) para selecionar a lista.

O código HTML da lista deve ser destacado no Inspetor guia do Firefox Developer Tool. Aqui, a lista de nomes aleatórios está dentro de um div elemento. O div elemento tem o aula nome resultados. Dentro dele, temos um ol elemento com o aula nome lista de nomes. Dentro de ol elemento, cada um dos nomes está em um li elemento.

Disto podemos dizer que para chegar ao li tags, temos que seguir div.resultados> ol.nameList> li

Então, nosso seletor de CSS será div.resultados ol.nameList li (apenas substitua o > sinais com espaço em branco)

Para extrair esses nomes aleatórios, crie um novo script Python ex03.py e digite as seguintes linhas de códigos nele.

from selenium import webdriver
de selênio.driver da web.Raposa de fogo.opções opções de importação
de selênio.driver da web.comum.chaves importar chaves
firefoxOptions = Options ()
firefoxOptions.add_argument ("- sem cabeça")
navegador = webdriver.Firefox (executable_path = "./ drivers / geckodriver ", options = firefoxOptions)
navegador.get ("http: // random-name-generator.info / ")
nameList = navegador.find_elements_by_css_selector ('div.resultados ol.nameList li ')
para nome em nameList:
imprimir (nome.texto)
navegador.Sair()

Quando terminar, salve o ex03.py Script Python.

A linha 10 carrega o site gerador de nomes aleatórios usando o navegador.obter() método.

A linha 11 seleciona a lista de nomes usando o navegador.find_elements_by_css_selector () método. Este método usa o seletor CSS div.resultados ol.nameList li para encontrar a lista de nomes. Então, a lista de nomes é armazenada no lista de nomes variável.

Nas linhas 13 e 14, um para loop é usado para iterar através do lista de nomes lista de li elementos. Em cada iteração, o conteúdo do li elemento é impresso no console.

Agora, execute o script Python ex03.py do seguinte modo:

$ python3 ex03.py

Como você pode ver, o script Python ex03.py buscou todos os nomes aleatórios da página da web.

Se você executar o script uma segunda vez, ele deve retornar uma nova lista de nomes aleatórios, como você pode ver na imagem abaixo.

Conclusão:

Este artigo deve ajudá-lo a começar a usar o Selenium usando o navegador Firefox. Você deve ser capaz de configurar um projeto de driver Selenium Firefox Gecko com bastante facilidade e executar testes de navegador, automação da web e tarefas de web scraping.

Como alterar as configurações do mouse e touchpad usando Xinput no Linux
A maioria das distribuições Linux vem com a biblioteca “libinput” por padrão para lidar com eventos de entrada em um sistema. Ele pode processar event...
Remapeie os botões do mouse de maneira diferente para software diferente com o controle de botão do mouse X
Talvez você precise de uma ferramenta que possa fazer o controle do seu mouse mudar com cada aplicativo que você usa. Se for esse o caso, você pode ex...
Análise do mouse sem fio Microsoft Sculpt Touch
Recentemente li sobre o Microsoft Sculpt Touch mouse sem fio e decidi comprá-lo. Depois de usá-lo por um tempo, decidi compartilhar minha experiência ...