Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以在量角器测试下向chromedriver添加插件?_Javascript_Angularjs_Protractor_Selenium Chromedriver_End To End - Fatal编程技术网

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

Javascript 是否可以在量角器测试下向chromedriver添加插件?,javascript,angularjs,protractor,selenium-chromedriver,end-to-end,Javascript,Angularjs,Protractor,Selenium Chromedriver,End To End,在量角器测试期间,我一直在尝试处理基本身份验证。有点困难,所以我找到了一个chrome插件,它会自动发送我对需要基本身份验证的网站的凭据 每次执行chromedriver时,都会加载一个新的配置文件,我如何才能永久性地将插件添加到测试中?我知道有,但我不认为这很清楚。您需要配置扩展列表: 请注意,在扩展中,提供 要获得base64编码的扩展名,您需要读取.ctx扩展名文件,并使用base64对内容进行编码。例如,使用python: >>> import base64 >&

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


每次执行chromedriver时,都会加载一个新的配置文件,我如何才能永久性地将插件添加到测试中?我知道有,但我不认为这很清楚。

您需要配置
扩展
列表:

请注意,在
扩展
中,提供

要获得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
或者,更简单的方法是使用
fs
q
创建
helper.js
文件:

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;
};
然后,在量角器配置中,使用此
getCapabilities()
函数获取功能:

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

exports.config = {

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

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

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

检查以下内容:

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

'chromeOptions': {
  'args': ['--load-extension=' + extensionPath]
}

<> P>而不是用代码提交扩展,而是在运行测试时必须从磁盘加载它,您可能需要考虑使用我最近打开的节点模块。 要使用该模块,请从npm安装:

npm install --save-dev authenticator-browser-extension
并导入到
dragrator.conf.js

const{Authenticator}=require('Authenticator-browser-extension');
exports.config={
能力:{
browserName:“chrome”,
色度选项:{
扩展:[
Authenticator.for('username','password').asBase64()
]
}
},
}

Pro Tip :记住不要用代码提交凭据,而是考虑使用Env变量。

希望这有帮助


谢谢,这很有帮助!但是我对这个解决方案有一个问题。当我将路径设置为所需的.crx并运行测试时,它失败了,并且没有显示任何错误消息。刚刚
过程结束,退出代码为100
。我也读了你给我推荐的帖子,但是还没有找到解决我的问题的方法。它没有提供跟踪。这几乎就是一切:
“C:\Program Files(x86)\JetBrains\WebStorm 9.0.1\bin\runnerw.exe”“C:\Program Files\nodejs\node.exe”node\u modules\dragrator\lib\cli.js C:\Users\QARJ\WebStorm projects\dragratorpiloto\config.js启动selenium独立服务器。。。Selenium独立服务器在启动http://192.168.44.130:61384/wd/hub  退出代码100
@andrepm的过程结束,如果省略扩展名怎么办?它在运行吗?谢谢。是的,我试着对扩展和扩展路径本身进行注释。在这两种情况下,我的测试都正常运行。@andrepm有趣的是,您能给出扩展名吗?我将尝试重现这个问题。谢谢,这对我不起作用。是这样吗<代码>'chromeOptions':{'args':['--load extension='+'C:/Users/QARJ/AppData/Local/Google/Chrome/User Data/Default/Extensions/dgpgkkkfheijbcgjklcbnokoleebmeokn/1.1_0']}也许用户数据中的空格给您带来了麻烦。您能将扩展复制到C:/tmp进行测试吗?我很高兴听到这个消息。快乐测试!另外,请查看我的elementor工具:我正在寻找feedbackHi@andrepm,这就是有效的解决方案?出于好奇,为什么另一个答案被标记为已接受的答案?嗨,两个答案都有效。另一个被标记只是因为它是第一个。看起来这应该是2019年被接受的解决方案。谢谢谢谢,我很高兴它有用!这与铬合金配合使用效果很好。但无法使用无头镀铬。你知道其他的选择吗?Headless Chrome不支持扩展,所以你可能需要使用类似BrowserMob代理的东西-
npm install --save-dev authenticator-browser-extension