Перейти к основному содержимому

Использование файлов cookie с Selenium WebDriver в Java

· 3 мин. чтения

1. Обзор

В этой статье мы кратко рассмотрим, как использовать файлы cookie с Selenium WebDriver в Java.

Мы немного поговорим о некоторых вариантах использования, а затем сразу перейдем к коду.

Повседневный вариант использования файлов cookie — это сохранение нашего сеанса между тестами.

Еще более простой сценарий — это когда мы хотим проверить, правильно ли наш сервер устанавливает файлы cookie.

В следующих разделах мы кратко поговорим об обработке файлов cookie и приведем простые примеры кода.

2.1. Настраивать

Нам нужно добавить зависимость selenium-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://foreach.com";
}
}

Затем мы реализуем простой тест, чтобы убедиться, что файлы 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.foreach.com"));
}

Файл cookie может быть связан с доменом, иметь дату истечения срока действия и многое другое.

Давайте рассмотрим некоторые общие свойства файлов cookie:

@Test
public void whenNavigate_thenLpCookieHasCorrectProps() {
driver.navigate().to(navUrl);
Cookie lpCookie = driver.manage().getCookieNamed("lp_120073");

assertThat(lpCookie.getDomain(), equalTo(".foreach.com"));
assertThat(lpCookie.getPath(), equalTo("/"));
assertThat(lpCookie.getExpiry(), is(not(nullValue())));
assertThat(lpCookie.isSecure(), equalTo(false));
assertThat(lpCookie.isHttpOnly(), equalTo(false));
}

Добавление файла 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"));
}

Как и следовало ожидать, мы также можем удалить файл cookie с помощью метода 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()));
}

Хотя явного метода переопределения файла 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. Заключение

В этом кратком руководстве мы узнали, как работать с файлами cookie с помощью Selenium WebDriver в Java на быстрых и практических примерах.

Как всегда, код доступен на GitHub .