如何在Protractor上处理Chrome上的HTTP基本身份验证?

时间:2015-04-07 11:00:12

标签: node.js google-chrome selenium-webdriver automation http-authentication

有人可以帮我处理" 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');
});

4 个答案:

答案 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可能有所帮助。在处理基本身份验证时,我过去很幸运。