Показаны сообщения с ярлыком ie. Показать все сообщения
Показаны сообщения с ярлыком ie. Показать все сообщения

18 сентября 2012

Полезняшка: Сброс кэша в IE для Selenium тестов

Даже не спрашивайте меня зачем мне это понадобилось.
Понадобилось и все.

Достаточно аккуратная возможность сбросить кэши есть в 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.
Сделать это можно  опять же двумя способами:

  1. Создать прокси класс для работы с RemoteWebDriver -почти готовое решение есть вот здесь.
  2. Написать маленький Jetty-based сервис и положить на ноду. Это решение я сделал в качестве примера и выложил на GitHub





18 июня 2012

Еще один извращенный способ запуска Selenium

Вот тут господин Баранцев опубликовал статью по запуску Internet Explorer Driver Server для работы Selenium-а.

Вкратце:

  1. Укладываем exe-щник в папочку, путь к папочке прописываем в PATH
  2. запускаем Selemiun Server с  -Dwebdriver.ie.driver=<путь к файлу>
Глядя  на все это на ум приходят следующие мысли.

Как только разработчики браузеров не извернуться для того чтобы повысить свою привлекательность и не похерить свою приватность.
С точки зрения автоматизации браузерного тестирования Firefox пока остается впереди планеты всей - уж очень хорошо и глубоко проинтегрирован в него WebDriver (кстати вышедший из Google!!!), однако Chrome Driver как был, так и существует в виде отдельного проекта и КПП внутрь хрома, который кстати не до конца реализует спецификацию JSON Wire Protocol (мой твит и бага в трекере).
Вот и еще один пациент пошел по пути наименьшего сопротивления  - выстроить реализацию JSON Wire Protocol в виде отдельно стоящего чуда, которое нужно отдельно деплоить и обновлять в случае фиксов (опять же вспоминаем Google Chrome, который уже 20 версии!!!).
Это понятно с той точки зрения, что не нужно тащить чей-то чужой протокол внутрь своей кодобазы, но внещне выглядит так что людям тупо лень.

Как-то так, извиняюсь за сумбур.