使用Selenium Webdriver处理Windows身份验证

时间:2015-05-14 20:47:09

标签: c# selenium selenium-webdriver windows-authentication

C#中基于Selenium Webdriver的测试必须使用Windows身份验证登录。

我尝试了几种方法:

  _Driver.SwitchTo().Alert();
  _Driver.FindElement(By.Id("UserName")).SendKeys("LynnTest");
  _Driver.FindElement(By.Id("Password")).SendKeys("Welcome1!");
  _Driver.SwitchTo().Alert().Accept();
  _Driver.SwitchTo().DefaultContent();

  IAlert alert = _Driver.SwitchTo().Alert();
  alert.SendKeys("LynnTest\\t");
  alert.SendKeys("Welcome1!");
  _Driver.SwitchTo().Alert().Accept();
  _Driver.SwitchTo().DefaultContent();

两者都没有成功。我没有在本地系统上获得Windows身份验证对话框,因此我无法查看源以确定如何使用Selenium By方法找到用户名和密码。

我相信浏览器会提供Windows身份验证对话框,但我没有找到该对话框的任何来源。

使用Selenium(非AutoIt或其他类似工具)如何将用户名和密码传递到Windows身份验证对话框?解决方案必须基于Selenium代码,而不是加载项,我无权访问云中的浏览器。

注意:在URL中传递用户名和密码不起作用,据我所知,因为该对话框不是由页面上的html生成的。

3 个答案:

答案 0 :(得分:3)

您无法使用Selenium通过此窗口进行身份验证。因为这不是浏览器窗口,而是OS的身份验证弹出窗口。 Selenium无法使用除浏览器之外的其他进程。

但你可以在没有这个窗口的情况下进行身份验证。

有两种方法可以错过它:

  1. 将身份验证更改为:http://user:password@www.yourserveradress.com。这将在部分情况下起作用,并将验证您所需的服务。在另一种情况下,您可以使用方式2.

  2. 您需要在浏览器中创建新的配置文件,将身份验证传递给所需的服务并记住密码/身份验证。并且,ofc,在测试中使用创建的浏览器配置文件。

    2.1。如果服务的使用寿命较短,您可以在步骤2的个人资料中为您的浏览器使用“AutoAuth”插件。

    1. 您可以使用“White”框架通过登录弹出窗口编写自己的登录实现。在需要的步骤中,您可以检查所有显示的操作系统窗口的“正确”标题。如果存在这样的标题,请获取窗口的句柄。并使用“白色”登录。

答案 1 :(得分:0)

通过网址传递凭据无效时,您可以使用外部软件" AutoIt V3" 这适用于Windows身份验证。

答案 2 :(得分:-1)

最后,我使用了一种解决方法,首先导航到身份验证页面,进行身份验证,然后重定向到要作为经过身份验证的用户进行测试的页面。此方法使用可以编写脚本的页面内部身份验证页面。