如何用量角器处理基本认证?

and*_*epm 20 javascript jasmine protractor

我正在尝试量角器在非角度应用程序中编写一些测试.我必须通过谷歌浏览器中的基本身份验证登录页面,但我不知道如何.

验证框

我已经尝试过baseUrl: 'https://username:password@url'capabilities: { 'browserName': 'chrome', 'chromeOptions' : { args: ['--login-user=foo', '--login-password=bar'] } }

但如果这些对我有用,那就没有.谁知道怎么做?我在这方面遇到了一些困难.

小智 32

实际上,您只需将网址设置为http:// username:password@yourdomain.com即可.Chrome会处理它!


han*_*uan 8

简短的回答是没有简单的方法在Chrome上执行此操作,因为它们不支持修改请求标头 - 请参阅https://code.google.com/p/selenium/issues/detail?id=141(标题说回复标题,但如果您阅读它,它适用于所有标题).

话虽这么说,有办法做到这一点,虽然很难.

1)找到允许您修改标题的chrome扩展/插件.一个简单的搜索引出了很多:https://chrome.google.com/webstore/search/modify%20header.您需要将该插件添加到webdriver:请参阅在量角器测试下是否可以向chromedriver添加插件?.

2)您可以使用browsermob-proxy(https://github.com/lightbody/browsermob-proxy); 这样您就可以通过代理路由流量,这会为您添加标头.来自文档:

POST /proxy/[port]/auth/basic/[domain] - Sets automatic basic authentication for the specified domain
Payload data should be json encoded username and password name/value pairs (ex: {"username": "myUsername", "password": "myPassword"}
Run Code Online (Sandbox Code Playgroud)

有一个节点项目可以帮助你,https://github.com/zzo/browsermob-node,但你仍然需要自己设置你的代理服务器.

Chrome的两种方式都很复杂,但可以满足您的需求.(或者你可以坚持使用firefox并按照Robert的回答)


Jan*_*lak 5

从 59 版开始,Chrome不再支持带有嵌入式凭据的 URL。

为了解决这个问题,我编写了authenticator-browser-extensionNode 模块,如果您使用 Protractor、WebDriver.io 或类似的测试运行程序,它可能会很有用。

要使用模块从 npm 安装它:

npm install --save-dev authenticator-browser-extension
Run Code Online (Sandbox Code Playgroud)

并导入protractor.conf.js

npm install --save-dev authenticator-browser-extension
Run Code Online (Sandbox Code Playgroud)

专业提示:记住不要在代码中提交凭据,请考虑使用env 变量

希望这可以帮助!