Войдите в окно аутентификации Chrome с помощью AutoIT

Я попытался войти в окно аутентификации Firefox, используя следующий код:

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

Но то же самое сработало для хрома, хотя у него то же название, что и у firefox.

Есть идеи?


person Vish Shady    schedule 13.12.2013    source источник
comment
Какую ссылку вы пытаетесь открыть?   -  person Milos    schedule 14.12.2013
comment
Если мы откроем Google, появится окно аутентификации для наших учетных данных прокси. Точно так же для наших внутренних приложений нам нужно войти в систему через всплывающие окна. например, скажите qcm-test.qualcomm.com   -  person Vish Shady    schedule 14.12.2013
comment
Вы проверили полную строку заголовка с помощью Window Information Tool, чтобы точно соответствовать ожидаемому заголовку?   -  person Samoth    schedule 14.12.2013
comment
@Samoth, да, я проверял. Для браузера Chrome, когда я проверил заголовок всплывающего окна аутентификации, он показывает новую вкладку или about:blank в зависимости от того, запущена новая вкладка или окно. где это не относится к браузерам Firefox или Internet Explorer.   -  person Vish Shady    schedule 14.12.2013
comment
Так мы можем взять детали класса?   -  person Vish Shady    schedule 14.12.2013
comment
Прежде чем спрашивать здесь, вам нужно полностью отладить свой код. Не удается обнаружить окно или не удается выполнить команду «Отправить»? Я также рекомендую поиграться с Opt(WinSearchChildren, 1); 0=нет, 1=поиск дочерних элементов, а также Opt(WinTitleMatchMode, 4); 1=начало, 2=subStr, 3=точно, 4=дополнительно, от -1 до -4= без дела   -  person Milos    schedule 14.12.2013
comment
Связано.   -  person user4157124    schedule 26.10.2017


Ответы (3)


@Milos @Samoth спасибо, что потратили на решение моего вопроса.

Используя инструмент информации о окнах Autoit, я не смог определить плитку Windows в Chrome, что не относится к FF или IE. Вместо этого «Требуется аутентификация», идентифицированного как видимый текст.

Таким образом, изменив код на

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

сделал трюк для браузера Chrome.

person Vish Shady    schedule 15.12.2013

Если кого-то интересует Selenium для Chrome с использованием Visual Studio и NUnit Framework, вы можете выполнить следующие действия:

  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}");
    

и вы вошли в свое веб-приложение.

person Cristi G    schedule 07.11.2017

Большая заслуга в этом принадлежит @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";

Метод Кристи у меня не сработал, потому что вызов GoToUrl() блокируется при появлении диалогового окна входа в систему. Но это можно исправить, просто запустив поток для входа в систему перед вызовом GoToUrl(). Казалось бы, вы можете использовать либо WinWait(), либо WinWaitActive(), чтобы устранить необходимость в Thread.Sleep(), но я не мог заставить работать ни то, ни другое, поэтому остался с уродливым Thread.Sleep(), но этот подход работает для меня.

person Cameron    schedule 04.05.2019