我尝试通过以下代码登录到firefox身份验证窗口:
WinWaitActive("Authentication Required","","120")
If WinExists("Authentication Required") Then
Send("username{TAB}")
Send("password{Enter}")
EndIf
但即使它与firefox具有相同的标题,同样的dint也适用于chrome。
有什么想法吗?
答案 0 :(得分:2)
@Milos @Samoth感谢花钱来解决我的问题。
使用自动窗口信息工具,我无法识别Chrome中的窗口磁贴,而不是FF或IE中的情况。而不是将“Autentication Required”标识为可见文本。
所以将代码修改为
WinWaitActive("","Authentication Required","120")
If WinExists("","Authentication Required") Then
Send("username{TAB}")
Send("password{Enter}")
EndIf
为Chrome浏览器做了诀窍。
答案 1 :(得分:0)
如果有人对使用Visual Studio和NUnit Framework的Selenium for Chrome感兴趣,您可以按照以下步骤操作:
为您的测试项目安装AutoItX.Dotnet NuGet包
编写以下代码:
IWebDriver _driver = new ChromeDriver();
_driver.Navigate().GoToUrl(@"your_url");
AutoItX.WinActivate("", "Authentication required");
AutoItX.Send(@"domain_user_name{TAB}password{ENTER}");
并且您已登录Web应用程序。
答案 2 :(得分:0)
为此,@ CristiG对此深表感谢。
new Thread(() =>
{
Thread.Sleep(500);
// AutoItX.WinWait("", "Authentication required");//fails
AutoItX.WinActivate("", "Authentication required");
// AutoItX.WinWaitActive("", "Authentication required");//fails
AutoItX.Send(@"username{TAB}pass{ENTER}");
}).Start();
driver.Url = "http://yourpage.com";
Cristi的方法对我不起作用,因为在弹出登录对话框时,对GoToUrl()的调用会阻塞。 但这可以通过在调用GoToUrl()之前启动线程进行登录来解决。 看来您可以使用WinWait()或WinWaitActive()来消除对Thread.Sleep()的需要,但是我都无法使用,所以我留下了丑陋的Thread.Sleep(),但是这种方法 为我工作。