如何使用量angular器处理浏览器的本地authentication对话框

我需要使用量angular器(nodeJs)testing网页。 此网站受到保护,当您尝试input时,浏览器将显示其本地身份validation对话框。 我们曾经把用户名和密码添加到像这样的url

https://username:password@example.com 

但是这种方法在Chrome或Firefox中不起作用(我不记得是哪一个)。

如果填写对话框并提交,则浏览器再次发出相同的请求,添加以下标题

 header: { Authorization: "Basic bF0A23Zwdfsf==" } 

回到量angular器,脚本的第一件事是

 browser.driver.get('https://example.com'); 

所以我的第一个问题是:是否有可能以某种方式添加标题?

我也试着在onPrepare里调用fetch (这是在browser.driver.get之前)

 browser.driver.executeScript(function () { let headers = new Headers({"Authorization": "Basic " + new Buffer("username" + ":" + "password").toString("base64")}); let myInit = {method: "GET", headers: headers}; fetch("https://example.com", headers); }); 

出于某种原因, fetch似乎忽略Authorization标头(它不存在于请求中)。

无论如何,这个问题变得越来越复杂,这就是我在这里发布的原因。 有谁知道解决scheme或有build议?

我从@Florent B得到答案。 谢谢!!

量angular器没有用于基本authentication的API。

所以我使用node-http-proxy来添加基本validation标题到量angular器的请求。

怎么样

1.安装node-http-proxy

$ npm install --save http-proxy

2.编辑protractor.conf.js

 var httpProxy = require('http-proxy'); var proxy; var PORT_PROXY_SERVER = 8899; exports.config = { // do something capabilities: { 'browserName': 'chrome', 'proxy': { proxyType: 'manual', httpProxy: `localhost:${PORT_PROXY_SERVER}`, sslProxy: `localhost:${PORT_PROXY_SERVER}` } }, onPrepare: function () { // create proxy server proxy = httpProxy.createProxyServer({ target: 'https://REAL_HOST.COM', // edit here auth: 'USER_NAME:PASSWORD', // edit here changeOrigin: true }).listen(PORT_PROXY_SERVER); } // other your setting }; 

运行上面的代码,您的量angular器访问http://localhost:8899 。 ProxyServer将其传递到https://REAL_HOST.COM并使用基本身份validation标题。