Я обновляю 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