- 5 minutos de leitura
- Imprimir
- Tema escuroTema claro
- Pdf
Executores de ambientes web
- 5 minutos de leitura
- Imprimir
- Tema escuroTema claro
- Pdf
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.
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
Ferramenta | Versão |
---|---|
Chrome | 4.1.4 |
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:
- Gravando o modelo passo a passo usando o Selenium IDE
- 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:
- Em seu navegador, clique no ícone para abrir a extensão Selenium IDE.
- Na janela que se abre, clique na opção Gravar um novo teste em um novo projeto.
- Digite um nome para seu projeto no campo NOME DO PROJETO. Por exemplo: Reddit.
- Clique no botão OK.
- 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/.
- 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.
- A partir de agora, preencha todos os campos que o template deve seguir. Em nosso exemplo do Reddit, as etapas são:
- Preencha os campos nome de usuário e senha e clique no botão de login
- Navegue até a página Alterar senha
- Preencha os campos senha Anterior, Nova senha
- Confirme a nova senha e clique no botão Salvar
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.
- Após seguir todas as etapas para alterar a senha no site para o qual deseja criar o modelo, retorne à janela Selenium IDE.
- 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.
- No lado esquerdo, clique no teste que você criou com o botão direito do mouse e escolha a opção Exportar.
- Entre as opções apresentadas, selecione o idioma Python pytest e clique no botão Export.
- Salve o arquivo em seu computador.
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.
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:
- 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\']")))
- 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\']")))
- 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\']")))
- 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ção | Descriçã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 |
ActionChains | ActionChains 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 |
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 | |
timeout | Aguarde um determinado tempo em segundos antes de continuar a execução. Exemplo de uso: timeout(15) |