是否可以在量角器测试下为chromedriver添加插件?

and*_*epm 4 javascript end-to-end selenium-chromedriver angularjs protractor

我一直在尝试在量角器测试期间处理基本身份验证.有些困难,所以我发现了一个chrome插件,它会自动发送我需要基本身份验证的网站的凭据.

每次执行chromedriver时,都会加载一个新的配置文件,我如何在我的测试中添加插件permanelty?我知道有https://sites.google.com/a/chromium.org/chromedriver/extensions,但我不这么认为.

And*_*s D 7

检查一下:https://github.com/andresdominguez/elementor/blob/master/bin/elementexplorer.js#L194

这里我从本地目录加载扩展.扩展名不是crx文件,而是未压缩的版本.

'chromeOptions': {
  'args': ['--load-extension=' + extensionPath]
}
Run Code Online (Sandbox Code Playgroud)


ale*_*cxe 5

您需要在extensions里面配置列表chromeOptions:

capabilities {
    'browserName': 'chrome',
    'chromeOptions': {
        'extensions': ['base64 encoded extension']
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,extensions重要的是提供base-64编码的打包Chrome扩展程序列表.

要获取base64编码的扩展,您需要读取.ctx扩展文件并使用base64.例如,使用python:

>>> import base64
>>> data = open('path_to_the_ctx_extension').read()
>>> base64.standard_b64encode(data).decode('UTF-8')
# outputs the encoded chrome extension which you can paste in the config
Run Code Online (Sandbox Code Playgroud)

或者,更容易,helper.js使用fs和制作文件q:

var q = require('q');
var fs = require('fs');

exports.getCapabilities = function (filename) {
    var deferred = q.defer();

    fs.readFile(filename, function (err, data) {
        var capabilities = {
            'browserName': 'chrome',
            'chromeOptions': {
                extensions: [
                    data.toString('base64')
                ]
            }
        };
        deferred.resolve(capabilities);
    });

    return deferred.promise;
};
Run Code Online (Sandbox Code Playgroud)

然后,在您的量角器配置中,使用此getCapabilities()函数来获取功能:

var helper = require('./helper.js');

exports.config = {

    capabilities: helper.getCapabilities('/path/to/crx/extension'),

    ...
}
Run Code Online (Sandbox Code Playgroud)

目前,它只使用一个扩展,因此有改进的余地.

另外,如果您遇到问题,请查看以下问题: