有人可以帮我处理" HTTP basic
身份验证提示"在Chrome上?
我无法通过常规
访问我们的暂存环境的身份验证方法(http://user:password@domain.com)。
你知道如何处理它吗? 。 。
技术信息
编程语言:JavaScript
框架:Jasmine JS
浏览器:谷歌浏览器(最新)
平台:Selenium Webdriver,Node.JS
跑步者:量角器
//First Demo for E2E Automation testing by Protractor for AngularJS
describe ('Do this before every test case', function() {
beforeEach(function() {
browser.get("http://user:password@domain.com');
expect(browser.getCurrentUrl()).toEqual("http://wwww.meet2know.com/");
});
var login = require ('../login.js');
});
答案 0 :(得分:1)
似乎没有一种简单的方法:
How to handle basic authentication with protractor?
我建议您禁用运行测试的IP地址的基本身份验证。这是有道理的,因为基本的身份验证登录不需要进行测试,也不会出现在实时环境中。
答案 1 :(得分:1)
可以使用代理(BrowserMob GitHub和指南)处理此问题,如另一个答案所示。
或者,您可以尝试处理警报框并插入凭据信息(这是Java代码示例,您应该在JS中使用类似的东西):
WebDriverWait wait = new WebDriverWait(driver, 3);
Alert alert = wait.until(ExpectedConditions.alertIsPresent());
alert.authenticateUsing(new UserAndPassword("USER", "PASS"));
答案 2 :(得分:1)
所以我遇到了这个问题。问题是你的代码和期望你永远不会解决同样的问题。
browser.get("http://user:password@domain.com');
expect(browser.getCurrentUrl()).toEqual("http://wwww.meet2know.com/");
出于某种原因(我迷失了原因)当browser.get()HTTP Auth解析时,它不再认为该URL有效。
要处理此问题,最简单的解决方案是设置前一步,点击Auth URL,然后在每个方案开头使用Given I navigate to the "/" url
步骤定义。下面的代码是小黄瓜,黄瓜和网络驱动程序,但你将能够看到它在你的情况下如何工作。
Gherkin .feature文件
Scenario: Open the homepage
Given I navigate to the url "/"
黄瓜/ Webdriver步骤定义
// Set the two url's as constants to use in the steps below
const authUrl = 'http://user:password@domain.com'
const url = 'http://wwww.meet2know.com'
this.Before(() => {
// resolve the HTTP authentication
browser.url(authUrl)
})
this.Given(/^I am on the url "([^"]*)"$/, function (path) {
// use the non auth URL to test normally
browser.url(url + path)
expect(browser.getUrl()).toEqual(url + path)
})
这里的优点是,如果您突然需要删除HTTP身份验证的要求,则可以注释掉之前的步骤。此外,最好先在场景或功能中定义路径,因为它会为您提供有关功能或场景位置的上下文。
答案 3 :(得分:0)
BrowserMob Proxy可能有所帮助。在处理基本身份验证时,我过去很幸运。