首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过Selenium WebDriver编程配置Chrome扩展

如何通过Selenium WebDriver编程配置Chrome扩展
EN

Stack Overflow用户
提问于 2016-01-27 01:40:36
回答 6查看 11.5K关注 0票数 15

我需要在Chrome中安装和配置一个扩展,以便在Selenium测试执行期间修改所有请求头。我在Saucelabs中学习了这个支持文章的例子,展示了如何在本地为火狐做这件事,但不确定如何在Chrome上这样做。

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

问题

  • 有人能告诉我一些说明如何完成这个任务的文档吗?或者在这里发布一个例子?
  • 如何更新设置?
  • 如何找出任何给定扩展的设置属性可用?
  • 本地执行和远程执行有什么不同,因为这是我在Firefox方法中遇到的问题之一

计划是在SauceLabs上运行这个程序。将尝试使用ModHeader铬扩展设置所需的标头值。

编辑1

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

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

显示在SauceLabs日志中的错误是

代码语言:javascript
复制
[1.968][INFO]: RESPONSE InitSession unknown error: cannot parse capability: chromeOptions
from unknown error: unrecognized chrome option: Arguments
EN

回答 6

Stack Overflow用户

发布于 2016-05-31 11:09:25

既然您提到这个问题主要发生在远程,而且我注意到您正在使用SauceLabs,那么您从它们那里检查过本文吗?

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

代码语言:javascript
复制
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.
票数 1
EN

Stack Overflow用户

发布于 2017-11-18 16:42:54

代码语言:javascript
复制
    public void AddHeaderChrome()
    {
    ChromeOptions  options = new ChromeOptions();
    options.addExtensions(new File("C:\\Downloads\\ModHeader_v2.0.9.crx"));
     DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();

    capabilities.setCapability(CapabilityType.options);
    // launch the browser
    WebDriver driver = new ChromeDriver(options);
    String HeadersName[]=new String[10];
    String HeadersValue[]=new String[10];;
    int length;
    if(ConfigDetails.HeadersName.contains(","))
    {
    HeadersName=ConfigDetails.HeadersName.split(",");
    HeadersValue=ConfigDetails.HeadersValue.split(",");
    length=HeadersName.length;
    }
    else
    {
       HeadersName[0]=ConfigDetails.HeadersName; 
       HeadersValue[0]=ConfigDetails.HeadersValue;
       length=1;
    }   
    int field_no=1;
    for(int i=0;i<length;i++)
    {
    driver.get("chrome-extension://idgpnmonknjnojddfkpgkljpfnnfcklj/popup.html");
    driver.findElement(By.xpath("//input[@id='fl-input-"+field_no+"']")).sendKeys(HeadersName[i]);
    driver.findElement(By.xpath("//input[@id='fl-input-"+(field_no+1)+"']")).sendKeys(HeadersValue[i]);
    field_no+=2
    }
票数 1
EN

Stack Overflow用户

发布于 2018-05-08 02:39:08

Chrome上的扩展有一个不变的唯一ID。

您可以使用selenium web驱动程序导航到chrome-extension://<EXTENSION_UUIF>/options.html,这里options.html是您定义的首选项页面。

然后执行脚本片段以更改存储在chrome.storage.local中的设置。

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

https://stackoverflow.com/questions/35027354

复制
相关文章

相似问题

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