1. 概要

この記事では、Cookieの使用方法をJavaのSeleniumWebDriverで簡単に説明します。

いくつかのユースケースについて少し説明してから、コードに直接ジャンプします。

2. クッキーの操作

Cookieを操作するための日常的な使用例は、テスト間でセッションを継続することです。

さらに単純なシナリオは、バックエンドがCookieを適切に設定していることをテストする場合です。

次のセクションでは、簡単なコード例を示しながら、Cookieの処理について簡単に説明します。

2.1. 設定

セレン-java依存関係をプロジェクトに追加する必要があります。

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>3.14.0</version>
</dependency>

次に、Geckoドライバーの最新バージョンをダウンロードする必要があります。

次に、テストクラスを設定しましょう。

public class SeleniumCookiesJUnitLiveTest {

    private WebDriver driver;
    private String navUrl;

    @Before
    public void setUp() {
        Capabilities capabilities = DesiredCapabilities.firefox();
        driver = new FirefoxDriver(capabilities);
        navUrl = "https://baeldung.com";
    }
}

2.2. クッキーを読む

次に、Webページに移動した後、ドライバーにCookieが存在することを確認するための簡単なテストを実装します。

@Test
public void whenNavigate_thenCookiesExist() {
    driver.navigate().to(navUrl);
    Set<Cookie> cookies = driver.manage().getCookies();

    assertThat(cookies, is(not(empty())));
}

多くの場合、特定のCookieを検索したい場合があります

@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は、ドメインに関連付けたり、有効期限を設定したりすることができます。

いくつかの一般的な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. クッキーの追加

Cookieの追加は簡単なプロセスです。

Cookieを作成し、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. クッキーの削除

予想どおり、deleteCookieメソッドを使用してCookieを削除することもできます。

@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. クッキーのオーバーライド

Cookieをオーバーライドする明示的な方法はありませんが、簡単な方法があります。

Cookieを削除して、同じ名前で値が異なる新しいCookieを追加できます。

@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. 結論

このクイックチュートリアルでは、JavaでSelenium WebDriverを使用してCookieを操作する方法を、すばやく実用的な例で学びました。

いつものように、コードはGitHubから入手できます。