错误的密码如何在Chrome浏览器中禁用身份验证弹出窗口?

时间:2018-03-26 11:47:00

标签: java selenium authentication selenium-chromedriver

我使用Selenium + Chrome WebDriver(没有headles模式)。错误的密码如何在Chrome浏览器中禁用身份验证弹出窗口?我需要获取html页面(包含401消息)但不是弹出窗口再次尝试。如果密码错误,我的selenuim测试套件需要检查401结果,如果密码正确,则需要200 OK。

redux-store storage

enter image description here

注意n°1 在响应太快之前: 如果我输入了正确的登录名/密码,我没有遇到任何问题,因为我没有Auth弹出窗口。

在响应过快之前注意n°2: 我对Chrome WebDriver(标题模式)( <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="http://localhost:8100"/> <add name="Access-Control-Allow-Credentials" value="true"/> <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept, Authorization, Content-Disposition, mycustomheaders!" /> <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS"/> </customHeaders> </httpProtocol> )没有问题。

2 个答案:

答案 0 :(得分:0)

您实际上没有办法使用Selenium来检查特定请求的HTTP响应。如果要检查响应,则需要使用直接提交请求的代码(如curl命令),并返回可以检查的响应对象。我想HttpUrlConnection是Java中的基本工具,但我认为还有许多其他选项,具体取决于您可能使用的框架(例如Spring)。

答案 1 :(得分:0)

<强>解决方案:

设置一个微小的超时以强制webdriver在身份验证失败后崩溃

Context.getDriver().manage().timeouts().pageLoadTimeout(1, TimeUnit.SECONDS);

完整代码:

System.setProperty("id", "admin");
System.setProperty("password", "wrongpass");                 
// Set a tiny timeout to force webdriver to crash after authentication failure
webDriver.manage().timeouts().pageLoadTimeout(1, TimeUnit.SECONDS);
webDriver.navigate().to(urlToOpen);