Utilisation de cookies avec Selenium WebDriver en Java

1. Vue d'ensemble

Dans cet article, nous verrons rapidement comment utiliser les cookies avec Selenium WebDriver en Java.

Nous parlerons un peu de certains cas d'utilisation, puis nous passerons directement au code.

2. Utilisation des cookies

Un cas d'utilisation quotidien pour la manipulation des cookies est de conserver notre session entre les tests.

Un scénario encore plus simple est celui où nous voulons tester que notre backend configure correctement les cookies.

Dans les sections suivantes, nous parlerons brièvement de la gestion des cookies tout en fournissant des exemples de code simples.

2.1. Installer

Nous devrons ajouter la dépendance selenium-java à notre projet:

 org.seleniumhq.selenium selenium-java 3.14.0 

Configurons notre classe de 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. Lire les cookies

Ensuite, nous mettrons en œuvre un test simple pour vérifier que les cookies existent dans notre pilote après avoir navigué sur une page Web:

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

Souvent, nous pourrions vouloir rechercher un cookie spécifique :

@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. Propriétés des cookies

Un cookie peut être associé à un domaine, avoir une date d'expiration et bien plus encore.

Jetons un coup d'œil à quelques propriétés communes des cookies:

@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. Ajout de cookies

L'ajout d'un cookie est un processus simple.

Nous créons le cookie et l'ajoutons au pilote en utilisant la méthode 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. Supprimer les cookies

Comme on pouvait s'y attendre, nous pouvons également supprimer un cookie en utilisant la méthode 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. Remplacer les cookies

Bien qu'il n'y ait pas de méthode explicite pour remplacer un cookie, il existe un moyen simple.

Nous pouvons supprimer le cookie et en ajouter un nouveau avec le même nom mais une valeur différente:

@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. Conclusion

Dans ce rapide didacticiel, nous avons appris à utiliser les cookies à l'aide de Selenium WebDriver en Java grâce à des exemples rapides et pratiques.

Comme toujours, le code est disponible sur sur GitHub.