1

Я обновляю C# Test Framework, которая использует веб-редактор Selenium для тестирования браузера. После запуска каждого тестового теста мне нужно обойти всплывающее окно Windows Secruity (IE11: v11.187.14393.0), чтобы попасть на сайт разработки, который я тестирую. У меня была эта работа, ранее использующая AutoIt со следующим кодом.Windows 10 - IE 11 Всплывающее окно Windows Secruity - 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 и всплывающее окно с тех пор изменилось (См ниже)

See new security popup example

See old secruity popup example

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

Window < < < < Название: Windows Security Класс: Credential Dialog Xaml Хост Позиция: 732, 354 Размер: 456, 386 Стиль: 0x96C80000 ExStyle: 0x00200100 Ручка: 0x00000000015B1204

управления < < < < Класс:
Instance:
ClassnameNN:
Имя:
Advanced (класс):
ID: Текст:
Должность:
Размер:
ControlClick Coords:
Стиль:
ExStyle:
Ручка:

Mouse < < < < Позиция: 816, 548 Cursor ID: 0 Цвет: 0xF0F0F0

< < StatusBar < <

ToolsBar < < < <

Visible Text < < < <

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

Я попытался указать 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); 

Есть ли у кого-нибудь идеи, как я могу пройти мимо этого?

Thanks

ответ

1

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

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