1. Обзор
В этой статье мы кратко рассмотрим, как использовать файлы cookie с Selenium WebDriver в Java.
Мы немного поговорим о некоторых вариантах использования, а затем сразу перейдем к коду.
2. Работа с файлами cookie
Повседневный вариант использования файлов 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";
}
}
2.2. Чтение файлов cookie
Затем мы реализуем простой тест, чтобы убедиться, что файлы 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"));
}
2.3. Свойства файлов cookie
Файл 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));
}
2.4. Добавление файлов cookie
Добавление файла 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. Удаление файлов cookie
Как и следовало ожидать, мы также можем удалить файл 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()));
}
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. Заключение
В этом кратком руководстве мы узнали, как работать с файлами cookie с помощью Selenium WebDriver в Java на быстрых и практических примерах.
Как всегда, код доступен на GitHub .