Utilizzo dei cookie con Selenium WebDriver in Java

1. Panoramica

In questo articolo, daremo una rapida occhiata a come utilizzare i cookie con Selenium WebDriver in Java.

Parleremo un po 'di alcuni casi d'uso e poi passeremo direttamente al codice.

2. Lavorare con i cookie

Un caso d'uso quotidiano per la manipolazione dei cookie consiste nel persistere la nostra sessione tra i test.

Uno scenario ancora più semplice è quando vogliamo verificare che il nostro backend stia impostando correttamente i cookie.

Nelle prossime sezioni parleremo brevemente della gestione dei cookie fornendo semplici esempi di codice.

2.1. Impostare

Dobbiamo aggiungere la dipendenza selenio-java al nostro progetto:

 org.seleniumhq.selenium selenium-java 3.14.0 

Impostiamo la nostra classe di test:

public class SeleniumCookiesJUnitLiveTest { private WebDriver driver; private String navUrl; @Before public void setUp() { Capabilities capabilities = DesiredCapabilities.firefox(); driver = new FirefoxDriver(capabilities); navUrl = "//baeldung.com"; } }

2.2. Lettura dei cookie

Successivamente, implementeremo un semplice test per verificare che i cookie esistano nel nostro driver dopo essere passati a una pagina Web:

@Test public void whenNavigate_thenCookiesExist() { driver.navigate().to(navUrl); Set cookies = driver.manage().getCookies(); assertThat(cookies, is(not(empty()))); }

Spesso potremmo voler cercare un cookie specifico :

@Test public void whenNavigate_thenLpCookieIsHasCorrectValue() { driver.navigate().to(navUrl); Cookie lpCookie = driver.manage().getCookieNamed("lp_120073"); assertThat(lpCookie.getValue(), containsString("www.baeldung.com")); }

2.3. Proprietà dei cookie

Un cookie può essere associato a un dominio, avere una data di scadenza e molto altro.

Diamo un'occhiata ad alcune proprietà comuni dei cookie:

@Test public void whenNavigate_thenLpCookieHasCorrectProps() { driver.navigate().to(navUrl); Cookie lpCookie = driver.manage().getCookieNamed("lp_120073"); assertThat(lpCookie.getDomain(), equalTo(".baeldung.com")); assertThat(lpCookie.getPath(), equalTo("/")); assertThat(lpCookie.getExpiry(), is(not(nullValue()))); assertThat(lpCookie.isSecure(), equalTo(false)); assertThat(lpCookie.isHttpOnly(), equalTo(false)); }

2.4. Aggiunta di cookie

L'aggiunta di un cookie è un processo semplice.

Creiamo il cookie e lo aggiungiamo al driver utilizzando il metodo addCookie :

@Test public void whenAddingCookie_thenItIsPresent() { driver.navigate().to(navUrl); Cookie cookie = new Cookie("foo", "bar"); driver.manage().addCookie(cookie); Cookie driverCookie = driver.manage().getCookieNamed("foo"); assertThat(driverCookie.getValue(), equalTo("bar")); }

2.5. Eliminazione dei cookie

Come ci saremmo potuti aspettare, possiamo anche eliminare un cookie utilizzando il metodo deleteCookie :

@Test public void whenDeletingCookie_thenItIsAbsent() { driver.navigate().to(navUrl); Cookie lpCookie = driver.manage().getCookieNamed("lp_120073"); assertThat(lpCookie, is(not(nullValue()))); driver.manage().deleteCookie(lpCookie); Cookie deletedCookie = driver.manage().getCookieNamed("lp_120073"); assertThat(deletedCookie, is(nullValue())); }

2.6. Ignorare i cookie

Sebbene non esista un metodo esplicito per sovrascrivere un cookie, esiste un modo semplice.

Possiamo eliminare il cookie e aggiungerne uno nuovo con lo stesso nome ma un valore diverso:

@Test public void whenOverridingCookie_thenItIsUpdated() { driver.navigate().to(navUrl); Cookie lpCookie = driver.manage().getCookieNamed("lp_120073"); driver.manage().deleteCookie(lpCookie); Cookie newLpCookie = new Cookie("lp_120073", "foo"); driver.manage().addCookie(newLpCookie); Cookie overriddenCookie = driver.manage().getCookieNamed("lp_120073"); assertThat(overriddenCookie.getValue(), equalTo("foo")); }

3. Conclusione

In questo rapido tutorial, abbiamo imparato come lavorare con i cookie utilizzando Selenium WebDriver in Java attraverso esempi rapidi e pratici.

Come sempre, il codice è disponibile su GitHub.