JavaでのSeleniumWebDriverでのCookieの使用
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でから入手できます。