Executores de ambientes web
  • 5 minutos de leitura
  • Tema escuro
    Tema claro
  • Pdf

Executores de ambientes web

  • Tema escuro
    Tema claro
  • Pdf

Resumo do artigo

cURL

Executor de requisições para páginas web simples. Páginas sem ambiente JavaScript ou eventos HTML. Você pode usar este executor para sistemas legados baseados em arquitetura HTML4 pura;


HTTP

Executor de requisições a páginas web complexas onde é necessária mais interatividade utilizando elementos JavaScript e triggers de eventos;


Selenium

O Selenium é uma solução de automação de aplicações web criada para apoiar as equipes durante os testes automatizados, simulando um usuário.

Info

Para obter informações, acesse a documentação oficial do Selenium.

Através deste executor é possível criar templates utilizando scripts Python para automatizar mudanças de senha em aplicativos web como Instagram, Facebook, Gmail, etc.

Para usuários que não estão familiarizados com a linguagem Python, é possível usar a extensão Selenium IDE para Google Chrome ou Firefox. Enquanto o usuário navega no aplicativo web, todas as etapas e informações inseridas são capturadas e convertidas em um script que pode ser utilizado como modelo no senhasegura.


Versão do navegador incorporado

FerramentaVersão
Chrome4.1.4
Selenium IDE

Para saber mais sobre o Selenium IDE, consulte a página oficial em Selenium IDE.


Criar modelo para o executor do Selenium

A criação de templates para o executor do Selenium é dividida em duas etapas:

  1. Gravando o modelo passo a passo usando o Selenium IDE
  2. Criação do template no senhasegura

Grave passo a passo com o Selenium IDE

Para criar o modelo, usaremos a extensão Selenium IDE para navegadores. Ele automatiza a criação do template registrando todos os cliques e preenchendo os campos conforme o usuário navega no site.

Após instalar a extensão em seu navegador, siga os passos abaixo:

  1. Em seu navegador, clique no ícone para abrir a extensão Selenium IDE.
  2. Na janela que se abre, clique na opção Gravar um novo teste em um novo projeto.
  3. Digite um nome para seu projeto no campo NOME DO PROJETO. Por exemplo: Reddit.
  4. Clique no botão OK.
  5. No campo URL BASE, insira o URL da página de login do site para o qual deseja criar o modelo. Por exemplo: https://www.reddit.com/account/login/.
  6. Clique no botão INICIAR GRAVAÇÃO. Isso usará o endereço inserido na URL BASE para abrir em uma nova janela. A partir deste ponto, todos os cliques e informações inseridos nos campos serão capturados pelo Selenium IDE.
  7. A partir de agora, preencha todos os campos que o template deve seguir. Em nosso exemplo do Reddit, as etapas são:
    1. Preencha os campos nome de usuário e senha e clique no botão de login
    2. Navegue até a página Alterar senha
    3. Preencha os campos senha Anterior, Nova senha
    4. Confirme a nova senha e clique no botão Salvar
Recomendação

Recomendamos que, como forma de validar a nova senha, após alterá-la, você saia e faça login novamente com ela para garantir que a alteração foi bem-sucedida.

  1. Após seguir todas as etapas para alterar a senha no site para o qual deseja criar o modelo, retorne à janela Selenium IDE.
  2. No canto superior direito, clique no ícone Parar gravação e preencha o campo NOME DO TESTE. Por exemplo: Mudança de senha do Reddit.
  3. No lado esquerdo, clique no teste que você criou com o botão direito do mouse e escolha a opção Exportar.
  4. Entre as opções apresentadas, selecione o idioma Python pytest e clique no botão Export.
  5. Salve o arquivo em seu computador.
Importante

Para que a automação funcione corretamente, o site no qual você deseja executar o modelo não pode ter a autenticação de fator duplo habilitada.

Dica

Você pode validar seu script clicando na ação Run current test no Selenium IDE antes de exportá-lo. Para isso, será necessário alterar a coluna Valor das senhas, pois elas foram alteradas no processo de criação do script.


Criar template no senhasegura

Agora que temos o arquivo com as etapas que o template deve ter, vamos adicioná-lo ao senhasegura. Para fazer isso, siga os passos abaixo:

  1. Abra o arquivo .py que você salvou na etapa anterior em qualquer editor de texto. Pode até ser o Bloco de Notas. Em nosso exemplo do Reddit, o conteúdo ficará assim:
Open Code


# Generated by Selenium IDE
import pytest
import time
import json
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

class TestRedditpasswordchange():
  def setup_method(self, method):
    self.driver = webdriver.Chrome()
    self.vars = {}
  
  def teardown_method(self, method):
    self.driver.quit()
  
  def test_redditpasswordchange(self):
    self.driver.get("https://www.reddit.com/account/login/")
    self.driver.set_window_size(1920, 1030)
    self.driver.find_element(By.ID, "loginUsername").click()
    self.driver.find_element(By.ID, "loginUsername").send_keys("username")
    self.driver.find_element(By.ID, "loginPassword").click()
    self.driver.find_element(By.ID, "loginPassword").send_keys("OldPassword")
    self.driver.find_element(By.ID, "loginPassword").send_keys(Keys.ENTER)
    self.driver.get("https://reddit.com/change_password")
    self.driver.find_element(By.ID, "old_password").click()
    self.driver.find_element(By.ID, "old_password").send_keys("OldPassword")
    self.driver.find_element(By.ID, "password").click()
    self.driver.find_element(By.ID, "password").send_keys("NewPassword")
    self.driver.find_element(By.ID, "password2").click()
    self.driver.find_element(By.ID, "password2").send_keys("NewPassword")
    self.driver.find_element(By.ID, "password2").send_keys(Keys.ENTER)
    WebDriverWait(driver, 30).until(expected_conditions.presence_of_element_located((By.XPATH, "//button[@id=\'USER_DROPDOWN_ID\']")))


  1. Copie o conteúdo da linha onde está o endereço inserido em BASE URL. Em nosso exemplo, será da linha 22:
Open Code


self.driver.get("https://www.reddit.com/account/login/")
self.driver.set_window_size(1920, 1030)
self.driver.find_element(By.ID, "loginUsername").click()
self.driver.find_element(By.ID, "loginUsername").send_keys("username")
self.driver.find_element(By.ID, "loginPassword").click()
self.driver.find_element(By.ID, "loginPassword").send_keys("OldPassword")
self.driver.find_element(By.ID, "loginPassword").send_keys(Keys.ENTER)
self.driver.get("https://reddit.com/change_password")
self.driver.find_element(By.ID, "old_password").click()
self.driver.find_element(By.ID, "old_password").send_keys("OldPassword")
self.driver.find_element(By.ID, "password").click()
self.driver.find_element(By.ID, "password").send_keys("NewPassword")
self.driver.find_element(By.ID, "password2").click()
self.driver.find_element(By.ID, "password2").send_keys("NewPassword")
self.driver.find_element(By.ID, "password2").send_keys(Keys.ENTER)
WebDriverWait(driver, 30).until(expected_conditions.presence_of_element_located((By.XPATH, "//button[@id=\'USER_DROPDOWN_ID\']")))


  1. Para poder utilizar este template no senhasegura, basta substituir os campos pelas variáveis que devem ser preenchidas automaticamente durante o processo de mudança de senha. Veja um exemplo:
Open Code


self.driver.get("https://www.reddit.com/account/login/")
self.driver.set_window_size(1920, 1030)
self.driver.find_element(By.ID, "loginUsername").click()
self.driver.find_element(By.ID, "loginUsername").send_keys("[#USERNAME#]")
self.driver.find_element(By.ID, "loginPassword").click()
self.driver.find_element(By.ID, "loginPassword").send_keys("[#CURRENT_PASSWORD#]")
self.driver.find_element(By.ID, "loginPassword").send_keys(Keys.ENTER)
self.driver.get("https://reddit.com/change_password")
self.driver.find_element(By.ID, "old_password").click()
self.driver.find_element(By.ID, "old_password").send_keys("[#CURRENT_PASSWORD#]")
self.driver.find_element(By.ID, "password").click()
self.driver.find_element(By.ID, "password").send_keys("[#NEW_PASSWORD#]")
self.driver.find_element(By.ID, "password2").click()
self.driver.find_element(By.ID, "password2").send_keys("[#NEW_PASSWORD#]")
self.driver.find_element(By.ID, "password2").send_keys(Keys.ENTER)
WebDriverWait(driver, 30).until(expected_conditions.presence_of_element_located((By.XPATH, "//button[@id=\'USER_DROPDOWN_ID\']")))


  1. Agora seu código está pronto para ser usado em seu modelo de alteração de senha. Selecione o executor do Selenium ao Criar seu modelo

Funções que você pode usar nos templates

Você pode usar em seu template todos os comandos disponíveis para a classe driver.* (ou self.driver.*). Verifique a lista de comandos disponíveis em Documentação oficial do Selenium.

Confira a lista de funções que podem ser usadas em seu template:

FunçãoDescrição
self.driver.*Comandos para manipular elementos do navegador simulando o usuário. Pode ser usado diver.*também.
Exemplo de uso: self.driver.get("https://instagram.com")
Saiba mais: webdrivers Selenium
WebDriverWait

Faz o Driver esperar até que uma condição seja verdadeira. Você pode usá-lo para verificar se algum elemento da página já foi carregado, como, por exemplo, um campo de formulário de login.

Exemplo de uso: WebDriverWait(self.driver, 30).until(expected_conditions.presence_of_element_located((By.ID, "username")))

Saiba mais: Selenium Waits

ActionChainsActionChains são uma maneira de automatizar interações de baixo nível, como movimentos do mouse, ações do botão do mouse, pressionamentos de tecla e interações do menu de contexto. Isso é útil para executar ações mais complexas, como passar o mouse e arrastar e soltar.
Exemplo de uso: ActionChains(driver).move_to_element(menu).click(hidden_submenu).perform()
Saiba mais: Cadeias de ação de selênio
print

Imprime uma mensagem durante a execução do modelo. Você pode usá-lo para fazer marcações durante a execução.

Exemplo de uso: print("Your message here")

Saiba mais: Saídas Python

timeoutAguarde um determinado tempo em segundos antes de continuar a execução.
Exemplo de uso:timeout(15)

Este artigo foi útil?