AutoIt: 3.3.10.0 +
Категория: Автоматизация, Элементы GUI
Описание:Набор функций, расширяющий возможности AutoIt по работе с нестандартными элементами GUI. При помощи данных функций возможна автоматизация элементов таких классов, как DirectUIHWND, NetUIHWND, UIRibbonWorkPane, автоматизация таких программ, как Google Chrome, Mozilla Firefox, автоматизация элементов графических интерфейсов, написанных на Delphi, .NET (WPF), QT и т.д.
Для получения информации об элементе потребуется утилита
Inspect (входит в комплект файлов). Если данная утилита при запуске сообщает об ошибке, значит на компьютере не установлен API UIAutomation. На Windows 7 и выше данный API предустановлен. На Vista и XP нужно отдельно установить обновление KB971513:
support.microsoft.com или
catalog.update.microsoft.com.
Функции: Справка по перечисленным ниже функциям библиотеки находится непосредственно в UDF UIAutomate.au3 перед кодом каждой функции.
_UIA_CreateLogicalCondition Создаёт логическое условие на основе заданных условий
_UIA_CreatePropertyCondition Создаёт условие на основе свойства и его значения
_UIA_ElementDoDefaultAction Выполнение элементом действия по умолчанию
_UIA_ElementFindInArray Находит элемент, соответствующий заданному свойству и его значению
_UIA_ElementGetBoundingRectangle Определяет прямоугольную область, ограничивающую элемент
_UIA_ElementGetFirstLastChild Находит первый и последний дочерние элементы (объекты) указанного элемента
_UIA_ElementGetParent Определяет родительский элемент (объект) указанного элемента
_UIA_ElementGetPreviousNext Находит предыдущий и следующий элементы того же уровня
_UIA_ElementGetPropertyValue Определяет значение заданного свойства элемента
_UIA_ElementMouseClick Выполняет клик мыши по элементу
_UIA_ElementScrollIntoView Прокручивает элемент в область видимости
_UIA_ElementSetFocus Устанавливает элементу фокус ввода
_UIA_ElementTextSetValue Устанавливает значение (текст) в текстовый элемент
_UIA_FindAllElements Находит все элементы, соответствующие заданному свойству и его значению
_UIA_FindAllElementsEx Находит все элементы, соответствующие условию поиска
_UIA_FindElementsInArray Находит все элементы, соответствующие заданному свойству и его значению
_UIA_GetControlTypeElement Находит элемент (объект) указанного типа с заданным свойством и значением
_UIA_GetElementFromCondition Находит элемент (объект) на основе заданного условия
_UIA_GetElementFromFocus Создаёт элемент (объект) на основе фокуса ввода
_UIA_GetElementFromHandle Создаёт элемент (объект) на основе дескриптора
_UIA_GetElementFromPoint Создаёт элемент (объект) на основе экранных координат
_UIA_ObjectCreate Создаёт объект UIAutomation
_UIA_WaitControlTypeElement Ожидает элемент (объект) указанного типа с заданным свойством и значением
_UIA_WaitElementFromCondition Ожидает элемент (объект) на основе заданного условия
Пример: ; Демонстрация автоматизации Chrome версии 53#include "UIAutomate.au3"Opt("WinTitleMatchMode", 2); Данные регистрацииGlobal $sLogin = "User"Global $sPassword = "12345"; Запуск Chrome с параметром --force-renderer-accessibility; При отсутствии этого параметра доступ к элементам страницы будет запрещёнRun(@ProgramFilesDir & "\Google\Chrome\Application\chrome.exe --force-renderer-accessibility")$hWnd = WinWait(" - Google Chrome", "", 3)If Not $hWnd Then Exit; Создание элемента с использованием дескриптора окна$oParent = _UIA_GetElementFromHandle($hWnd); Поиск кнопки с именем "Новая вкладка" и клик по ней$oElement = _UIA_GetControlTypeElement($oParent, "UIA_ButtonControlTypeId", "Новая вкладка")_UIA_ElementMouseClick($oElement); Поиск строки адреса и установка текста$oElement = _UIA_GetControlTypeElement($oParent, "UIA_EditControlTypeId", "Адресная строка и строка поиска")_UIA_ElementTextSetValue($oElement, "autoit-script.ru"); Переход на сайтSend("{enter}"); Ожидание загрузки страницы по наличию элемента "Недавние сообщения"_UIA_WaitControlTypeElement($oParent, "UIA_TextControlTypeId", "Недавние сообщения"); Отключение вывода ошибок$UIA_ConsoleWriteError = 0; Поиск элемента для ввода пароля$oElement = _UIA_GetControlTypeElement($oParent, "UIA_EditControlTypeId", True, "IsPassword"); Включение вывода ошибок$UIA_ConsoleWriteError = 1; Регистрация при наличии поля пароляIf IsObj($oElement) Then ; Установка фокуса в поле пароля и ввод данных _UIA_ElementSetFocus($oElement) Send($sPassword) ; Заполнение поля логина Send("+{tab}") Send($sLogin) ; Поиск и нажатие кнопки "Вход" $oElement = _UIA_GetControlTypeElement($oParent, "UIA_ButtonControlTypeId", "Вход") _UIA_ElementDoDefaultAction($oElement)EndIf; Ожидание загрузки страницы по наличию ссылки "Примеры и рабочие проекты"$oElement = _UIA_WaitControlTypeElement($oParent, "UIA_HyperlinkControlTypeId", "Примеры и рабочие проекты"); Проверка успешной регистрацииIf Not IsObj($oElement) Then Exit; Переход по ссылке "Примеры и рабочие проекты"_UIA_ElementDoDefaultAction($oElement); Ожидание загрузки страницы по наличию части имени элемента " это не раздел по общим вопросам"_UIA_WaitControlTypeElement($oParent, 0xC364, "не раздел по общим", Default, True); Поиск элемента поиска, установка фокуса, ввод данных$oElement = _UIA_GetControlTypeElement($oParent, "UIA_EditControlTypeId", "")_UIA_ElementSetFocus($oElement)Send("UIAutomate"); Поиск и нажатие кнопки "Поиск"$oElement = _UIA_GetControlTypeElement($oParent, 0xC350, "Поиск")_UIA_ElementDoDefaultAction($oElement) Файлы: Полный комплектИстория версий:1.0:
- первая публичная версия
1.1:
- добавлена функция _UIA_ElementGetPreviousNext() для поиска предыдущего и следующего элементов того же уровня
- добавлена возможность вывода ошибок в консоль: глобальный переключатель $UIA_ConsoleWriteError (включён по умолчанию)
- в CUIAutomation2.au3 добавлены директивы #Au3Stripper_Off и #Au3Stripper_On для идентификаторов свойств и типов
1.2:
- добавлены функции _UIA_CreateLogicalCondition(), _UIA_CreatePropertyCondition(), _UIA_ElementGetFirstLastChild(), _UIA_ElementGetParent(), _UIA_FindAllElementsEx(), _UIA_GetElementFromCondition(), _UIA_WaitElementFromCondition()
1.3:
- добавлена функция _UIA_ElementFindInArray(), позволяющая находить объект в массиве объектов и возвращающая индекс элемента исходного массива
- функция _UIA_ElementDoDefaulAction() переименована в _UIA_ElementDoDefaultAction()
- добавлена проверка ошибок выполнения методов объекта UIAutomation
- в функцию _UIA_ElementMouseClick() добавлена опция активации элемента перед кликом
- в функцию _UIA_FindElementsInArray() добавлен переключатель: элементами возвращаемого массива могут быть или объекты или индексы элементов исходного массива
1.4:
- файл с описанием констант CUIAutomation2.au3 переименован в UIAConstants.au3
- в файл UIAConstants.au3 добавлены новые константы (до Windows 10 включительно)
- добавлена функция _UIA_ElementScrollIntoView(), прокручивающая элемент в область видимости
- обновлена утилита Inspect (из пакета SDK для Windows 10)
1.5:
- добавлена глобальная переменная $UIA_ElementVersion, позволяющая указывать версию создаваемого элемента (объекта): 0-авто; 1-WIN_7 и ниже; 2-WIN_8; 3-WIN_81; 4,5-WIN_10
- в архив добавлены обе версии Inspect (Win7 и Win10) для возможности сравнения свойств элементов разных версий
1.6:
- устранены утечки памяти по причине некорректной работы с условиями
- для функции _UIA_ElementMouseClick() дополнительно отслеживаются ошибки функции MouseClick и выхода координат за пределы элемента; курсор теперь остаётся в точке клика
- для функции _UIA_GetElementFromPoint() добавлены умолчания: координаты курсора мыши
- функция _UIA_GetFocusedElement() переименована в _UIA_GetElementFromFocus()
1.7:
- добавлена поддержка Windows 10 (1703) "Creators Update": возможность создания объекта IUIAutomation версии 4 и элементов версий 6 и 7
1.8:
- предотвращены возможные утечки памяти при перезаписи указателей
- добавлена проверка на наличие элементов в массиве для функций, принимающих массив
Источник: autoit-script.ruАвтор: InnI