使用 Selenium Webdriver 处理 Windows 身份验证

2024-02-28

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();

and

  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 通过此窗口进行身份验证。因为这不是浏览器窗口,而是操作系统的身份验证弹出窗口。 Selenium 无法与除浏览器之外的其他进程一起工作。

但您可以在不出现此窗口的情况下进行身份验证。

有两种方法可以错过它:

  1. 将带有身份验证的 URL 更改为:http://user:[电子邮件受保护] /cdn-cgi/l/email-protection。这在某些情况下会起作用,并会验证您是否获得所需的服务。在另一种情况下,您可以使用方式2。[太旧的方式,现在不起作用]

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

    2.1.如果服务的 cookie 生命周期较短,您可以在步骤 2 的个人资料中另外使用浏览器的“AutoAuth”插件。

upd:据我所知,selenium 3.0 有一些新的方法,您需要搜索更多。这是太旧的答案。如果你有更好的方法,请告诉我。


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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Selenium Webdriver 处理 Windows 身份验证 的相关文章

随机推荐