Come gestire i cookie in Selenium webdriver
Un cookie HTTP รจ composto da informazioni sull'utente e sulle sue preferenze. Memorizza le informazioni utilizzando una coppia chiave-valore. Si tratta di una piccola porzione di dati inviata dall'applicazione Web e archiviata nel browser Web, mentre l'utente naviga nel sito Web.
Clicca qui per saperne di piรน test dei cookie.
Selenium Comandi di query per i cookie
In Selenium Webdriver, possiamo interrogare e interagire con i cookie con il metodo integrato di seguito:
| Selenium Comandi di interrogazione | Uscita |
|---|---|
driver.manage().getCookies(); |
Restituisce l'elenco di tutti i cookie |
driver.manage().getCookieNamed(arg0); |
Restituisce cookie specifico in base al nome |
driver.manage().addCookie(arg0); |
Crea e aggiungi il cookie |
driver.manage().deleteCookie(arg0); |
Elimina cookie specifico |
driver.manage().deleteCookieNamed(arg0); |
Elimina cookie specifico in base al nome |
driver.manage().deleteAllCookies(); |
Elimina tutti i cookie |
Perchรฉ gestire (accettare) i cookie in Selenium?
A ogni cookie รจ associato un nome, valore, dominio, percorso, scadenza e lo stato se รจ sicuro o meno. Per convalidare un client, un server analizza tutti questi valori in un cookie.
Quando Collaudo un'applicazione web che utilizza il driver web selenium, potrebbe essere necessario creare, aggiornare o eliminare un cookie.
Ad esempio, quando si automatizza l'applicazione per lo shopping online, รจ necessario automatizzare scenari di test come effettuare ordini, visualizzare il carrello, informazioni sul pagamento, conferma dell'ordine, ecc.
Se i cookie non vengono memorizzati, sarร necessario eseguire ogni volta l'operazione di accesso prima di eseguire gli scenari di test sopra elencati. Ciรฒ aumenterร lo sforzo di codifica e il tempo di esecuzione.
La soluzione รจ memorizzare i cookie in un file. Later, recupera i valori del cookie da questo file e aggiungi ad esso la sessione corrente del browser. Di conseguenza, puoi saltare i passaggi di accesso in ogni Test Case perchรฉ la sessione del conducente contiene queste informazioni.
Il server delle applicazioni ora considera la sessione del browser come autenticata e ti porta direttamente all'URL richiesto.
Come gestire i cookie in Selenium
Noi useremo https://demo.guru99.com/test/cookie/selenium_aut.php per il nostro scopo dimostrativo.
Questo sarร un processo in 2 fasi.
Passo 1) Accedi all'applicazione e memorizza il cookie di autenticazione generato.
Passo 2) Utilizzato il cookie memorizzato, per accedere nuovamente all'applicazione senza utilizzare ID utente e password.
Passaggio 1) Memorizzazione delle informazioni sui cookie
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)
{
WebDriver driver;
System.setProperty("webdriver.chrome.driver","G:///chromedriver.exe");
driver=new ChromeDriver();
driver.get("https://demo.guru99.com/test/cookie/selenium_aut.php");
// Input Email id and Password If you are already Register
driver.findElement(By.name("username")).sendKeys("abc123");
driver.findElement(By.name("password")).sendKeys("123xyz");
driver.findElement(By.name("submit")).click();
// create file named Cookies to store Login Information
File file = new File("Cookies.data");
try
{
// Delete old file if exists
file.delete();
file.createNewFile();
FileWriter fileWrite = new FileWriter(file);
BufferedWriter Bwrite = new BufferedWriter(fileWrite);
// loop for getting the cookie information
// loop for getting the cookie information
for(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(Exception ex)
{
ex.printStackTrace();
}
}
}
Spiegazione del codice:
- Crea un'istanza WebDriver
- Visitiamo il sito Web utilizzando driver.get(โhttps://demo.guru99.com/test/cookie/selenium_aut.phpโ)
- Accedi all'applicazione
- Leggi l'informativa sui cookie utilizzando
driver.manage().getCookies();
- Memorizza le informazioni sui cookie utilizzando la classe FileWriter per scrivere flussi di caratteri e BufferedWriter per scrivere il testo in un file da creare in un file Cookies.data
- Il file "Cookies.data" memorizza tutte le informazioni sui cookie insieme a "Nome, valore, dominio, percorso". Possiamo recuperare queste informazioni e accedere all'applicazione senza inserire le credenziali di accesso.
- Una volta eseguito il codice sopra, il file Cookie.data viene creato nella struttura delle cartelle del progetto come mostrato nella schermata seguente. Apri il file Cookie.data, puoi vedere che le credenziali di accesso dell'AUT sono salvate nel formato Cookie, vedi la schermata evidenziata di seguito
Passaggio 2) Utilizzo del cookie memorizzato per accedere all'applicazione
Ora accederemo al cookie generato nel passaggio 1 e utilizzeremo il cookie generato per autenticare la nostra sessione nell'applicazione
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){
WebDriver driver;
System.setProperty("webdriver.chrome.driver","G://chromedriver.exe");
driver=new ChromeDriver();
try{
File file = new File("Cookies.data");
FileReader fileReader = new FileReader(file);
BufferedReader Buffreader = new BufferedReader(fileReader);
String strline;
while((strline=Buffreader.readLine())!=null){
StringTokenizer token = new StringTokenizer(strline,";");
while(token.hasMoreTokens()){
String name = token.nextToken();
String value = token.nextToken();
String domain = token.nextToken();
String path = token.nextToken();
Date expiry = null;
String val;
if(!(val=token.nextToken()).equals("null"))
{
expiry = new Date(val);
}
Boolean isSecure = new Boolean(token.nextToken()).
booleanValue();
Cookie ck = new Cookie(name,value,domain,path,expiry,isSecure);
System.out.println(ck);
driver.manage().addCookie(ck); // This will add the stored cookie to your current session
}
}
}catch(Exception ex){
ex.printStackTrace();
}
driver.get("https://demo.guru99.com/test/cookie/selenium_aut.php");
}
}
Produzione: Verrai indirizzato direttamente alla schermata di accesso riuscito senza inserire l'ID utente e la password
NOTA: Utilizza l'aggiornamento forzato nel caso in cui venga visualizzata la pagina di accesso dopo aver eseguito lo script precedente.
Conclusione
In questo modo puoi evitare di inserire nome utente e password sul server convalidandoli piรน e piรน volte per ogni test con l'aiuto di Selenium Webdriver, risparmiando cosรฌ molto tempo.


