Usando selênio com driver Firefox

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

Para controlar o navegador Mozilla Firefox Web do Selenium, você deve usar o driver da Web Gecko.

Neste artigo, vou mostrar como configurar o Selenium para executar testes de navegador, automação da web, tarefas de raspagem na web usando o navegador da Web 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 em seu computador.

Você pode encontrar muitos artigos sobre esses tópicos no Linuxhint.com. Não deixe de conferir se precisar de alguma assistência.

Preparando o ambiente virtual do Python 3 para o projeto:

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

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

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

$ sudo pip3 install virtualenv

Pitão virtualenv deve ser instalado.

Crie um diretório de projeto Selênio-Firefox/ No seu diretório de trabalho atual da seguinte maneira:

$ mkdir -pv Selenium -firefox/drivers

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

$ CD Selenium-Firefox/

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

$ virtualenv .Venv

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

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

$ fonte .Env/bin/ativar

Instalando a Biblioteca de Selenium Python:

A Biblioteca de Selênio está disponível no repositório oficial do Python Pypi.

Você pode instalar a Biblioteca de Python de Selenium usando o PIP 3 da seguinte forma:

$ PIP3 Instale o selênio

A biblioteca Selênio Python deve ser instalada.

Instalando o Driver do Firefox Gecko:

Para baixar o driver do Firefox Gecko, visite a página do Github Liberações de Mozilla/Geckodriver do seu navegador da web favorito.

Como você pode ver, v0.26.0 é a versão mais recente do Firefox Gecko Driver no momento da redação deste artigo.

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.

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 clique em OK.

O motorista do Firefox Gecko deve ser baixado.

O arquivo de motorista do 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.GZ -C Drivers/

Depois que o arquivo do driver do 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 captura de tela abaixo.

Introdução ao selênio usando o Firefox Gecko Driver:

Nesta seção, vou mostrar como configurar seu primeiro script de selenium python para testar se o motorista do Firefox Gecko está funcionando.

Primeiro, crie um novo script python Ex00.py no seu diretório de projeto e digite as seguintes linhas.

do selênio importar webdriver
de selênio.WebDriver.comum.teclas de importação
navegador = webdriver.Firefox (executável_path = "./Drivers/Geckodriver ")
navegador.get ('https: // www.Linuxhint.com ')
Print ('Título: % S' % navegador.título)
navegador.desistir()

Depois de terminar, salve Ex00.py Script Python.

Linha 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 WebDriver.Raposa de fogo() método e o armazena em um navegador variável. O executável_path O argumento é usado para dizer ao driver da web onde procurar o driver do Firefox Gecko binário. Nesse caso, o Geckodriver binário do motoristas/ Diretório do projeto.

Na linha 6, navegador.pegar() o método carrega Linuxhint.com Em um navegador da web do Firefox.

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

A linha 8 fecha o navegador da web do Firefox usando o navegador.desistir() método.

Você pode executar o script python Ex00.py com o seguinte comando:

$ python3 ex00.py

O selênio deve abrir um navegador da Web do Firefox e visitar o Linuxhint.com site automaticamente.

Depois que a página carregar, deve imprimir o título do site no console e o navegador da web deve fechar automaticamente.

Então, o selênio está funcionando corretamente com o driver do Firefox Gecko.

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

Você também pode executar o selênio com o Driver Firefox Gecko no modo sem cabeça. O modo sem cabeça do Selenium Firefox não requer nenhuma interface gráfica do usuário instalada no seu computador. Então, você poderá executar o Selenium Firefox em qualquer servidor sem cabeça Linux.

Primeiro, crie um novo script python Ex01.py no seu diretório de projeto e digite as seguintes linhas de códigos.

do selênio importar webdriver
de selênio.WebDriver.Raposa de fogo.Opções de importação de opções
de selênio.WebDriver.comum.teclas de importação
FirefoxOptions = Opções ()
FirefoxOptions.add_argument ("-sem cabeça")
navegador = webdriver.Firefox (executável_path = "./Drivers/Geckodriver ", Options = FirefoxOptions)
navegador.get ('https: // www.Linuxhint.com ')
Print ('Título: % S' % navegador.título)
navegador.desistir()

Depois de terminar, salve o Ex01.py Script Python.

Linha 1 e linha 3 são iguais que a linha 1 e a linha 2 de Ex00.py Script Python.

A linha 2 importa 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.

A 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 O argumento é usado para passar o FirefoxOptions Ao inicializar o driver da web do Firefox usando o WebDriver.Raposa de fogo() método.

O restante 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) está impresso no console sem abrir nenhuma versão gráfica do navegador da Web do Firefox.

Como você pode ver, o selênio também está trabalhando em um ambiente sem cabeça do Ubuntu, onde não tenho interface gráfica do usuário instalada.

Agora que você sabe como passar o -sem cabeça Sinalizador/opção da linha de comando do Firefox usando o motorista do Selenium Firefox Gecko, você também pode passar por qualquer outra bandeira/opções da linha de comando do Firefox.

Você pode encontrar todas as bandeiras/opções da linha de comando do Firefox suportadas nas opções da linha de comando - Mozilla | Página MDN.

Exemplo 02: Extraindo Lorem ipsum usando selênio

Nesta seção, vou mostrar como fazer sucapsões básicas da Web usando o driver de selanium Firefox Gecko.

Primeiro, visite a página do gerador Lorem Ipsum do navegador da Web do 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 da web.

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

Ferramenta de desenvolvedor do Firefox deve ser aberto. Clique no Inspecione o ícone () conforme marcado na captura de tela abaixo.

Passe o mouse sobre o primeiro parágrafo, como 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 Ferramenta de desenvolvedor do Firefox. Como você pode ver, os parágrafos de Lorem Ipsum gerados estão dentro de um div tag que tem o eu ia Lipsum.

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

do selênio importar webdriver
de selênio.WebDriver.Raposa de fogo.Opções de importação de opções
de selênio.WebDriver.comum.teclas de importação
FirefoxOptions = Opções ()
FirefoxOptions.add_argument ("-sem cabeça")
navegador = webdriver.Firefox (executável_path = "./Drivers/Geckodriver ", Options = FirefoxOptions)
navegador.get ('https: // www.Lipsum.com/feed/html ')
Lipsum = navegador.Find_Element_By_Id ('Lipsum')
Imprimir (Lipsum.texto)
navegador.desistir()

Depois de terminar, salve o ex02.py Script Python.

A linha 10 carrega a página do gerador Lorem ipsum navegador.pegar() método.

O conteúdo de 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.

Linha 13 imprime o conteúdo de Lorem Ipsum gerado no console. Aqui o texto A 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 selênio extraiu o conteúdo de Lorem ipsum da página da web corretamente.

Executando o script python ex02.py novamente lhe dará uma saída diferente, como você pode ver na captura de tela abaixo.

Exemplo 03: Extraindo dados da lista usando selênio

Nesta seção, vou mostrar um exemplo de dados da lista de sucata da web de um site usando o Driver do Selenium Firefox Gecko no modo sem cabeça.

Primeiro, visite o gerador de nome aleatório.Informações do navegador da Web do Firefox. Este site gerará 10 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 no modo sem cabeça.

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

Ferramenta de desenvolvedor do Firefox deve ser aberto. Clique no Inspecione o ícone () conforme marcado na captura de tela abaixo.

Então, pairar sobre a lista de Nomes aleatórios. A lista deve ser destacada como marcado na captura de tela 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 Ferramenta de desenvolvedor do Firefox. 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.

A partir disso, podemos dizer isso 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 (basta substituir 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.

do selênio importar webdriver
de selênio.WebDriver.Raposa de fogo.Opções de importação de opções
de selênio.WebDriver.comum.teclas de importação
FirefoxOptions = Opções ()
FirefoxOptions.add_argument ("-sem cabeça")
navegador = webdriver.Firefox (executável_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.desistir()

Depois de terminar, salve o ex03.py Script Python.

A linha 10 carrega o site do gerador de nomes aleatórios usando o navegador.pegar() 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 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.

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 pela segunda vez, ele deve retornar uma nova lista de nomes aleatórios, como você pode ver na captura de tela abaixo.

Conclusão:

Este artigo deve ajudá -lo a começar com o selênio usando o navegador da Web do Firefox. Você poderá configurar um projeto de driver de gecko do Selenium Firefox com bastante facilidade e executar seus testes de navegador, automação da web e tarefas de raspagem na web.