Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Как удалить(очистить) куки после авторизации на сайте?


#1

Здравствуйте, с помощью selenium + java, написан тест который проверяет список емейлов(заблокированые или нет) на hotmail.com.

Так как аккаунтов для првоерки реально много, нужно оптимизировать выполнение теста. Сейчас, в силу моих умений(а точнее неумений), тест закрывает и открывает драйвер после проверки каждого аккаунта. (было решено так, потому что при входе на hotmail.com есть 3 разные страницы (разблокировка, инбокс, настройка).

Собственно вопрос: "Как удалить куки которые появились после авторизации на сайте в процессе выполнения теста?"  

driver.manage().deleteCookieNamed("CookieName");
driver.manage().deleteCookie(loadedCookie);
driver.manage().deleteAllCookies();

Юзал не помогло


(Mykhailo Poliarush) #2

да вот ровно, как вы указали, так и нужно

какой браузер вы используете для тестов?


#3

Конкретно для этого теста Firefox.

Куки получаю с помощью:

 Set<Cookie> allCookies = driver.manage().getCookie();

Куки берутся и потом удаляются, но всеравно остаюсь залогиненым.


(asolntsev) #4

После удаления куков надо обновить страницу. 


#5

Страницу обновлял и пробовал переходить на другую, всеравно все так же (


#6

Дело в том что на почтовике хотмейла, куки отвечающие за логин юзера "login.live.com" а драйвер берет куки конкретного домена "live.com".

Страница "login.live.com" появляется только в момент авторизации и сразу идет редирект на почту на live.com.

Можно ли как то взять все куки которые сохранены в браузере, или как словить момент с "login.live.com" ?


#7

Решил данную проблему:

Вместо Firefox взял Chrome. Дальше все просто

driver.get("chrome://settings/clearBrowserData");

final By cleanCacheIframe = By.xpath("//iframe[@src='chrome://settings-frame/clearBrowserData']");
driver.switchTo().frame(driver.findElement(cleanCacheIframe));
 
driver.findElement(By.id("clear-browser-data-commit")).click();

(sidelnikovmike) #8

Можно еще через javascriptexecutor. Не знаю точно, что нужно вызвать, но js точно это умеет делать.