我使用Selenium + Chrome WebDriver(没有headles模式)。错误的密码如何在Chrome浏览器中禁用身份验证弹出窗口?我需要获取html页面(包含401消息)但不是弹出窗口再次尝试。如果密码错误,我的selenuim测试套件需要检查401结果,如果密码正确,则需要200 OK。
redux-store storage
注意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>
)没有问题。
答案 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);