首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Saucelabs中使用Selenium remote Firefox webdriver发布安装扩展

在Saucelabs中使用Selenium remote Firefox webdriver发布安装扩展
EN

Stack Overflow用户
提问于 2016-01-27 01:28:30
回答 1查看 914关注 0票数 2

问题

试图在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#测试设置

代码语言:javascript
复制
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。

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-03 14:29:07

将一个错误报告发送到SeleniumHQ并收到这个响应,这修复了上面的代码。

在RemoteWebDriver的情况下,.NET需要使用ToBase64String()方法。这应该能解决这个问题。请注意,这是其他驱动程序拥有类型安全选项类而不是传递原始功能的原因之一。.NET绑定的未来版本也应该将这种模式扩展到火狐,在将来将其作为一个问题删除。

上面的GetRemoteDriver方法应该更新为此。

代码语言:javascript
复制
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/a/14285902/276681

https://code.google.com/p/selenium/issues/detail?id=2696#c4

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35027258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档