Разработка библиотеки автоматизации графического интерфейса на языке Python для операционной системы macOS

Целями данной работы являются: Расширение библиотеки на операционную систему macOS; Интеграция уже существующей реализации для операционной системы macOS в основной репозиторий
Author image
Timur
Тип
Магистерская диссертация
Дата загрузки
11.01.2023
Объем файла
884 Кб
Количество страниц
22
Уникальность
Неизвестно
Стоимость работы:
2800 руб.
3500 руб.
Заказать написание работы может стоить дешевле

Введение

Графические интерфейсы являются стандартом ориентированного на пользователя дизайна в разработке приложений. Они предоставляют пользователям возможность интуитивно управлять различными устройствами (компьютерами и т.д) посредством прямого манипулирования графическими значками, такими как кнопки, полосы прокрутки, окна, вкладки, элементы меню, курсоры и т.д. 

Автоматизация работы с графическими интерфейсами – является одним из ключевых направлений современной индустрии компьютерных технологий. Она позволяет выполнять следующие задачи:

• Автоматическое тестирование пользовательского графического интерфейса – поиск ошибок или исключений, которые проявляются в графическом интерфейсе.

• Множественное выполнение операций с графическим интерфейсом приложения.

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

Оглавление

Введение 3

1. Постановка задачи 5

2. Графический пользовательский интерфейс 6

3. Графический интерфейс macOS 9

3.1. NSWindow 9

3.2. Cocoa API 11

4. Работа с графическими приложениями 13

4.1. Подходы к автоматизации работы с графическими приложениями 15

4.2. Существующие решения автоматизации работы с GUI 17

4.3. Существующие инструменты для автоматизации работы с графическим интерфейсом для операционной системы macOS 19

5. Исходная реализация модулей в pywinauto 21

6. Разработка подсистемы AX в библиотеке pywinauto 23

6.1. Обход иерархии и поиск существующих типов элементов 23

6.2. Расширение класса AXWrapper и модульных тестов к нему 25

6.3. Расширение класса AXElementInfo и модульных тестов к нему 27

6.4. Работа с Accessibility объектами 29

7. Тестирование библиотеки 32

7.1. Модульные тесты 32

7.2. Настройка сервиса непрерывной интеграции 33

8. Написание пользовательских примеров работы с библиотекой 37

Заключение 38

Список литературы 40

.  

Список литературы

1. pywinauto Getting Started Guide URL: [https://pywinauto.readthedocs.io/en/latest/getting_started.html] (дата обращения: 10.10.2020)

2. Installing macOS on a Virtual Machine URL: [https://developer.apple.com/documentation/virtualization/installing_macos_on_a_virtual_machine] (дата обращения: 18.10.2020)

3. Mac Automation Scripting Guide URL: [https://developer.apple.com/library/archive/documentation/LanguagesUtilities/Conceptual/MacAutomationScriptingGuide/AutomatetheUserInterface.html] (дата обращения: 01.11.2020)

4. macOS Human Interface Guidelines URL: [https://developer.apple.com/design/human-interface-guidelines/] (дата доступа: ) (дата обращения: 13.03.2021)

5. macOS Developer Documentation archive URL: [https://developer.apple.com/library/archive/navigation/] (дата обращения: 13.03.2021)

6. Cocoa Documentation archive URL: [https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CocoaFundamentals/WhatIsCocoa/WhatIsCocoa.html] (дата обращения: 25.04.2021)

7. AppKit Documentation URL: [https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CocoaFundamentals/WhatIsCocoa/WhatIsCocoa.html#//apple_ref/doc/uid/TP40002974-CH3-SW25] (дата обращения: 14.04.2021)

8. Core Foundation Documentation URL: [https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CocoaFundamentals/WhatIsCocoa/WhatIsCocoa.html#//apple_ref/doc/uid/TP40002974-CH3-SW20] (дата обращения: 14.04.2021)

9. NSApplication Developer Docimentation URL: [https://developer.apple.com/documentation/appkit/nsapplication] (дата обращения: 20.06.2021)

10. NSWindow Developer Documentation URL: [https://developer.apple.com/documentation/appkit/nswindow] (дата обращения: 20.06.2021)

11. NSPanel Developer Documentation URL: [https://developer.apple.com/documentation/appkit/nspanel] (дата обращения: 20.06.2021)

12. Автоматизация задач на Mac с помощью AppleScript и терминала URL: [https://support.apple.com/ru-ru/guide/terminal/trml1003/mac] (дата обращения: 19.09.2021)

13. Руководство пользователя Automator URL: [https://support.apple.com/ru-ru/guide/automator/welcome/mac] (дата обращения: 25.09.2021)

14. Appium. Aitomation for Apps URL: [https://appium.io/]  (дата обращения: 25.09.2021)

15. Winium Desktop URL: [https://github.com/2gis/Winium.Desktop/blob/master] (дата обращения: 25.09.2021)

16. AutoHotKey Documentation URL: [https://www.autohotkey.com/docs/AutoHotkey.htm] (дата обращения: 15.10.2021)

17. AT-SPI URL: [https://www.opennet.ru/docs/RUS/blfs6/gnome/at-spi.html] (дата обращения: 15.10.2021)

18. PyAutoGUI Documentaton URL: [https://pyautogui.readthedocs.io/en/latest/] (дата обращения: 03.11.2021)

19. Core Graphics Framework URL: [https://developer.apple.com/documentation/coregraphics] (дата обращения: 10.12.2021)

20. Введение в Core Graphics на iOS URL: [https://habr.com/ru/post/117824/] (дата обращения: 10.12.2021)

21. Автоматизируем десктопный GUI на Python + pywinauto: как подружиться c MS UI Automation URL: [https://habr.com/ru/post/323962/] (дата обращения: 01.02.2022)

22. AppleEventManager URL: [https://developer.apple.com/documentation/applicationservices/apple_event_manager] (дата обращения: 15.03.2022)

23. AXUIElement URL: [https://developer.apple.com/documentation/applicationservices/axuielement] (дата обращения: 15.03.2022)

24. AXError URL: [https://developer.apple.com/documentation/applicationservices/axerror] (дата обращения: 15.03.2022)

25. Универсальный GUI URL: [https://habr.com/ru/post/244281/] (дата обращения: 29.03.2022)

26. Автоматизированное тестирование: что это? Краткое пособие URL: [https://logrocon.ru/news/automation_testing] (дата обращения: 04.04.2022)

27. GitHub Actions Documentation URL: [https://docs.github.com/en/actions] (дата обращения: 10.04.2022)

28. Настройка CI/CD с помощью GitHub Actions URL: [https://docs.microsoft.com/ru-ru/azure/app-service/deploy-github-actions?tabs=applevel] (дата обращения: 10.04.2022)

29. How To Automate GUI Testing of Windows Apps with Pywinauto: Expert Advice URL: [https://www.apriorit.com/dev-blog/615-qa-gui-testing-windows-python-pywinauto] (дата обращения: 01.05.2022)

30. Используйте pywinauto для автоматизации программ URL: [https://itchef.ru/articles/262064/] (дата обращения: 01.05.2022)

Принцип работы сервиса непрерывной интеграции: на отдельной машине работает некая служба, в обязанности которой входит получение исходного кода проекта, его сборка, тестирование, а также генерация отчётов. Подключение данного сервиса было необходимо для проверки корректной работы реализованных модулей на разных платформах и версиях языка Python, так как локальный запуск тестов требует большого количества ресурсов и потенциально снижает эффективность работы над модулем в будущем. Кроме того, на результат работы локальных тестов могут повлиять установленные или запущенные в системе приложения, что исключает сервис непрерывной интеграции.
В качестве сервиса непрерывной интеграции выбран GitHub Actions по причине его бесплатного предоставления услуг для проектов с открытым исходным кодом и простоты использования. На Windows все внесенные изменения проверяются с помощью другого популярного бесплатного сервиса непрерывной интеграции AppVeyor.
CI с использованием GitHub Actions предлагает рабочие процессы, которые могут создавать код в репозитории и запускать ваши тесты. Рабочие процессы могут выполняться на виртуальных машинах, размещенных на GitHub, или на машинах, размещенных вами самостоятельно. Можно настроить рабочий процесс CI для запуска при возникновении события GitHub (например, при отправке нового кода в репозиторий), по заданному расписанию или при возникновении внешнего события с использованием веб-перехватчика отправки репозитория.