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生成的。
答案 0 :(得分:3)
您无法使用Selenium通过此窗口进行身份验证。因为这不是浏览器窗口,而是OS的身份验证弹出窗口。 Selenium无法使用除浏览器之外的其他进程。
但你可以在没有这个窗口的情况下进行身份验证。
有两种方法可以错过它:
将身份验证更改为:http://user:password@www.yourserveradress.com。这将在部分情况下起作用,并将验证您所需的服务。在另一种情况下,您可以使用方式2.
您需要在浏览器中创建新的配置文件,将身份验证传递给所需的服务并记住密码/身份验证。并且,ofc,在测试中使用创建的浏览器配置文件。
2.1。如果服务的使用寿命较短,您可以在步骤2的个人资料中为您的浏览器使用“AutoAuth”插件。
答案 1 :(得分:0)
通过网址传递凭据无效时,您可以使用外部软件" AutoIt V3" 这适用于Windows身份验证。
答案 2 :(得分:-1)
最后,我使用了一种解决方法,首先导航到身份验证页面,进行身份验证,然后重定向到要作为经过身份验证的用户进行测试的页面。此方法使用可以编写脚本的页面内部身份验证页面。