Windows 10 - IE 11 Windows Secruity Popup - AutoIT не возвращает никакой управляющей информации.

Я обновляю C# Test Framework, который использует веб-драйвер Selenium для тестирования браузера. После запуска каждого тестового примера мне нужно обойти всплывающее окно безопасности Windows (IE11: v11.187.14393.0), чтобы попасть на сайт разработки, который я тестирую. У меня было это работает ранее с использованием AutoIt со следующим кодом.

      AutoItX3 autoIt = new AutoItX3();
      string windowTitle = "Windows Security";

      // Wait 30 seconds max...
      autoIt.WinWait(windowTitle, string.Empty, 30);

      // Need to wait for input fields to load...
      Thread.Sleep(2000);

      autoIt.WinActivate(windowTitle);
      autoIt.ControlSetText(windowTitle, string.Empty, "[CLASS:Edit; INSTANCE:1]", username);
      autoIt.ControlSetText(windowTitle, string.Empty, "[CLASS:Edit; INSTANCE:2]", password);
      autoIt.ControlClick(windowTitle, "OK", "[CLASS:Button; INSTANCE:2]");
      autoIt.WinWaitClose(windowTitle, string.Empty, 10);

С тех пор я обновил свою ОС до Windows 10, и с тех пор изменилось всплывающее окно (см. Ниже)

Смотрите новый пример всплывающего окна безопасности

Смотрите старый пример всплывающего окна безопасности

Инспектор AutoIt больше не возвращает никакой управляющей информации для любого объекта во всплывающем окне безопасности, поэтому я не могу с ними взаимодействовать. (Смотрите ниже, что он возвращает инспектору для поля ввода имени пользователя)

Окно<<<< Название: Windows Класс безопасности: Диалог учетных данных Xaml Позиция хоста: 732, 354 Размер: 456, 386 Стиль: 0x96C80000 ExStyle: 0x00200100 Дескриптор: 0x00000000015B1204

Управление<<<< Класс:
Пример:
ClassnameNN:
Название:
Продвинутый (Класс):
ID: текст:
Позиция:
Размер:
ControlClick Coords:
Стиль:
ExStyle:
Справиться:

Мышь<<<< Позиция: 816, 548 Идентификатор курсора: 0 Цвет: 0xF0F0F0

StatusBar <<<<

Панель инструментов <<<<

Видимый текст <<<<

Скрытый текст <<<<

Я пытался указать AutoIt на активное окно и отправить ключи напрямую, но это тоже не работает. (См. Ниже код).

        string windowTitle = "Windows Security";

        // Wait 30 seconds max...
        autoIt.WinWait(windowTitle, string.Empty, 30);

        // Need to wait for input fields to load...
        Thread.Sleep(2000);

        autoIt.WinActivate(windowTitle);
        autoIt.Send(username);
        autoIt.Send(Keys.Tab.ToString());
        autoIt.Send(password);
        autoIt.Send(Keys.Enter.ToString());
        autoIt.WinWaitClose(windowTitle, string.Empty, 10);

У кого-нибудь есть идеи, как мне пройти через это?

Спасибо

1 ответ

Новый диалог - XAML. AutoIt будет работать только с приложениями Win32. Если вы хотите взаимодействовать с этим диалогом, я бы предложил использовать UI Automation. Если вы все еще хотите использовать AutoIt, вы можете попытаться использовать его для прямой отправки оконных сообщений элементам управления, но вам потребуется другой инструмент для получения идентификаторов элементов управления. Этот форум предлагает скрипт AutoIt для отправки сообщений Windows, и я предлагаю Inspect.exe, который поставляется с Windows SDK. Inspect.exe - это инструмент, который заменил UiSpy, который упоминается в этом сообщении на форуме.

В моей компании нам пришлось переключиться на автоматизацию пользовательского интерфейса с AutoIt, когда мы перешли от приложения VB6 к приложению WPF.

Другие вопросы по тегам