Подтвердить что ты не робот

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?
4b9b3361

Ответ 1

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

Ответ 2

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

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

Ответ 3

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

Способ его выполнения описан здесь: https://github.com/webmetrics/browsermob-proxy (раздел HTTP Request Manipulation)

Ответ 4

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

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