Back-End

2 fev, 2016

Autenticação em um website usando Selenium Python – exemplo de Selenium Python

Publicidade

Neste artigo, vamos discutir sobre um módulo importante e muito frequentemente utilizado, disponível em Python e muitas outras linguagens, que é usado para o teste automatizado no navegador. Neste texto, vamos apenas tocar a superfície da capacidade real do Selenium.

Eu pesquisei sobre Selenium quando eu recebi um e-mail de um dos meus leitores que não conseguia acessar um determinado website usando o mechanize, o que eu havia explicado neste texto.

Explorando o problema, eu finalmente descobri que ele foi causado pelos campos de entrada adicionados dinamicamente. Alguns websites adicionam dinamicamente os campos de login com base no país do usuário ou em algum outro critério. Em tais casos, o uso do mechanize não é aplicável, uma vez que ele não tem suporte para sites JavaScript no momento.

O Selenium fornece um excelente modo de navegar automaticamente. Abaixo está o código que eu sugeri ao meu leitor para acessar o website. Neste artigo, eu estou usando esse mesmo site como exemplo.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
browser = webdriver.Firefox()
browser.get("https://lbjcrs.ust.hk/primo/authen.php") 
time.sleep(10)
username = browser.find_element_by_id("extpatid")
password = browser.find_element_by_id("extpatpw")
username.send_keys("username")
password.send_keys("password")
login_attempt = browser.find_element_by_xpath("//*[@type='submit']")
login_attempt.submit()

Explicação dos códigos Python para acessar o site usando Selenium

  1. Linhas 1 a 3

Estas são as instruções de importação. Nós importamos o webdriver do Selenium, que é usado para criar uma instância de um navegador. A outra linha importa as chaves (keys), que serão utilizadas para passar o nome do usuário e a senha para os campos apropriados no website que estará sendo executado em um navegador instanciado pelo selenium webdriver. Em seguida, importamos o tempo (time), que eu usei para criar um atraso depois de abrir a URL no navegador para que o JavaScript seja carregado completamente, com todos os campos de entrada necessários.

  1. Linhas 4 a 6

Na linha 4, nós instanciamos um navegador Firefox. Essa linha vai abrir um navegador. A linha 5 é usada para abrir uma URL específica no webbrowser que abrimos. Essa é a página de login que usa JavaScript para obter os campos de entrada carregados dinamicamente. Por isso, na linha 6, temos uma time.sleep (time_in_seconds), o que significa que queremos esperar por alguns segundos, especificados entre parênteses, antes de a outra linha ser executada. Isso é necessário porque o JavaScript requer um certo tempo para ser carregado, de modo que os campos de entrada estão em posição.

  1. Linhas de 7 a 10

Para colocar o nome de usuário e senha nos campos apropriados, precisamos de um conhecimento prévio do campo de entrada. Clique com o botão direito no campo e clique em inspecionar elemento para revelar qual a ID dele. Uma vez que temos a ID para os campos nome de usuário e senha, podemos proceder à adição dos valores para esses campos programaticamente. Nas linhas 7 e 8, estamos atribuindo variáveis ​​para manter os campos (nome de usuário e senha). Nas linhas 9 e 10, estamos usando os métodos send_keys sobre esses campos para passar nome de usuário e senha, respectivamente. Até o final da linha 10, o nome de usuário e a senha já estarão definidos no browser.

  1. Linha 11

Na linha 11, estamos usando o find_element_by_xpath para encontrar um botão de envio na página da web que está sendo exibido no webbrowser. Atribuímos esse botão encontrado para login_attempt.

  1. Linha 12

Por fim, executamos um evento de clique no botão de envio que irá, em seguida, acessar o website para nós.

Isso é tudo o que é preciso para acessar um site que utiliza JavaScript para carregar os campos de entrada dinamicamente com a ajuda do Selenium Python. Boa programação.

***

Bhishan Bhandari faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: http://www.thetaranights.com/login-to-a-website-using-selenium-python-python-selenium-example/