Какой профиль использует Selenium WebDriver по умолчанию?

Где Selenium WebDriver (a.k.a Selenium 2) получает анонимный профиль, который он использует при открытии FirefoxDriver? Если он использовал значение по умолчанию для Firefox,% appdata%/roaming/mozilla/firefox/profiles, то, если бы я отключил плагин firefox, он также должен быть отключен для Selenium WebDriver, так почему это не так?

Ответы

Ответ 1

Я отвечу на него, поддерживая комментарий от @twall: при запуске firefox в Selenium 2 WebDriver он запускает новый анонимный профиль.

Однако, если вы хотите изменить его, вы можете создать новый профиль Firefox и назвать его каким-то образом, вы знаете, что это такое - например. SELENIUM

Затем в коде выполните следующее:

 ProfilesIni profile = new ProfilesIni();
 FirefoxProfile ffprofile = profile.getProfile("SELENIUM");
 WebDriver driver = new FirefoxDriver(ffprofile);

Таким образом, Firefox всегда будет запускать этот профиль. В профиле вы делаете все необходимые настройки

Ответ 2

Вы можете назначить каждой сетке селена 2 node конкретный профиль firefox:

java -jar selenium-server-standalone-2.37.0.jar -Dwebdriver.firefox.profile= my-profile -role node -hub http://example-server.org:4444/grid/register

Обратите внимание, что значение файла webdriver.firefox.profile должно быть именем профиля firefox, а не местоположением или именем папки

Ответ 3

При запуске webdriver на тестовом сервере без параметров для создания профилей на компьютере вы можете программно создать свой профиль:

private FirefoxProfile GetFirefoxProfile()
{
    FirefoxProfile firefoxProfile = new FirefoxProfile();
    firefoxProfile.SetPreference("network.automatic-ntlm-auth.trusted-uris", "http://localhost");
    return firefoxProfile;
}

Ответ 4

Получение профиля нецелесообразно, поскольку оно внутренне создает другую копию извлеченного именованного профиля. Доступ к исходному профилю требуется, если например: данные тестового покрытия должны быть записаны в хранилище данных по нескольким вызовам.

Вот возможное решение путем переопределения класса ProfilesIni Selenium

Начните с создания пользовательского профиля с помощью firefox -p, скажем, "CustomSeleniumProfile"

ProfilesIni profileini = new ProfilesIni() {
    @Override
    public FirefoxProfile getProfile(String profileName) {
            File appData = locateAppDataDirectory(Platform.getCurrent());
            Map<String, File> profiles = readProfiles(appData);
            File profileDir = profiles.get(profileName);
            if (profileDir == null)
              return null;
            return new FirefoxProfile(profileDir);
     }
};
FirefoxProfile profile = profileini.getProfile("CustomSeleniumProfile");
//profile.setEnableNativeEvents(false);

driver = new FirefoxDriver(profile);
//ffDriver.manage().deleteAllCookies();
driver.get("http://www.google.com");