使用Watir / Selenium进行自动化测试时,绕过NTLM auth

时间:2017-08-14 18:09:28

标签: ruby selenium authentication watir

据我所知,当尝试登录网页进行测试时,Watir和Selenium在NTLM身份验证方面存在问题。我的研究表明,有两个正常的工作。 1.将凭据添加到URL 2.使用auto auth插件/扩展。我目前没有在我的环境中使用扩展的选项,尽管我正在努力。所以,我留下了通过证书。

我遇到的问题如下。

铬: 在Chrome中,我手动传递凭据(如我直接在浏览器中输入的那样)http://password:user@example.com/并打开页面,但不会填充弹出窗口。如果我尝试手动将其作为http://example.com?username=usr&password=password传递,则会填充auth弹出窗口,但不会继续。

如果我尝试使用以下代码自动执行ruby,我得到的是未知的用户名和密码。我已经确认usr和pwd是正确的。

browser.goto( “http://example.com?login=usr&password=password”) browser.goto( “http://password:usr@example.com/”)

IE IE的行为有点不同。 在IE中,我手动传递凭据http://password:user@example.com/,它返回一个无法找到页面的错误。如果我尝试将其手动传递为http://example.com?username=usr&password=password,则会正确登录。

如果我尝试使用以下代码自动执行ruby,则第一个示例会抛出一个页面无法找到错误。第二个示例打开页面,但不填充弹出窗口。我已经确认usr和pwd是正确的。

browser.goto( “http://example.com?login=usr&password=password”) browser.goto( “http://password:usr@example.com/”)

我做错了什么?

我的环境是Windows 7 Pro,IE 11和Chrome 60。

找到一篇文章,指出MS在网址中删除了身份验证。所以pwd:usr @不起作用是有意义的。文章编号:834489

1 个答案:

答案 0 :(得分:1)

好的,我找到了答案。在与我公司的高级架构师讨论之后,无法通过设计访问NTLM Windows身份验证表单。它的设计使得它不能像安全措施那样自动化。

他确实提出的一种处理身份验证问题的方法是使用类似C#(我们的标准)的东西,并假设用户已经登录而打开浏览器。这将完全绕过授权弹出呈现问题null。我不清楚到底该怎么做,但我希望这为其他人提供了一个有用的方向。