使用AutoIT登录Chrome身份验证窗口

时间:2013-12-13 14:01:46

标签: windows-authentication autoit

我尝试通过以下代码登录到firefox身份验证窗口:

WinWaitActive("Authentication Required","","120")
If WinExists("Authentication Required") Then
Send("username{TAB}")
Send("password{Enter}")
EndIf

但即使它与firefox具有相同的标题,同样的dint也适用于chrome。

有什么想法吗?

3 个答案:

答案 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感兴趣,您可以按照以下步骤操作:

  1. 为您的测试项目安装AutoItX.Dotnet NuGet包

  2. 编写以下代码:

        IWebDriver _driver = new ChromeDriver();
        _driver.Navigate().GoToUrl(@"your_url");
    
        AutoItX.WinActivate("", "Authentication required");
        AutoItX.Send(@"domain_user_name{TAB}password{ENTER}");
    
  3. 并且您已登录Web应用程序。

答案 2 :(得分:0)

为此,@ CristiG对此深表感谢。

  1. 您将需要AutoItX.Dotnet NuGet软件包
  2. 使用此代码登录,只需忽略注释掉的行,除非您想看看是否可以在不使用Sleep()的情况下使它正常运行。
     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(),但是这种方法 为我工作。