使用Selenium Webdriver处理Windows身份验证

本文关键字:Windows 身份验证 处理 Webdriver Selenium 使用 | 更新日期: 2023-09-27 17:49:20

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生成的。

使用Selenium Webdriver处理Windows身份验证

您不能使用Selenium通过此窗口进行验证。因为这不是浏览器窗口,而是操作系统的身份验证弹出窗口。除了浏览器,Selenium不能与其他进程一起工作。

但是你可以在没有这个窗口的情况下验证

有两种方法可以错过它:

  1. 将URL与认证更改为:http://user:password@www.yourserveradress.com。这将在部分情况下工作,并将验证您所需的服务。在另一种情况下,你可以使用方法2。[方法太旧,现在行不通]

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

    2.1。如果服务的cookie寿命较短,您可以使用"自动验证"。从第2步开始,在配置文件中添加浏览器插件。

upd:我知道selenium 3.0有一些新的方式,你需要搜索更多。这个答案太老了。如果你有更好的办法,请告诉我。


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

  • 您可以使用以下项目https://github.com/ukushu/DialogCapabilities作为示例,编写自己的实现,而不使用"White"框架。

  • 当通过url传递凭据不工作时,您可以通过使用外部软件"AutoIt V3"来做到这一点

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