Selênio

Selenium Web Automation com Python

Selenium Web Automation com Python
Todo mundo usa a web em um ponto ou outro, portanto, é uma grande necessidade para os desenvolvedores garantirem que seus aplicativos da web estejam funcionando como pretendido. Para fazer isso, a automação da web pode ser muito útil.

Para qualquer software comercial ter sucesso, ele precisa passar por alguns testes. A automação pode ser útil para testes de usuário, simulando o uso de software como um usuário faria. Também é útil para testes de penetração, como tentar quebrar senhas, realizar injeções de SQL, etc.

Além de testes, a automação da web pode ser muito útil para limpar sites pesados ​​de JavaScript.

Selenium é uma das ferramentas mais eficientes para automação web. Também é muito popular entre diferentes linguagens, disponível em linguagens como Java, JavaScript.

Instalação

O Selenium pode ser instalado em python usando o módulo pip conforme mostrado no comando abaixo:

pip instalar selênio

Seria instalar a biblioteca e dependências necessárias, a instalação pode ser confirmada importando-o em uma sessão interativa.

$ python
Python 3.5.2 (padrão, 14 de setembro de 2017, 22:51:06)
[GCC 5.4.0 20160609] no Linux
Digite "ajuda", "direitos autorais", "créditos" ou "licença" para obter mais informações.
>>> importar selênio

Como nenhum erro ocorreu, isso significa que nossa instalação foi bem-sucedida. No entanto, não termina aí; isso ocorre porque o selênio funciona em conjunto com navegadores como Chrome e Firefox e precisa de um driver do navegador para poder prosseguir com suas funções.

Vamos dar uma olhada em como instalar os drivers. Para Mozilla Firefox, você pode baixar seu driver conhecido como geckodriver da página do github. Se você é um usuário do Chrome, pode baixar o driver conhecido como cromedriver do site oficial.

Após o download, você adiciona o driver ao caminho. Pessoalmente, gostaria de manter esse arquivo em meu / usr / local / bin diretório, e eu aconselho você a fazer o mesmo.

Se você quiser fazer o mesmo, o comando abaixo deve movê-lo de seu diretório atual para o bin diretório.

$ sudo mv geckodriver / usr / local / bin
$ sudo mv chromedriver / usr / local / bin

Adicionar geckodriver ou cromedriver para o caminho desse diretório, execute o seguinte comando.

$ export PATH = $ PATH: / usr / local / bin / geckodriver
$ export PATH = $ PATH: / usr / local / bin / chromedriver

Depois de adicionar o driver do navegador desejado ao caminho, você pode confirmar se tudo está funcionando bem executando o seguinte em uma sessão interativa.

Para Firefox:

$ python
Python 3.5.2 (padrão, 14 de setembro de 2017, 22:51:06)
[GCC 5.4.0 20160609] no Linux
Digite "ajuda", "direitos autorais", "créditos" ou "licença" para obter mais informações.
>>> do selênio import webdriver
>>> webdriver.Raposa de fogo()

Para Chrome:

$ python
Python 3.5.2 (padrão, 14 de setembro de 2017, 22:51:06)
[GCC 5.4.0 20160609] no Linux
Digite "ajuda", "direitos autorais", "créditos" ou "licença" para obter mais informações.
>>> do selênio import webdriver
>>> driver = webdriver.Cromada()

Depois de executá-lo, se um navegador aparecer, tudo está funcionando bem. Agora podemos fazer coisas legais com Selenium.

A maior parte do código para o resto deste artigo seria feito na sessão interativa, no entanto, você pode escrevê-lo em um arquivo como seu script Python normal.

Além disso, estaríamos trabalhando no motorista variável do código acima.

Visitando páginas da web

Depois que a página da web for aberta, você pode visitar qualquer página da web ligando para o obter método em motorista. O navegador aberto carrega o endereço informado, como faria se você o fizesse.

Não se esqueça de usar http: // ou https: //, senão você terá que lidar com erros desagradáveis.

>>> motorista.get ("http: // google.com ")

Isso carregaria a página inicial do Google.

Obtendo o código-fonte

Agora que aprendemos a visitar páginas da web, podemos extrair dados da página visitada.

De motorista objeto, podemos obter o código-fonte chamando o fonte da página atributo, você pode então fazer o que quiser com o html usando a biblioteca BeautifulSoup.

>> motorista.fonte da página

Preenchendo caixas de texto

Se, por exemplo, carregamos a página inicial do Google e queremos digitar algumas informações na caixa de pesquisa; pode ser feito facilmente.

Para fazer isso, usamos o elemento inspector para verificar o código-fonte e ver as informações da tag da caixa de pesquisa. Para fazer isso, basta clicar com o botão direito na caixa de pesquisa e selecionar inspecionar elemento.

Na minha máquina, obtive o seguinte:

value = "" aria-label = "Pesquisar" aria-haspopup = "false" role = "combobox" aria-autocomplete = "list"
style = "border: medium none; padding: 0px; margin: 0px; height: auto; width: 100%;
fundo: transparente
url ("dados: imagem / gif; base64, R0lGODlhAQABAID / AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEA
Ow% 3D% 3D ") repetir a rolagem 0% 0%; posição: absoluta; índice z: 6; esquerda: 0px; contorno:
médio nenhum; "dir =" ltr "spellcheck =" false "type =" text ">

Com selênio, podemos selecionar elementos por nome de tag, id, nome de classe, etc.

Eles podem ser implementados com os seguintes métodos:

.find_element_by_id
.find_element_by_tag_name
.find_element_by_class_name
.find_element_by_name

Na página da web do Google, a caixa de pesquisa tem um id lst-ib, então encontraríamos elemento por id.

>>> search_box = driver.find_element_by_id ("lst-ib")

Agora que encontramos o elemento e o salvamos em um caixa de pesquisa variável, podemos realizar algumas operações na caixa de pesquisa.

>>> search_box.send_keys ("Planeta Terra")

Isso introduziria o texto “Planeta Terra“ na caixa.

>>> search_box.Claro()

Isso limparia o texto inserido na caixa de pesquisa. Você deve usar o send_keys método novamente, na próxima seção, clicaremos no botão de pesquisa para que tenhamos algo para pesquisar.

Clicar nos botões certos

Agora que preenchemos a caixa de pesquisa com algumas informações, podemos prosseguir e pesquisar.

Da mesma forma que encontramos a caixa de pesquisa é a mesma que vamos encontrar o botão de pesquisa.

Na minha máquina, obtive o seguinte:

type = "enviar">

Olhando para isso, podemos fazer uso do atributo name. Podemos obtê-lo usando o código abaixo:

>>> search_button = driver.find_element_by_name ("btnK")

Depois de encontrar a tag desejada, podemos clicar no botão usando o clique método.

>>> search_button.clique()

Porém, tenha cuidado, devido às sugestões automáticas do Google, você pode acabar procurando por outra coisa.

Para contornar isso, você precisa fazer com que o teclado pressione a tecla Enter imediatamente. As chaves estão além do escopo deste artigo, mas aqui está o código de qualquer maneira.

>>> de selênio.driver da web.comum.chaves importar chaves
>>> search_box = driver.find_element_by_id ("lst-ib")
>>> search_box.send_keys ("Planeta Terra")
>>> search_box.send_keys (chaves.RETORNA)

Com o código acima, não precisamos clicar no botão de pesquisa. Funciona exatamente como quando pressionamos a tecla Enter depois de digitar os valores de pesquisa.

Este método de clicar no buttosn não funciona apenas com botões, também funciona com links.

Fazendo capturas de tela

Você leu certo! Você pode fazer capturas de tela usando selênio, e é tão fácil quanto as seções anteriores.

O que faremos é ligar para o save_screenshot no objeto driver, passaríamos o nome da imagem e a captura de tela seria tirada.

>>> motorista.save_screenshot ("Planeta Terra.png ")

Certifique-se de que o nome da imagem tenha um .extensão PNG, caso contrário, você pode acabar com uma imagem corrompida.

Quando terminar as operações, você pode fechar o navegador executando o seguinte código:

>>> motorista.perto()

Conclusão

O selênio é conhecido como uma ferramenta muito poderosa e ser capaz de usá-lo é considerada uma habilidade vital para testadores de automação. O Selenium pode fazer muito mais do que o discutido neste artigo, os movimentos do teclado podem ser replicados conforme mostrado com Chaves.RETORNA. Se você deseja aprender mais sobre selênio, você pode verificar documentação, é bastante claro e fácil de usar.

Mecanismos de jogos gratuitos e de código aberto para o desenvolvimento de jogos Linux
Este artigo cobrirá uma lista de mecanismos de jogo gratuitos e de código aberto que podem ser usados ​​para desenvolver jogos 2D e 3D no Linux. Exist...
Tutorial de Shadow of the Tomb Raider para Linux
Shadow of the Tomb Raider é a décima segunda adição à série Tomb Raider - uma franquia de jogos de ação e aventura criada pela Eidos Montreal. O jogo ...
Como aumentar o FPS no Linux?
FPS significa Quadros por segundo. A tarefa do FPS é medir a taxa de quadros em reproduções de vídeo ou desempenho de jogos. Em palavras simples, o nú...