使用Selenium Webdriver处理Windows身份validation

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

我尝试了几种方法:

_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身份validation对话框,因此我无法查看源以确定如何使用Selenium By方法查找用户名和密码。

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

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

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

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

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

有两种方法可以错过它:

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

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

    2.1。 如果服务的生命周期较短,您可以在步骤2的配置文件中另外为您的浏览器使用“AutoAuth”插件。


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

通过URL传递凭据不起作用时,您可以通过使用外部软件“AutoIt V3”来实现此function。这与Windows身份validation配合得很好。

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