如何通过Selenium WebDriver以编程方式配置Chrome扩展程序

Jer*_*rry 13 selenium google-chrome google-chrome-extension saucelabs selenium-webdriver

我需要在Chrome中安装和配置扩展程序,以便在Selenium测试执行期间修改所有请求标头.我已经能够从Saucelabs中的这篇支持文章中看到一个示例,展示如何在本地为Firefox做这个,但不知道如何为Chrome做到这一点.

扩展程序的ChromeDriver文档仅用于安装,而不是配置.

问题

  • 有人能指出一些文档,解释如何实现这一点或在这里发布一个例子吗?
  • 如何更新设置?
  • 如何找出任何给定扩展可用的设置属性?
  • 本地和远程执行之间是否存在任何差异,因为这是我在Firefox方法中遇到的问题之一?

计划是针对SauceLabs运行此操作.尝试使用ModHeader chrome扩展来设置所需的标头值.

编辑1

尝试安装Chrome版本的MODHeader扩展程序,但遇到了类似的问题.能够在本地安装扩展,但在远程执行中会看到错误.

private static IWebDriver GetRemoteDriver(string browser)
{

    ChromeOptions options = new ChromeOptions();
    options.AddExtensions("Tools/Chrome_ModHeader_2_0_6.crx");

    DesiredCapabilities capabilities = DesiredCapabilities.Chrome();
    capabilities.SetCapability(ChromeOptions.Capability, options);


    capabilities.SetCapability("name", buildContext);
    capabilities.SetCapability(CapabilityType.BrowserName, "Chrome");
    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");
    capabilities.SetCapability("seleniumVersion", "2.50.1");


    return new RemoteWebDriver(new Uri("http://ondemand.saucelabs.com/wd/hub"), capabilities);
}
Run Code Online (Sandbox Code Playgroud)

SauceLabs日志中显示的错误是

[1.968][INFO]: RESPONSE InitSession unknown error: cannot parse capability: chromeOptions
from unknown error: unrecognized chrome option: Arguments
Run Code Online (Sandbox Code Playgroud)

Rai*_*333 1

既然您提到问题主要出在远程,并且我注意到您正在使用 SauceLabs,您是否从他们那里查看了这篇文章?

https://support.saucelabs.com/customer/en/portal/articles/2200902-creating-custom-firefox-profiles-and-chrome-instances-for-your-automated-testing

Installing an Firefox Extension such as Modify Headers(You would need download the .xpi file on your machine first):

DesiredCapabilities caps = new DesiredCapabilities();
FirefoxProfile profile = new FirefoxProfile();
profile.addExtension(new File("path\of\Modify Headers xpi file"));
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", "X-Forwarded-For");
profile.setPreference("modifyheaders.headers.value0", "161.76.79.1");
profile.setPreference("modifyheaders.headers.enabled0", true);
profile.setPreference("modifyheaders.config.active", true);
profile.setPreference("modifyheaders.config.alwaysOn", true);
profile.setPreference("modifyheaders.config.start", true);
caps.setCapability(FirefoxDriver.PROFILE, profile);

NOTE: If you trying to do the same using C#, you would need to use the ToBase64String() method.
Run Code Online (Sandbox Code Playgroud)