添加Selenium2(WebDriver)chrome驱动程序的扩展

时间:2016-03-08 03:57:59

标签: java google-chrome selenium selenium-chromedriver

我正在使用以下代码使用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扩展程序?

2 个答案:

答案 0 :(得分:0)

终于明白了!

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版本执行此操作的示例。基本上发送它的位置,让它在二进制文件中读取,并返回一个字符串。

答案 1 :(得分:-1)

使用以下代码: -

ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("/path/to/extension.crx"));
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
ChromeDriver driver = new ChromeDriver(capabilities);

希望它会对你有所帮助:)。