WebDriver FireFoxProfile UserAgent переключение с FireFoxDriver

Мне интересно, могу ли я изменить профиль агента пользователя на лету, не создавая новый экземпляр ForeFoxDriver? У меня есть следующий код, который я могу передать в пользовательском агенте для iphone или ipad и т. Д., Он работает нормально, но мне нужно создать новый экземпляр для каждого теста, который медленный, поскольку он открывает / закрывает браузер. Например, после выполнения моих тестов с пользовательским агентом iPhone, я хотел бы переключить профиль на пользовательский агент Android или пользовательский агент iPad, получает ли драйвер возможность изменить это без необходимости создания нового экземпляра?

FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("general.useragent.override","some user agent, like iphone or iPad");
WebDriver driver = new FirefoxDriver(profile);

// do some tests
// set profile to new user agent
// profile.setPreference("general.useragent.override","some android user agent");

// can i now set the driver to the new profile here and perform more tests on this same instance of the driver?

4 ответа

Решение

RemoteWebdriver (родительский класс FirefoxDriver) обновляет карту возможностей только при запуске сеанса (в конструкторе). К сожалению, мы не можем изменить это в другом месте. Я думаю, что это очень хорошая идея.

Существует, вероятно, только один путь - через расширения. Тем не менее, я никогда не пробовал это...

FirefoxProfile ffProfile = new FirefoxProfile();
ffProfile.addExtension(new File("path/to/extension") );
WebDriver driver = new FirefoxDriver(ffProfile);

Расширение, с которым он может работать, - это User Agent Switcher: https://addons.mozilla.org/cs/firefox/addon/user-agent-switcher/?src=ss

Но, как уже говорилось, я никогда этого не делал и понятия не имею, как управлять аддоном через Selenium.

Эта работа для меня:

server.addHeader("User-Agent", uaString)

В нашей компании мы используем прокси Browsermob, прокси с открытым исходным кодом, написанный на Java. Он прекрасно интегрируется с Selenium, и вы можете управлять им из своего кода. Он служит нам для многих целей, одна из них - манипулирование заголовками.

Способ сделать это описан здесь: https://github.com/webmetrics/browsermob-proxy (раздел "Управление запросами HTTP")

Другие вопросы по тегам