Всем привет:) Всем известно, что метод deleteAllCookies()
удаляет куки текущего домена.
Есть ли возможность удалять куки ВСЕХ доменов в текущем экземпляре браузера, без его перезапуска?
можно удалять с помощью настроек браузера все куки (например в хроме):
driver.get("chrome://settings/cookies"); // переход на страницу настроек
final By cleanCacheIframe = By.xpath("//iframe[@src='chrome://settings-frame/cookies']"); //фрейм с кнопкой для удаления
driver.switchTo().frame(driver.findElement(cleanCacheIframe));
driver.findElement(By.xpath("//*[@class='remove-all-cookies-button']")).click(); // нажатие на кнопку удаления
А для FireFox такой метод пройдет?
для firefox нет, это конкретно для хрома пример
Хотелось бы какой нибудь универсальный механизм.
А так в голову пока приходит костыльный способ. Тупо делать driver.get()
и затем driver.deleteAllCookies()
и так для всех доменов, но это как то не профессионально что ли:)
Еще, вроде как, есть вариант с назначением папки для кук и очисткой этой папки когда нужно куки удалить
можно пробовать запускать каждый instance в private mode(ключ -private-window). Firefox/CommandLineOptions - MozillaWiki
И что нам это даст в итоге?
если тесты не в параллели запускать и закрывать браузер после выполнения теста, то куки не сохраняются и каждый раз по новой. с параллельными не прокатит. можно попробовать стартовать каждый раз с новый профилем firefox настроенным под нужды(не уверен прокатит ли, нужно проверять)
Вообщем элегантного подхода не нашел, поэтому пришлось перекладывать часть по удалению cookie на те тесты, которые работали в авторизованной зоне