【问题标题】:Issue installing extension with Selenium remote Firefox webdriver in Saucelabs在 Saucelabs 中使用 Selenium 远程 Firefox webdriver 安装扩展时出现问题
【发布时间】:2016-05-03 19:23:44
【问题描述】:

问题
在 Saucelabs 上远程执行 Selenium 测试期间尝试安装 Firefox 浏览器扩展。在本地执行测试时,扩展在 Firefox 中已安装并处于活动状态,但在 Saucelabs 上远程执行时,扩展不会出现在已安装扩展的列表中。按照这个 Saucelabs support article 中概述的步骤。

设置
Selenium.Support v2.48.2 或 v2.49.0
Selenium.WebDriver v2.48.2 或 v2.49.0
Windows 10 或 7
火狐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);
    }

Firefox 设置
在本地执行期间查看 Firefox 中的 about:support 并打开 user.js 文件时,它包括以下与 Web 驱动程序配置匹配的扩展设置。检查 Saucelabs 远程实例上的 user.js 不包括该内容。这是远程 user.js 文件内容的paste bin

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

【问题讨论】:

    标签: java c# firefox selenium saucelabs


    【解决方案1】:

    向 SeleniumHQ 发布了bug report 并收到了此响应,从而修复了上述代码。

    在 .NET 的 RemoteWebDriver 案例中,您需要使用 ToBase64String() 方法。这应该可以解决问题。请注意,这 是其他驱动程序具有类型安全选项的原因之一 类而不是传递原始功能。的未来版本 .NET 绑定也应该将此模式扩展到 Firefox,删除 这是未来的一个问题。

    上面的 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/a/14285902/276681
    https://code.google.com/p/selenium/issues/detail?id=2696#c4

    【讨论】:

      猜你喜欢
      • 2016-01-16
      • 1970-01-01
      • 2018-06-10
      • 2014-03-17
      • 2022-12-18
      • 1970-01-01
      • 1970-01-01
      • 2011-07-05
      • 1970-01-01
      相关资源
      最近更新 更多