问题
试图在Saucelabs上远程执行Selenium测试时安装Firefox浏览器扩展。在本地执行测试时,扩展在Firefox中安装并处于活动状态,但在Saucelabs上远程执行时,扩展不会出现在已安装的扩展列表中。遵循此Saucelabs 支持文章中概述的步骤。
设置
Selenium.Support v2.48.2或v2.49.0
Selenium.WebDriver v2.48.2或v2.49.0
Windows 10或7
Firefox 43
C#测试设置
private static FirefoxProfile CreateFirefoxProfile()
{
FirefoxProfile profile = new FirefoxProfile();
profile.AddExtension("Tools/modify_headers-0.7.1.1-fx.xpi");
profile.SetPreference("general.useragent.override", "UA-STRING");
profile.SetPreference("extensions.modify_headers.currentVersion", "0.7.1.1-signed");
profile.SetPreference("modifyheaders.headers.count", 1);
profile.SetPreference("modifyheaders.headers.action0", "Add");
profile.SetPreference("modifyheaders.headers.name0", "SampleHeader");
profile.SetPreference("modifyheaders.headers.value0", "test1234");
profile.SetPreference("modifyheaders.headers.enabled0", true);
profile.SetPreference("modifyheaders.config.active", true);
profile.SetPreference("modifyheaders.config.alwaysOn", true);
profile.SetPreference("modifyheaders.config.start", true);
return profile;
}
private static IWebDriver GetRemoteDriver()
{
var capabilities = new DesiredCapabilities();
var profile = CreateFirefoxProfile();
capabilities.SetCapability(FirefoxDriver.ProfileCapabilityName, profile);
capabilities.SetCapability("name", buildContext);
capabilities.SetCapability(CapabilityType.BrowserName,"firefox");
capabilities.SetCapability(CapabilityType.Version,"");
capabilities.SetCapability(CapabilityType.Platform, "Windows 10");
capabilities.SetCapability("screen-resolution", "1280x1024");
capabilities.SetCapability("username", "SaucelabsUserName");
capabilities.SetCapability("accessKey", "SaucelabsAccessKey");
capabilities.SetCapability("build", "BuildNumber");
return new RemoteWebDriver(new Uri("http://ondemand.saucelabs.com/wd/hub"), capabilities);
}火狐设置
当查看在本地执行和打开user.js文件期间对Firefox的支持时,它包括以下与web驱动程序配置相匹配的扩展名设置。在Saucelabs远程实例上检查user.js不包括这一点。下面是远程糊状桶文件内容的一个user.js。
user_pref("general.useragent.override", "UA-STRING");
user_pref("extensions.modify_headers.currentVersion", "0.7.1.1-signed");
user_pref("modifyheaders.headers.count", 1);
user_pref("modifyheaders.headers.action0", "Add");
user_pref("modifyheaders.headers.name0", "SampleHeader");
user_pref("modifyheaders.headers.value0", "test1234");
user_pref("modifyheaders.headers.enabled0", true);
user_pref("modifyheaders.config.active", true);
user_pref("modifyheaders.config.alwaysOn", true);
user_pref("modifyheaders.config.start", true);我还尝试引用具有相同结果的xpi外部版本。https://addons.mozilla.org/firefox/downloads/latest/967/addon-967-latest.xpi
发布于 2016-02-03 14:29:07
将一个错误报告发送到SeleniumHQ并收到这个响应,这修复了上面的代码。
在RemoteWebDriver的情况下,.NET需要使用ToBase64String()方法。这应该能解决这个问题。请注意,这是其他驱动程序拥有类型安全选项类而不是传递原始功能的原因之一。.NET绑定的未来版本也应该将这种模式扩展到火狐,在将来将其作为一个问题删除。
上面的GetRemoteDriver方法应该更新为此。
private static IWebDriver GetRemoteDriver()
{
var capabilities = new DesiredCapabilities();
var profile = CreateFirefoxProfile();
// Note the change here, calling .ToBase64String()
capabilities.SetCapability(FirefoxDriver.ProfileCapabilityName, profile.ToBase64String());
capabilities.SetCapability("name", buildContext);
capabilities.SetCapability(CapabilityType.BrowserName,"firefox");
capabilities.SetCapability(CapabilityType.Version,"");
capabilities.SetCapability(CapabilityType.Platform, "Windows 10");
capabilities.SetCapability("screen-resolution", "1280x1024");
capabilities.SetCapability("username", "SaucelabsUserName");
capabilities.SetCapability("accessKey", "SaucelabsAccessKey");
capabilities.SetCapability("build", "BuildNumber");
return new RemoteWebDriver(new Uri("http://ondemand.saucelabs.com/wd/hub"), capabilities);
}在查看了修复程序之后,我找到了提到此更改的其他资源。
https://stackoverflow.com/questions/35027258
复制相似问题