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

问题描述 投票:0回答:4

有人可以帮助我处理“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');
});
node.js google-chrome selenium-webdriver automation http-authentication
4个回答
0
投票

BrowserMob Proxy可能会有所帮助。在处理基本身份验证时,我过去很幸运。


1
投票

似乎没有一个简单的方法:

How to handle basic authentication with protractor?

我建议禁用运行测试的IP地址的基本身份验证。这是有道理的,因为基本的身份验证登录不需要进行测试,也不会出现在实时环境中。


1
投票

使用代理(BrowserMob GitHub,带指南)处理此问题是可能的,如另一个答案所示。

或者,您可以尝试处理警报框并插入凭据信息(这是Java代码示例,您应该在JS中使用类似的东西):

WebDriverWait wait = new WebDriverWait(driver, 3);
Alert alert = wait.until(ExpectedConditions.alertIsPresent());
alert.authenticateUsing(new UserAndPassword("USER", "PASS"));

1
投票

所以我遇到了这个问题。问题是你的代码和期望你永远不会解决同样的问题。

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身份验证的要求,您可以只注释掉之前的步骤。此外,最好先在场景或功能中定义路径,因为它会为您提供有关功能或方案位置的上下文。

© www.soinside.com 2019 - 2024. All rights reserved.