【问题标题】:Adding extension to Selenium2(WebDriver) chrome driver向 Selenium(WebDriver) chrome 驱动程序添加扩展
【发布时间】:2016-06-21 21:14:31
【问题描述】:

我正在使用下面的代码使用 webdriver (selenium 2) 启动 chrome

            Map<String, String> mobileEmulation = new HashMap<String, String>();
            mobileEmulation.put("deviceName", "BlackBerry PlayBook");

            Map<String, Object> chromeOptions = new HashMap<String, Object>();
            chromeOptions.put("mobileEmulation", mobileEmulation);
            DesiredCapabilities capabilities = DesiredCapabilities.chrome();
            capabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
            driver = new ChromeDriver(capabilities);

如何在保留上述选项的同时加载 Chrome 扩展程序?

【问题讨论】:

  • 我也在寻找一种方法来做到这一点。但是我发现的每个示例都只加载了一个扩展,没有别的。有人如何加载扩展并设置任何其他值、开关或仿真模式?

标签: java google-chrome selenium selenium-chromedriver


【解决方案1】:

终于明白了!

根据the ChromeDriver capabilites page,您需要将 .crx 文件转换为 base-64 编码字符串。所以最终的答案会是这样的:

ArrayList<String> ext = new ArrayList<>();
extensionLocation = extensionDir + sep + extensionName + ".crx";
extension = new File(extensionLocation);
if (extension.exists() && !extension.isDirectory()) {
    ext.add(Data.base64Encoder(extensionLocation));
}
chromeOptions.put("extensions", ext);

Data.base64encoder() 是我自定义的编码方法。根据您正在运行的 Java 版本,有很多示例说明如何执行此操作。基本上将位置发送给它,让它读入二进制文件,然后返回一个字符串。

【讨论】:

    猜你喜欢
    • 2018-08-24
    • 2018-02-09
    • 2015-05-21
    • 2015-11-13
    • 2013-10-16
    • 1970-01-01
    • 1970-01-01
    • 2018-10-30
    • 2014-07-12
    相关资源
    最近更新 更多