Понадобилось и все.
Достаточно аккуратная возможность сбросить кэши есть в Firefox.
public WebDriver createFf() { final DesiredCapabilities firefox = DesiredCapabilities.firefox(); final FirefoxProfile firefoxProfile = new FirefoxProfile(); disableCacheFF(firefoxProfile); final WebDriver firefoxDriver = new FirefoxDriver(firefoxProfile); return firefoxDriver; } public void disableCacheFF(final FirefoxProfile firefoxProfile) { firefoxProfile.setPreference("browser.cache.disk.enable", false); firefoxProfile.setPreference("browser.cache.memory.enable", false); firefoxProfile.setPreference("browser.cache.offline.enable", false); firefoxProfile.setPreference("network.http.use-cache", false); }
В случае с Google Chrome я нашел такое решениеfinal DesiredCapabilities chrome = DesiredCapabilities.chrome(); chrome.setCapability("chrome.switches", Arrays.asList("--start-maximized","--disk-cache-size=1","--media-cache-size=1"));
Способ сброса кэша в Opera я пока исследую.
В остатке - Internet Explorer.
С ним как обычно беда, и беде этой не первый год.
Но windows/.NET/MS - разработчики -
В итоге было решено сделать "крайне элегантный в своей простоте" (с) workaround - вызов нативной DLL-ки.
Делается это так
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8
Последняя циферка является маской действия, вот тут расписано какая маска что значит.
Осталось это только выполнить на конкретной машине где запускается Internet Explorer.
Сделать это можно опять же двумя способами:
- Создать прокси класс для работы с RemoteWebDriver -почти готовое решение есть вот здесь.
- Написать маленький Jetty-based сервис и положить на ноду. Это решение я сделал в качестве примера и выложил на GitHub.
Комментариев нет:
Отправить комментарий