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.