Какой профиль использует 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");