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.