Verwenden von Cookies mit Selenium WebDriver in Java

1. Übersicht

In diesem Artikel erhalten Sie einen kurzen Überblick über die Verwendung von Cookies mit Selenium WebDriver in Java.

Wir werden ein wenig über einige Anwendungsfälle sprechen und dann direkt in den Code springen.

2. Arbeiten mit Cookies

Ein alltäglicher Anwendungsfall für die Manipulation von Cookies besteht darin, unsere Sitzung zwischen den Tests fortzusetzen.

Ein noch einfacheres Szenario ist, wenn wir testen möchten, ob unser Backend Cookies richtig setzt.

In den nächsten Abschnitten werden wir kurz auf den Umgang mit Cookies eingehen und einfache Codebeispiele bereitstellen.

2.1. Konfiguration

Wir müssen unserem Projekt die Selen-Java-Abhängigkeit hinzufügen:

 org.seleniumhq.selenium selenium-java 3.14.0 

Lassen Sie uns unsere Testklasse einrichten:

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. Cookies lesen

Als Nächstes führen wir einen einfachen Test durch, um zu überprüfen, ob Cookies in unserem Treiber vorhanden sind, nachdem wir zu einer Webseite navigiert haben:

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

Oft möchten wir nach einem bestimmten Cookie suchen :

@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. Cookie-Eigenschaften

Ein Cookie kann einer Domain zugeordnet sein, ein Ablaufdatum haben und vieles mehr.

Schauen wir uns einige gängige Cookie-Eigenschaften an:

@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. Cookies hinzufügen

Das Hinzufügen eines Cookies ist ein unkomplizierter Vorgang.

Wir erstellen das Cookie und fügen es dem Treiber mithilfe der addCookie- Methode hinzu:

@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. Cookies löschen

Wie zu erwarten, können wir ein Cookie auch mit der Methode deleteCookie löschen :

@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. Cookies überschreiben

Obwohl es keine explizite Methode zum Überschreiben eines Cookies gibt, gibt es einen einfachen Weg.

Wir können das Cookie löschen und ein neues mit demselben Namen, aber einem anderen Wert hinzufügen:

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

In diesem kurzen Tutorial haben wir anhand schneller und praktischer Beispiele gelernt, wie Sie mit Cookies mit Selenium WebDriver in Java arbeiten.

Wie immer ist der Code auf GitHub verfügbar.