WebDriver FireFoxProfile UserAgent switching with 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?

答案 1

RemoteWebdriver(FirefoxDriver 的父类)仅在会话启动时(在构造函数中)更新功能映射。不幸的是,我们无法在其他地方修改它。我认为这是一个非常好的主意。


答案 2

可能只有一种方法 - 通过扩展。但是,我从未尝试过这个...

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

它可能使用的扩展是用户代理切换器:https://addons.mozilla.org/cs/firefox/addon/user-agent-switcher/?src=ss

但如前所述,我从未这样做过,也不知道如何通过硒控制插件。


推荐