有人可以帮助我处理“HTTP基础
验证提示“在Chrome上?
我无法通过常规访问我们的暂存环境的身份验证
方法(http://user:[email protected])。
你知道如何处理它吗? 。 。 。
技术信息:
编程语言: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:[email protected]');
expect(browser.getCurrentUrl()).toEqual("http://wwww.meet2know.com/");
});
var login = require ('../login.js');
});
BrowserMob Proxy可能会有所帮助。在处理基本身份验证时,我过去很幸运。
似乎没有一个简单的方法:
How to handle basic authentication with protractor?。
我建议禁用运行测试的IP地址的基本身份验证。这是有道理的,因为基本的身份验证登录不需要进行测试,也不会出现在实时环境中。
使用代理(BrowserMob GitHub,带指南)处理此问题是可能的,如另一个答案所示。
或者,您可以尝试处理警报框并插入凭据信息(这是Java代码示例,您应该在JS中使用类似的东西):
WebDriverWait wait = new WebDriverWait(driver, 3);
Alert alert = wait.until(ExpectedConditions.alertIsPresent());
alert.authenticateUsing(new UserAndPassword("USER", "PASS"));
所以我遇到了这个问题。问题是你的代码和期望你永远不会解决同样的问题。
browser.get("http://user:[email protected]');
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:[email protected]'
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身份验证的要求,您可以只注释掉之前的步骤。此外,最好先在场景或功能中定义路径,因为它会为您提供有关功能或方案位置的上下文。