Um cookie HTTP é composto por informações sobre o usuário e suas preferências. Ele armazena informações usando um par de valores-chave. É um pequeno pedaço de dado enviado do aplicativo da Web e armazenado no navegador da Web, enquanto o usuário está navegando naquele site.
Clique aqui para saber mais sobre o teste de cookies.
Neste tutorial, aprenderemos -
- Comandos de consulta de selênio para cookies
- Por que manusear biscoitos em selênio?
- Demonstração: Manipulação de cookies no Selenium.
- Etapa 1) Armazenar informações de cookies.
- Etapa 2) Usar o cookie armazenado para fazer login no aplicativo.
Comandos de consulta de selênio para cookies
No Selenium Webdriver, podemos consultar e interagir com cookies com o método embutido abaixo:
driver.manage (). getCookies (); // Retorna a lista de todos os cookiesdriver.manage (). getCookieNamed (arg0); // Retorna um cookie específico de acordo com o nomedriver.manage (). addCookie (arg0); // Crie e adicione o cookiedriver.manage (). deleteCookie (arg0); // Excluir cookie específicodriver.manage (). deleteCookieNamed (arg0); // Exclua o cookie específico de acordo com o Nomedriver.manage (). deleteAllCookies (); // Excluir todos os cookies
Por que manusear biscoitos em selênio?
Cada cookie está associado a um nome, valor, domínio, caminho, validade e ao status de se é seguro ou não. Para validar um cliente, um servidor analisa todos esses valores em um cookie.
Ao testar um aplicativo da web usando o driver da web selenium, pode ser necessário criar, atualizar ou excluir um cookie.
Por exemplo, ao automatizar o aplicativo de compras online, muitos precisam automatizar cenários de teste como fazer pedido, visualizar carrinho, informações de pagamento, confirmação de pedido, etc.
Se os cookies não forem armazenados, você precisará executar uma ação de login todas as vezes antes de executar os cenários de teste listados acima. Isso aumentará o esforço de codificação e o tempo de execução.
A solução é armazenar cookies em um arquivo. Posteriormente, recupere os valores do cookie desse arquivo e adicione a ele sua sessão atual do navegador. Como resultado, você pode pular as etapas de login em todos os casos de teste porque sua sessão de driver contém essas informações.
O servidor de aplicativos agora trata a sessão do navegador como autenticada e leva você diretamente ao URL solicitado.
Demonstração: Manipulação de cookies no Selenium.
Usaremos http://demo.guru99.com/test/cookie/selenium_aut.php para nosso propósito de demonstração.
Este será um processo de 2 etapas.
Etapa 1) Faça login no aplicativo e armazene o cookie de autenticação gerado.
Etapa 2) Utilizado o cookie armazenado, para fazer o login novamente no aplicativo sem usar o ID do usuário e a senha.
Etapa 1) Armazenar informações de cookies.
package CookieExample;import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.util.Set;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import org.openqa.selenium.Cookie;public class cookieRead {public static void main (String [] args){Driver WebDriver;System.setProperty ("webdriver.chrome.driver", "G: ///chromedriver.exe");driver = novo ChromeDriver ();driver.get ("http://demo.guru99.com/test/cookie/selenium_aut.php");// Insira o ID do email e a senha se você já estiver registradodriver.findElement (By.name ("nome de usuário")). sendKeys ("abc123");driver.findElement (By.name ("senha")). sendKeys ("123xyz");driver.findElement (By.name ("enviar")). click ();// cria um arquivo chamado Cookies para armazenar informações de loginArquivo arquivo = novo arquivo ("Cookies.data");tentar{// Exclua o arquivo antigo se existirfile.delete ();file.createNewFile ();FileWriter fileWrite = novo FileWriter (arquivo);BufferedWriter Bwrite = novo BufferedWriter (fileWrite);// loop para obter as informações do cookie// loop para obter as informações do cookiepara (Cookie ck: driver.manage (). getCookies ()){Bwrite.write ((ck.getName () + ";" + ck.getValue () + ";" + ck.getDomain () + ";" + ck.getPath () + ";" + ck.getExpiry () + ";" + ck.isSecure ()));Bwrite.newLine ();}Bwrite.close ();fileWrite.close ();}catch (exceção ex){ex.printStackTrace ();}}}
Explicação do código:
- Criar instância WebDriver
- Visitamos o site usando o driver.get ("http://demo.guru99.com/test/cookie/selenium_aut.php")
- Faça login no aplicativo
- Leia as informações do cookie usando
driver.manage (). getCookies ();
- Armazene as informações do cookie usando a classe FileWriter para gravar fluxos de caracteres e BufferedWriter para gravar o texto em um arquivo para criar em um arquivo Cookies.data
- O arquivo "Cookies.data" armazena todas as informações dos cookies junto com "Nome, Valor, Domínio, Caminho". Podemos recuperar essas informações e fazer login no aplicativo sem inserir as credenciais de login.
- Depois de executar o código acima, o arquivo Cookie.data é criado na estrutura de pastas do projeto, conforme mostrado na tela abaixo. Abra o arquivo Cookie.data, você pode ver a credencial de login do AUT salva no formato de Cookie, veja a tela destacada abaixo
Etapa 2) Usar o cookie armazenado para fazer login no aplicativo.
Agora, vamos acessar o cookie gerado na etapa 1 e usar o cookie gerado para autenticar nossa sessão no aplicativo
package CookieExample;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.util.Date;import java.util.StringTokenizer;import org.openqa.selenium.Cookie;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;public class CookieWrite{public static void main (String [] args) {Driver WebDriver;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");driver = novo ChromeDriver ();tentar{Arquivo arquivo = novo arquivo ("Cookies.data");FileReader fileReader = novo FileReader (arquivo);BufferedReader Buffreader = novo BufferedReader (fileReader);String strline;while ((strline = Buffreader.readLine ())! = null) {StringTokenizer token = new StringTokenizer (strline, ";");while (token.hasMoreTokens ()) {Nome da string = token.nextToken ();Valor da string = token.nextToken ();Domínio da string = token.nextToken ();Caminho da string = token.nextToken ();Data de expiração = nulo;String val;if (! (val = token.nextToken ()). equals ("null")){expiração = nova data (val);}Boolean isSecure = new Boolean (token.nextToken ()).booleanValue ();Cookie ck = novo Cookie (nome, valor, domínio, caminho, expiração, isSecure);System.out.println (ck);driver.manage (). addCookie (ck); // Isso adicionará o cookie armazenado à sua sessão atual}}} catch (exceção ex) {ex.printStackTrace ();}driver.get ("http://demo.guru99.com/test/cookie/selenium_aut.php");}}
SAÍDA: Você é levado diretamente para a tela de sucesso de login, sem inserir o ID de usuário e a senha de entrada
NOTA: Use o hard refresh caso veja a página de login depois de executar o script acima.
Conclusão
Assim, você pode evitar inserir o nome de usuário e a senha no servidor, validando-os repetidamente para cada teste com a ajuda do Selenium Webdriver e, assim, economizar muito tempo.
Este artigo é uma contribuição de Mangesh Waghmare