{"id":85535,"date":"2020-06-17T01:42:31","date_gmt":"2020-06-16T23:42:31","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/avtomatiziruem-desktopnyj-gui-na-python-pywinauto-kak-podruzhitsya-c-ms-ui-automation"},"modified":"2020-06-17T01:42:31","modified_gmt":"2020-06-16T23:42:31","slug":"avtomatiziruem-desktopnyj-gui-na-python-pywinauto-kak-podruzhitsya-c-ms-ui-automation","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/avtomatiziruem-desktopnyj-gui-na-python-pywinauto-kak-podruzhitsya-c-ms-ui-automation","title":{"rendered":"Automatisierung von Desktop-GUIs mit Python + pywinauto: Eine Einf\u00fchrung in MS UI Automation","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Python \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pywinauto\/pywinauto\">pywinauto<\/a><\/noindex> \u2014 \u044d\u0442\u043e open source \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u043d\u044b\u0445 GUI \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 Windows. \u0417\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0434\u0432\u0430 \u0433\u043e\u0434\u0430 \u0432 \u043d\u0435\u0439 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043d\u043e\u0432\u044b\u0435 \u043a\u0440\u0443\u043f\u043d\u044b\u0435 \u0444\u0438\u0447\u0438:<\/p>\n<p><\/p>\n<ul>\n<li>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 MS UI Automation. \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u0440\u0435\u0436\u043d\u0438\u0439, \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f: WinForms, WPF, Qt5, Windows Store (UWP) \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435 \u2014 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0430 Windows.<\/li>\n<li>\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u044d\u043a\u0435\u043d\u0434\u043e\u0432\/\u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 (\u0441\u0435\u0439\u0447\u0430\u0441 \u0438\u0445 \u0434\u0432\u043e\u0435 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c: \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0439 <code>\"win32\"<\/code> \u0438 \u043d\u043e\u0432\u044b\u0439 <code>\"uia\"<\/code>). \u0414\u0430\u043b\u044c\u0448\u0435 \u043f\u043b\u0430\u0432\u043d\u043e \u0434\u0432\u0438\u0433\u0430\u0435\u043c\u0441\u044f \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u043a\u0440\u043e\u0441\u0441-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0441\u0442\u0438.<\/li>\n<li>Win32 \u0445\u0443\u043a\u0438 \u0434\u043b\u044f \u043c\u044b\u0448\u0438 \u0438 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b (hot keys \u0432 \u0434\u0443\u0445\u0435 pyHook).<\/li>\n<\/ul>\n<p><\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043e\u0431\u0437\u043e\u0440 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0432 open source \u0434\u043b\u044f \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u043d\u043e\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 (\u0431\u0435\u0437 \u043f\u0440\u0435\u0442\u0435\u043d\u0437\u0438\u0439 \u043d\u0430 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u043e\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435).<\/p>\n<p><\/p>\n<p>\u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u2014 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0441 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 SQA Days 20 \u0432 \u041c\u0438\u043d\u0441\u043a\u0435 (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=S__GZvPuyNw\">\u0432\u0438\u0434\u0435\u043e\u0437\u0430\u043f\u0438\u0441\u044c<\/a><\/noindex> \u0438 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.slideshare.net\/VLDCORP\/gui-69866193\">\u0441\u043b\u0430\u0439\u0434\u044b<\/a><\/noindex>), \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u0440\u0443\u0441\u0441\u043a\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f <noindex><a rel=\"nofollow\" href=\"https:\/\/pywinauto.readthedocs.io\/en\/latest\/getting_started.html\">Getting Started Guide<\/a><\/noindex> \u0434\u043b\u044f pywinauto.<\/p>\n<p><\/p>\n<ul>\n<li>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"\/post\/323962#koordinatnyy-metod\">\u041a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"\/post\/323962#raspoznavanie-etalonnyh-izobrazheniy\">\u0420\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u0435 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"\/post\/323962#accessibility-tehnologii\">Accessibility \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<li>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u043d\u044b\u0435 accessibility \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"\/post\/323962#staryy-dobryy-win32-api\">\u0421\u0442\u0430\u0440\u044b\u0439 \u0434\u043e\u0431\u0440\u044b\u0439 Win32 API<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"\/post\/323962#microsoft-ui-automation\">Microsoft UI Automation<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"\/post\/323962#at-spi\">AT-SPI (Linux)<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"\/post\/323962#apple-accessibility-api\">Apple Accessibility API<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"\/post\/323962#kak-nachat-rabotat-s-pywinauto\">\u041a\u0430\u043a \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 pywinauto<\/a><\/noindex>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"\/post\/323962#vhodnye-tochki-dlya-avtomatizacii\">\u0412\u0445\u043e\u0434\u043d\u044b\u0435 \u0442\u043e\u0447\u043a\u0438 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"\/post\/323962#specifikacii-okonelementov\">\u0421\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043e\u043a\u043e\u043d\/\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"\/post\/323962#magiya-dostupa-po-atributu-i-po-klyuchu\">\u041c\u0430\u0433\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043f\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0443 \u0438 \u043f\u043e \u043a\u043b\u044e\u0447\u0443<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"\/post\/323962\/#pyat-pravil-dlya-magicheskih-imen\">\u041f\u044f\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b \u0434\u043b\u044f \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0438\u043c\u0435\u043d<\/a><\/noindex><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>\u041d\u0430\u0447\u043d\u0451\u043c \u0441 \u043a\u0440\u0430\u0442\u043a\u043e\u0433\u043e \u043e\u0431\u0437\u043e\u0440\u0430 \u043e\u043f\u0435\u043d \u0441\u043e\u0440\u0441\u0430 \u0432 \u044d\u0442\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438. \u0414\u043b\u044f \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u043d\u044b\u0445 GUI \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432\u0441\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u0447\u0435\u043c \u0434\u043b\u044f \u0432\u0435\u0431\u0430, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0435\u0441\u0442\u044c Selenium. \u0412\u043e\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b:<\/p>\n<p><\/p>\n<h3 id=\"koordinatnyy-metod\">\u041a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434<\/h3>\n<p><\/p>\n<p>\u0425\u0430\u0440\u0434\u043a\u043e\u0434\u0438\u043c \u0442\u043e\u0447\u043a\u0438 \u043a\u043b\u0438\u043a\u043e\u0432, \u043d\u0430\u0434\u0435\u0435\u043c\u0441\u044f \u043d\u0430 \u0443\u0434\u0430\u0447\u043d\u044b\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044f.<br \/>\n[+] \u041a\u0440\u043e\u0441\u0441-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0439, \u043b\u0435\u0433\u043a\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c\u044b\u0439.<br \/>\n[+] \u041b\u0435\u0433\u043a\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c &#171;record-replay&#187; \u0437\u0430\u043f\u0438\u0441\u044c \u0442\u0435\u0441\u0442\u043e\u0432.<br \/>\n[-] \u0421\u0430\u043c\u044b\u0439 \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u044d\u043a\u0440\u0430\u043d\u0430, \u0442\u0435\u043c\u044b, \u0448\u0440\u0438\u0444\u0442\u043e\u0432, \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u043e\u043a\u043e\u043d \u0438 \u0442.\u043f.<br \/>\n[-] \u041d\u0443\u0436\u043d\u044b \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0435 \u0443\u0441\u0438\u043b\u0438\u044f \u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443, \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u043e\u0449\u0435 \u043f\u0435\u0440\u0435\u0433\u0435\u043d\u0435\u0440\u0438\u0442\u044c \u0442\u0435\u0441\u0442\u044b \u0441 \u043d\u0443\u043b\u044f \u0438\u043b\u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e.<br \/>\n[-] \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0434\u043b\u044f \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0435\u0441\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b.<\/p>\n<p><\/p>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b (\u043a\u0440\u043e\u0441\u0441-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0435): <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/msanders\/autopy\">autopy<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/asweigart\/pyautogui\">PyAutoGUI<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/SavinaRoja\/PyUserInput\">PyUserInput<\/a><\/noindex> \u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0435. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0432 \u0441\u0435\u0431\u044f \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c (\u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043a\u0440\u043e\u0441\u0441-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e).<\/p>\n<p><\/p>\n<p>\u0421\u0442\u043e\u0438\u0442 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043c\u043e\u0436\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u043e\u0439 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u043a\u043b\u0438\u043a\u0430\u0442\u044c \u043f\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c (\u043e\u0442 \u043b\u0435\u0432\u043e\u0433\u043e \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0433\u043b\u0430 \u043e\u043a\u043d\u0430\/\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u0430 \u043d\u0435 \u0432\u0441\u0435\u0433\u043e \u044d\u043a\u0440\u0430\u043d\u0430) \u2014 \u043e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0430\u0434\u0435\u0436\u043d\u043e, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0434\u043b\u0438\u043d\u0443\/\u0448\u0438\u0440\u0438\u043d\u0443 \u0432\u0441\u0435\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 (\u0442\u043e\u0433\u0434\u0430 \u0438 \u0440\u0430\u0437\u043d\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u044d\u043a\u0440\u0430\u043d\u0430 \u043d\u0435 \u043f\u043e\u043c\u0435\u0448\u0430\u0435\u0442).<\/p>\n<p><\/p>\n<p>\u0414\u0440\u0443\u0433\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442: \u0432\u044b\u0434\u0435\u043b\u044f\u0442\u044c \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0443 \u043c\u0430\u0448\u0438\u043d\u0443 \u0441\u043e \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 (\u043d\u0435 \u043a\u0440\u043e\u0441\u0441-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e, \u043d\u043e \u0432 \u043a\u0430\u043a\u0438\u0445-\u0442\u043e \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0433\u043e\u0434\u0438\u0442\u0441\u044f).<\/p>\n<p><\/p>\n<h3 id=\"raspoznavanie-etalonnyh-izobrazheniy\">\u0420\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u0435 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439<\/h3>\n<p><\/p>\n<p>[+] \u041a\u0440\u043e\u0441\u0441-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0439<br \/>\n[+-] \u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 (\u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434), \u043d\u043e \u0432\u0441\u0451 \u0436\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0445\u0438\u0442\u0440\u043e\u0441\u0442\u0435\u0439.<br \/>\n[-+] \u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0439, \u0442.\u043a. \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 CPU \u0434\u043b\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u044f.<br \/>\n[-] \u041e \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 (OCR), \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0440\u0435\u0447\u0438 \u043d\u0435 \u0438\u0434\u0451\u0442 =&gt; \u043d\u0435\u043b\u044c\u0437\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435. \u041d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u043d\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 OCR \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043d\u0430\u0434\u0435\u0436\u043d\u044b \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0437\u0430\u0434\u0430\u0447, \u0438 \u0448\u0438\u0440\u043e\u043a\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0435 \u0438\u043c\u0435\u044e\u0442 (welcome \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u044b, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u0443\u0436\u0435 \u043d\u0435 \u0442\u0430\u043a).<\/p>\n<p><\/p>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/sikuli\/sikuli\">Sikuli<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/glitchassassin\/lackey\">Lackey<\/a><\/noindex> (Sikuli-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0439, \u043d\u0430 \u0447\u0438\u0441\u0442\u043e\u043c Python), <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/asweigart\/pyautogui\">PyAutoGUI<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"accessibility-tehnologii\">Accessibility \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438<\/h3>\n<p><\/p>\n<p>[+] \u0421\u0430\u043c\u044b\u0439 \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434, \u0442.\u043a. \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043a\u0430\u0442\u044c \u043f\u043e \u0442\u0435\u043a\u0441\u0442\u0443, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043e\u043d \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u0430\u043d \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0438\u043b\u0438 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u043c.<br \/>\n[+] \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 =&gt; \u043f\u0440\u043e\u0449\u0435 \u0432\u0435\u0440\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0442\u0435\u0441\u0442\u043e\u0432.<br \/>\n[+] \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0441\u0430\u043c\u044b\u0439 \u0431\u044b\u0441\u0442\u0440\u044b\u0439, \u0442.\u043a. \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u0443\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u044b CPU.<br \/>\n[-] \u0422\u044f\u0436\u0435\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u0440\u043e\u0441\u0441-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442: \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0432\u0441\u0435 open-source \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u043e\u0434\u043d\u0443-\u0434\u0432\u0435 accessibility \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438. Windows\/Linux\/MacOS \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043d\u0438\u043a\u0442\u043e, \u043a\u0440\u043e\u043c\u0435 \u043f\u043b\u0430\u0442\u043d\u044b\u0445 \u0442\u0438\u043f\u0430 TestComplete, UFT \u0438\u043b\u0438 Squish.<br \/>\n[-] \u041d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0442\u0430\u043a\u0430\u044f \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u0433\u043e \u044d\u043a\u0440\u0430\u043d\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 VirtualBox&#8217;\u0430 \u2014 \u0442\u0443\u0442 \u0431\u0435\u0437 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043d\u0435 \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c. \u041d\u043e \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 accessibility \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c. \u041e \u043d\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435 \u0438 \u043f\u043e\u0439\u0434\u0435\u0442 \u0440\u0435\u0447\u044c.<\/p>\n<p><\/p>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/TestStack\/White\">TestStack.White<\/a><\/noindex> \u043d\u0430 C#, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/2gis\/Winium.Desktop\">Winium.Desktop<\/a><\/noindex> \u043d\u0430 C# (Selenium \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0439), <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Microsoft\/WinAppDriver\">MS WinAppDriver<\/a><\/noindex> \u043d\u0430 C# (Appium \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0439), <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pywinauto\/pywinauto\">pywinauto<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pyatom\/pyatom\">pyatom<\/a><\/noindex> (\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441 LDTP), <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/yinkaisheng\/Python-UIAutomation-for-Windows\">Python-UIAutomation-for-Windows<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jarmo\/RAutomation\">RAutomation<\/a><\/noindex> \u043d\u0430 Ruby, <noindex><a rel=\"nofollow\" href=\"https:\/\/ldtp.freedesktop.org\/wiki\/\">LDTP<\/a><\/noindex> (Linux Desktop Testing Project) \u0438 \u0435\u0433\u043e Windows \u0432\u0435\u0440\u0441\u0438\u044f <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ldtp\/cobra\">Cobra<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>LDTP \u2014 \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043a\u0440\u043e\u0441\u0441-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0439 open-source \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 (\u0442\u043e\u0447\u043d\u0435\u0435 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a) \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 accessibility \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439. \u041e\u0434\u043d\u0430\u043a\u043e \u043e\u043d \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u0435\u043d. \u0421\u0430\u043c \u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0438\u043c, \u043d\u043e \u043f\u043e \u043e\u0442\u0437\u044b\u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0443 \u043d\u0435\u0433\u043e \u043d\u0435 \u0441\u0430\u043c\u044b\u0439 \u0443\u0434\u043e\u0431\u043d\u044b\u0439. \u0415\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u043f\u043e\u0437\u0438\u0442\u0438\u0432\u043d\u044b\u0435 \u043e\u0442\u0437\u044b\u0432\u044b, \u043f\u0440\u043e\u0448\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0445.<\/p>\n<p><\/p>\n<h3 id=\"testovyy-backdoor-aka-vnutrenniy-velosiped\">\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 backdoor (a.k.a. \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434)<\/h3>\n<p><\/p>\n<p>\u0414\u043b\u044f \u043a\u0440\u043e\u0441\u0441-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0441\u0430\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0447\u0430\u0441\u0442\u043e \u0434\u0435\u043b\u0430\u044e\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0434\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f testability. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0439 TCP \u0441\u0435\u0440\u0432\u0435\u0440 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438, \u0442\u0435\u0441\u0442\u044b \u043a \u043d\u0435\u043c\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u0438 \u043f\u043e\u0441\u044b\u043b\u0430\u044e\u0442 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b: \u043d\u0430 \u0447\u0442\u043e \u043d\u0430\u0436\u0430\u0442\u044c, \u043e\u0442\u043a\u0443\u0434\u0430 \u0432\u0437\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0442.\u043f. \u041d\u0430\u0434\u0435\u0436\u043d\u043e, \u043d\u043e \u043d\u0435 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e.<\/p>\n<p><\/p>\n<h2 id=\"osnovnye-desktopnye-accessibility-tehnologii\">\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u043d\u044b\u0435 accessibility \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438<\/h2>\n<p><\/p>\n<h3 id=\"staryy-dobryy-win32-api\">\u0421\u0442\u0430\u0440\u044b\u0439 \u0434\u043e\u0431\u0440\u044b\u0439 Win32 API<\/h3>\n<p><\/p>\n<p>\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e Windows \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0434\u043e \u0432\u044b\u0445\u043e\u0434\u0430 WPF \u0438 \u0437\u0430\u0442\u0435\u043c Windows Store, \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0442\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435 \u043d\u0430 Win32 API. \u0410 \u0438\u043c\u0435\u043d\u043d\u043e, MFC, WTL, C++ Builder, Delphi, VB6 \u2014 \u0432\u0441\u0435 \u044d\u0442\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 Win32 API. \u0414\u0430\u0436\u0435 Windows Forms \u2014 \u0432 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 Win32 API \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0435.<\/p>\n<p><\/p>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.autoitscript.com\/site\/autoit\/\">AutoIt<\/a><\/noindex> (\u043f\u043e\u0445\u043e\u0436 \u043d\u0430 VB) \u0438 Python \u043e\u0431\u0435\u0440\u0442\u043a\u0430 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jacexh\/pyautoit\">pyautoit<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Lexikos\/AutoHotkey_L\/\">AutoHotkey<\/a><\/noindex> (\u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u044f\u0437\u044b\u043a, \u0435\u0441\u0442\u044c IDispatch COM \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441), <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pywinauto\/pywinauto\">pywinauto<\/a><\/noindex> (Python), <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jarmo\/RAutomation\">RAutomation<\/a><\/noindex> (Ruby), <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/robertwahler\/win32-autogui\">win32-autogui<\/a><\/noindex> (Ruby).<\/p>\n<p><\/p>\n<h3 id=\"microsoft-ui-automation\">Microsoft UI Automation<\/h3>\n<p><\/p>\n<p>\u0413\u043b\u0430\u0432\u043d\u044b\u0439 \u043f\u043b\u044e\u0441: \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f MS UI Automation \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u043e\u0434\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e GUI \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 Windows \u0437\u0430 \u0440\u0435\u0434\u043a\u0438\u043c\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\u043c\u0438. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: \u043e\u043d\u0430 \u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u043b\u0435\u0433\u0447\u0435 \u0432 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0438, \u0447\u0435\u043c Win32 API. \u0418\u043d\u0430\u0447\u0435 \u043d\u0438\u043a\u0442\u043e \u0431\u044b \u043d\u0435 \u0434\u0435\u043b\u0430\u043b \u043e\u0431\u0435\u0440\u0442\u043e\u043a \u043d\u0430\u0434 \u043d\u0435\u0439.<\/p>\n<p><\/p>\n<p>\u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u044d\u0442\u043e \u043d\u0430\u0431\u043e\u0440 custom COM \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 (\u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c, <strong>UIAutomationCore.dll<\/strong>), \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u0435\u0442 .NET \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0443 \u0432 \u0432\u0438\u0434\u0435 <code>namespace System.Windows.Automation<\/code>. \u041e\u043d\u0430, \u043a\u0441\u0442\u0430\u0442\u0438, \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u0438\u0432\u043d\u0435\u0441\u0435\u043d\u043d\u044b\u0439 \u0431\u0430\u0433, \u0438\u0437-\u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 UI \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u044b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c UIAutomationCore.dll \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e (\u0435\u0441\u043b\u0438 \u0441\u043b\u044b\u0448\u0430\u043b\u0438 \u043f\u0440\u043e UiaComWrapper \u043d\u0430 C#, \u0442\u043e \u044d\u0442\u043e \u043e\u043d\u043e).<\/p>\n<p><\/p>\n<p>\u0420\u0430\u0437\u043d\u043e\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0438 COM \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432:<\/p>\n<p><\/p>\n<p>(1) \u0411\u0430\u0437\u043e\u0432\u044b\u0439 IUknown \u2014 &#171;the root of all evil&#187;. \u0421\u0430\u043c\u044b\u0439 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439, \u043d\u0438 \u0440\u0430\u0437\u0443 \u043d\u0435 user-friendly.<br \/>\n(2) IDispatch \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u044b\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>Excel.Application<\/code>), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 Python \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u043a\u0435\u0442\u0430 win32com.client (\u0432\u0445\u043e\u0434\u0438\u0442 \u0432 pyWin32). \u0421\u0430\u043c\u044b\u0439 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0438 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442.<br \/>\n(3) Custom \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0443\u043c\u0435\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 Python \u043f\u0430\u043a\u0435\u0442 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/enthought\/comtypes\">comtypes<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/TestStack\/White\">TestStack.White<\/a><\/noindex> \u043d\u0430 C#, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pywinauto\/pywinauto\">pywinauto<\/a><\/noindex> 0.6.0+, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/2gis\/Winium.Desktop\">Winium.Desktop<\/a><\/noindex> \u043d\u0430 C#, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/yinkaisheng\/Python-UIAutomation-for-Windows\">Python-UIAutomation-for-Windows<\/a><\/noindex> (\u0443 \u043d\u0438\u0445 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0441\u0438\u0448\u043d\u044b\u0445 \u043e\u0431\u0435\u0440\u0442\u043e\u043a \u043d\u0430\u0434 UIAutomationCore.dll \u043d\u0435 \u0440\u0430\u0441\u043a\u0440\u044b\u0442), <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jarmo\/RAutomation\">RAutomation<\/a><\/noindex> \u043d\u0430 Ruby.<\/p>\n<p><\/p>\n<h3 id=\"at-spi\">AT-SPI<\/h3>\n<p><\/p>\n<p>\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043e\u0441\u0438 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430 Linux \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u043d\u0430 X Window System (\u0432 Fedora 25 &#171;\u0438\u043a\u0441\u044b&#187; \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u0438 \u043d\u0430 Wayland), &#171;\u0438\u043a\u0441\u044b&#187; \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043e\u043f\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043a\u043d\u0430\u043c\u0438 \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0438 \u043c\u044b\u0448\u044c\u044e\/\u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u043e\u0439. \u0414\u043b\u044f \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u043f\u043e \u043a\u043d\u043e\u043f\u043a\u0430\u043c, \u043b\u0438\u0441\u0442 \u0431\u043e\u043a\u0441\u0430\u043c \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435 \u2014 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f AT-SPI. \u0423 \u0441\u0430\u043c\u044b\u0445 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u043e\u043a\u043e\u043d\u043d\u044b\u0445 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043e\u0432 \u0435\u0441\u0442\u044c \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 AT-SPI registry \u0434\u0435\u043c\u043e\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0434\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0439 GUI (\u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f Qt \u0438 GTK).<\/p>\n<p><\/p>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/GNOME\/pyatspi2\">pyatspi2<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>pyatspi2, \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0442\u0438\u043f\u0430 \u0442\u043e\u0433\u043e \u0436\u0435 PyGObject. \u0421\u0430\u043c\u0430 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0432 \u0432\u0438\u0434\u0435 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 <code>libatspi.so<\/code>. \u041a \u043d\u0435\u0439 \u0438\u043c\u0435\u0435\u0442\u0441\u044f <noindex><a rel=\"nofollow\" href=\"https:\/\/developer.gnome.org\/libatspi\/\">Reference Manual<\/a><\/noindex>. \u0414\u043b\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 pywinauto \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 AT-SPI \u0438\u043c\u0435\u0435\u043d\u043e \u0442\u0430\u043a: \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 libatspi.so \u0438 \u043c\u043e\u0434\u0443\u043b\u044c ctypes. \u0415\u0441\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043d\u0443\u0436\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438, \u0432\u0435\u0434\u044c \u0434\u043b\u044f GTK+ \u0438 Qt \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043e\u043d\u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043d\u044b\u0435. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u044b\u0439 \u0432\u044b\u043f\u0443\u0441\u043a pywinauto 0.7.0 \u0441 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 Linux \u043c\u043e\u0436\u043d\u043e \u043e\u0436\u0438\u0434\u0430\u0442\u044c \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0435 2018-\u0433\u043e.<\/p>\n<p><\/p>\n<h3 id=\"apple-accessibility-api\">Apple Accessibility API<\/h3>\n<p><\/p>\n<p>\u041d\u0430 MacOS \u0435\u0441\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 AppleScript. \u0414\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0447\u0435\u0433\u043e-\u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u043d\u0430 Python, \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0437 ObjectiveC. \u041d\u0430\u0447\u0438\u043d\u0430\u044f, \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0435\u0449\u0435 \u0441 MacOS 10.6 \u0432 \u043f\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u0438\u0442\u043e\u043d \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u0430\u043a\u0435\u0442 pyobjc. \u042d\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0434\u043b\u044f \u0431\u0443\u0434\u0443\u0449\u0435\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0432 pywinauto.<\/p>\n<p><\/p>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b: \u041a\u0440\u043e\u043c\u0435 \u044f\u0437\u044b\u043a\u0430 Apple Script, \u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pyatom\/pyatom\">ATOMac<\/a><\/noindex>, \u043e\u043d \u0436\u0435 pyatom. \u041e\u043d \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u043f\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443 \u0441 LDTP, \u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439. \u041d\u0430 \u043d\u0435\u043c \u0435\u0441\u0442\u044c <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/vasily-v-ryabov\/ui-automation-course\/blob\/master\/10_Golodyaev\/AppleID.py\">\u043f\u0440\u0438\u043c\u0435\u0440 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 iTunes \u043d\u0430 macOs<\/a><\/noindex>, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u0438\u043c \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u043c. \u0415\u0441\u0442\u044c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0433\u0438\u0431\u043a\u0438\u0435 \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0438 (\u043c\u0435\u0442\u043e\u0434\u044b <code>waitFor*<\/code>). \u041d\u043e, \u0432 \u0446\u0435\u043b\u043e\u043c, \u043d\u0435\u043f\u043b\u043e\u0445\u0430\u044f \u0432\u0435\u0449\u044c.<\/p>\n<h2 id=\"kak-nachat-rabotat-s-pywinauto\"><strong>\u041a\u0430\u043a \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 pywinauto<\/strong><\/h2>\n<p><\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u0441\u0442\u043e\u0438\u0442 \u0432\u043e\u043e\u0440\u0443\u0436\u0438\u0442\u044c\u0441\u044f \u0438\u043d\u0441\u043f\u0435\u043a\u0442\u043e\u0440\u043e\u043c GUI \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 (\u0442\u043e, \u0447\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 Spy tool). \u041e\u043d \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u0437\u043d\u0443\u0442\u0440\u0438: \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u0430\u043a\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b. \u0421\u0430\u043c\u044b\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u0438\u043d\u0441\u043f\u0435\u043a\u0442\u043e\u0440\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432:<\/p>\n<p><\/p>\n<ul>\n<li><strong>Spy++<\/strong> \u2014 \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0443 Visual Studio, \u0432\u043a\u043b\u044e\u0447\u0430\u044f Express \u0438\u043b\u0438 Community Edition. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 Win32 API. \u0422\u0430\u043a\u0436\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d \u0435\u0433\u043e \u043a\u043b\u043e\u043d <strong>AutoIt Window Info<\/strong>.<\/li>\n<li><strong>Inspect.exe<\/strong> \u2014 \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 Windows SDK. \u0415\u0441\u043b\u0438 \u043e\u043d \u0443 \u0432\u0430\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d, \u0442\u043e \u043d\u0430 64-\u0431\u0438\u0442\u043d\u043e\u0439 Windows \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0435\u0433\u043e \u0432 \u043f\u0430\u043f\u043a\u0435 <code>C:Program Files (x86)Windows Kits&lt;winver&gt;binx64<\/code>. \u0412 \u0441\u0430\u043c\u043e\u043c \u0438\u043d\u0441\u043f\u0435\u043a\u0442\u043e\u0440\u0435 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0440\u0435\u0436\u0438\u043c <strong>UI Automation<\/strong> \u0432\u043c\u0435\u0441\u0442\u043e MS AA (Active Accessibility, \u043f\u0440\u0435\u0434\u043e\u043a UI Automation).<\/li>\n<\/ul>\n<p><\/p>\n<p>\u041f\u0440\u043e\u0441\u0432\u0435\u0442\u0438\u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430\u0441\u043a\u0432\u043e\u0437\u044c, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0431\u044d\u043a\u0435\u043d\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u043c\u044f \u0431\u044d\u043a\u0435\u043d\u0434\u0430 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 Application.<\/p>\n<p><\/p>\n<ul>\n<li><strong>backend=&#187;win32&#8243;<\/strong> \u2014 \u043f\u043e\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0445\u043e\u0440\u043e\u0448\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 MFC, WTL, VB6 \u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 legacy \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438.<\/li>\n<li><strong>backend=&#187;uia&#187;<\/strong> \u2014 \u043d\u043e\u0432\u044b\u0439 \u0431\u044d\u043a\u0435\u043d\u0434 \u0434\u043b\u044f MS UI Automation: \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 WPF \u0438 WinForms; \u0442\u0430\u043a\u0436\u0435 \u0445\u043e\u0440\u043e\u0448 \u0434\u043b\u044f Delphi \u0438 Windows Store \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439; \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 Qt5 \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 Java \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438. \u0418 \u0432\u043e\u043e\u0431\u0449\u0435, \u0435\u0441\u043b\u0438 Inspect.exe \u0432\u0438\u0434\u0438\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0438 \u0438\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u0437\u043d\u0430\u0447\u0438\u0442 \u044d\u0442\u043e\u0442 \u0431\u044d\u043a\u0435\u043d\u0434 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442. \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432 \u0442\u043e\u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 UI Automation (Mozilla \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0430 \u0425\u0440\u043e\u043c\u0443 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u043a\u043e\u0440\u043c\u0438\u0442\u044c \u043a\u043b\u044e\u0447 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 <code>--force-renderer-accessibility<\/code>, \u0447\u0442\u043e\u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445 \u0432 Inspect.exe). \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0446\u0438\u044f \u0441 Selenium \u0432 \u044d\u0442\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043d\u0430\u0432\u0440\u044f\u0434 \u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430. \u041f\u0440\u043e\u0441\u0442\u043e \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0441\u043f\u043e\u0441\u043e\u0431 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u043c (\u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u043a\u0440\u043e\u0441\u0441-\u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f).<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"vhodnye-tochki-dlya-avtomatizacii\">\u0412\u0445\u043e\u0434\u043d\u044b\u0435 \u0442\u043e\u0447\u043a\u0438 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438<\/h3>\n<p><\/p>\n<p>\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u043e. \u041f\u043e\u0440\u0430 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 Application \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u0438\u043b\u0438 \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u043a \u0443\u0436\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u043c\u0443. \u042d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u043b\u043e\u043d \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 <code>subprocess.Popen<\/code>, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0432\u0432\u043e\u0434\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u0432\u0430\u0448\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0433\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430. \u042d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u0435\u0441\u043b\u0438 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0440\u043e\u0433\u0430\u0442\u044c \u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f.<\/p>\n<p><\/p>\n<pre><code class=\"python\">from pywinauto.application import Application\napp = Application(backend=\"uia\").start('notepad.exe')\n\n# \u041e\u043f\u0438\u0448\u0435\u043c \u043e\u043a\u043d\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0445\u043e\u0442\u0438\u043c \u043d\u0430\u0439\u0442\u0438 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 Notepad.exe\ndlg_spec = app.UntitledNotepad\n# \u0436\u0434\u0435\u043c \u043f\u043e\u043a\u0430 \u043e\u043a\u043d\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f\nactionable_dlg = dlg_spec.wait('visible')<\/code><\/pre>\n<p><\/p>\n<p>\u0415\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438, \u0432\u0430\u043c \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u043a\u043b\u0430\u0441\u0441 <code>Desktop<\/code>. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440\u0435 \u043d\u0430 Win10 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0440\u0430\u0437\u043c\u0430\u0437\u0430\u043d\u0430 \u0430\u0436 \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c (\u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e <code>calc.exe<\/code>). \u0422\u0430\u043a \u0447\u0442\u043e \u0431\u0435\u0437 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <code>Desktop<\/code> \u043d\u0435 \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c.<\/p>\n<p><\/p>\n<pre><code class=\"python\">from subprocess import Popen\nfrom pywinauto import Desktop\n\nPopen('calc.exe', shell=True)\ndlg = Desktop(backend=\"uia\").Calculator\ndlg.wait('visible')<\/code><\/pre>\n<p><\/p>\n<p>\u041a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 (<code>Application<\/code> \u0438\u043b\u0438 <code>Desktop<\/code>) \u2014 \u044d\u0442\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e, \u0433\u0434\u0435 \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0431\u044d\u043a\u0435\u043d\u0434. \u0412\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e \u043b\u043e\u0436\u0438\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044e &#171;\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f-&gt;\u0432\u0440\u0430\u043f\u043f\u0435\u0440&#187;, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<p><\/p>\n<h3 id=\"specifikacii-okonelementov\">\u0421\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043e\u043a\u043e\u043d\/\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432<\/h3>\n<p><\/p>\n<p>\u042d\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 pywinauto. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043e\u043a\u043d\u043e\/\u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u043d\u043e \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043e\u043d\u043e \u0435\u0449\u0435 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u043b\u0438 \u0443\u0436\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u043e. \u0421\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043e\u043a\u043d\u0430 (\u043e\u0431\u044a\u0435\u043a\u0442 <em>WindowSpecification<\/em>) \u0445\u0440\u0430\u043d\u0438\u0442 \u0432 \u0441\u0435\u0431\u0435 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0438, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043a\u0430\u0442\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u0438\u043b\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442.<\/p>\n<p><\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043e\u043a\u043d\u0430:<\/p>\n<p><\/p>\n<pre><code class=\"python\">&gt;&gt;&gt; dlg_spec = app.window(title='Untitled - Notepad')\n\n&gt;&gt;&gt; dlg_spec\n&lt;pywinauto.application.WindowSpecification object at 0x0568B790&gt;\n\n&gt;&gt;&gt; dlg_spec.wrapper_object()\n&lt;pywinauto.controls.win32_controls.DialogWrapper object at 0x05639B70&gt;<\/code><\/pre>\n<p><\/p>\n<p>\u0421\u0430\u043c \u043f\u043e\u0438\u0441\u043a \u043e\u043a\u043d\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e \u0432\u044b\u0437\u043e\u0432\u0443 \u043c\u0435\u0442\u043e\u0434\u0430 <code>.wrapper_object()<\/code>. \u041e\u043d \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u0435\u043a\u0438\u0439 &#171;\u0432\u0440\u0430\u043f\u043f\u0435\u0440&#187; \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430\/\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0438\u043b\u0438 \u043a\u0438\u0434\u0430\u0435\u0442 <code>ElementNotFoundError<\/code> (\u0438\u043d\u043e\u0433\u0434\u0430 <code>ElementAmbiguousError<\/code>, \u0435\u0441\u043b\u0438 \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0442\u043e \u0435\u0441\u0442\u044c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u044c \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0439 \u043f\u043e\u0438\u0441\u043a\u0430). \u042d\u0442\u043e\u0442 &#171;\u0432\u0440\u0430\u043f\u043f\u0435\u0440&#187; \u0443\u0436\u0435 \u0443\u043c\u0435\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c \u0438\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u043d\u0435\u0433\u043e.<\/p>\n<p><\/p>\n<p>Python \u043c\u043e\u0436\u0435\u0442 \u0441\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0432\u044b\u0437\u043e\u0432 <code>.wrapper_object()<\/code>, \u0442\u0430\u043a \u0447\u0442\u043e \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043a\u043e\u0440\u043e\u0447\u0435. \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0432\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0434\u0435\u043b\u0430\u044e\u0442 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435:<\/p>\n<p><\/p>\n<pre><code class=\"python\">dlg_spec.wrapper_object().minimize() # debugging\ndlg_spec.minimize() # production<\/code><\/pre>\n<p><\/p>\n<p>\u0415\u0441\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0435\u0432 \u043f\u043e\u0438\u0441\u043a\u0430 \u0434\u043b\u044f \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043e\u043a\u043d\u0430. \u0412\u043e\u0442 \u043b\u0438\u0448\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432:<\/p>\n<p><\/p>\n<pre><code class=\"python\"># \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0440\u043e\u0432\u043d\u0435\u0439\napp.window(title_re='.* - Notepad$').window(class_name='Edit')\n\n# \u043c\u043e\u0436\u043d\u043e \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0438 (\u043a\u0430\u043a AND) \u0438 \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\ndlg = Desktop(backend=\"uia\").Calculator\ndlg.window(auto_id='num8Button', control_type='Button')<\/code><\/pre>\n<p><\/p>\n<p>\u0421\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0435\u0432 \u0435\u0441\u0442\u044c \u0432 \u0434\u043e\u043a\u0430\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <noindex><a rel=\"nofollow\" href=\"https:\/\/pywinauto.readthedocs.io\/en\/latest\/code\/pywinauto.findwindows.html#pywinauto.findwindows.find_elements\">pywinauto.findwindows.find_elements(&#8230;)<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"magiya-dostupa-po-atributu-i-po-klyuchu\">\u041c\u0430\u0433\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043f\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0443 \u0438 \u043f\u043e \u043a\u043b\u044e\u0447\u0443<\/h3>\n<p><\/p>\n<p>Python \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0439 \u043e\u043a\u043d\u0430 \u0438 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0435\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 (\u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d \u043c\u0435\u0442\u043e\u0434 <code>__getattribute__<\/code>). \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u043d\u0430 \u0438\u043c\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u0430\u043a\u0438\u0435 \u0436\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f, \u043a\u0430\u043a \u0438 \u043d\u0430 \u0438\u043c\u044f \u043b\u044e\u0431\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 (\u043d\u0435\u043b\u044c\u0437\u044f \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0440\u043e\u0431\u0435\u043b\u044b, \u0437\u0430\u043f\u044f\u0442\u044b\u0435 \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u0441\u043f\u0435\u0446\u0441\u0438\u043c\u0432\u043e\u043b\u044b). \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, pywinauto \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 &#171;best match&#187; \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u043e\u0438\u0441\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432 \u043a \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0430\u043c \u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0432\u0430\u0440\u0438\u0430\u0446\u0438\u044f\u043c.<\/p>\n<p><\/p>\n<pre><code class=\"python\">app.UntitledNotepad\n# \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u0447\u0442\u043e\napp.window(best_match='UntitledNotepad')<\/code><\/pre>\n<p><\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u043d\u0443\u0436\u043d\u044b Unicode \u0441\u0442\u0440\u043e\u043a\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0440\u0443\u0441\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430), \u043f\u0440\u043e\u0431\u0435\u043b\u044b \u0438 \u0442.\u043f., \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043f\u043e \u043a\u043b\u044e\u0447\u0443 (\u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c):<\/p>\n<p><\/p>\n<pre><code class=\"python\">app['Untitled - Notepad']\n# \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u0447\u0442\u043e\napp.window(best_match='Untitled - Notepad')<\/code><\/pre>\n<p><\/p>\n<h3 id=\"pyat-pravil-dlya-magicheskih-imen\">\u041f\u044f\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b \u0434\u043b\u044f \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0438\u043c\u0435\u043d<\/h3>\n<p><\/p>\n<p>\u041a\u0430\u043a \u0443\u0437\u043d\u0430\u0442\u044c \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u044b\u0435 \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438\u043c\u0435\u043d\u0430? \u0422\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 \u043f\u0435\u0440\u0435\u0434 \u043f\u043e\u0438\u0441\u043a\u043e\u043c. \u0415\u0441\u043b\u0438 \u0432\u044b \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u0438\u043c\u044f, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0445\u043e\u0436\u0435\u0435 \u043d\u0430 \u044d\u0442\u0430\u043b\u043e\u043d, \u0437\u043d\u0430\u0447\u0438\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0439\u0434\u0435\u043d.<\/p>\n<p><\/p>\n<ol>\n<li>\u041f\u043e \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0443 (\u0442\u0435\u043a\u0441\u0442, \u0438\u043c\u044f): <code>app.Properties.OK.click()<\/code><\/li>\n<li>\u041f\u043e \u0442\u0435\u043a\u0441\u0442\u0443 \u0438 \u043f\u043e \u0442\u0438\u043f\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430: <code>app.Properties.OKButton.click()<\/code><\/li>\n<li>\u041f\u043e \u0442\u0438\u043f\u0443 \u0438 \u043f\u043e \u043d\u043e\u043c\u0435\u0440\u0443: <code>app.Properties.Button3.click()<\/code> (\u0438\u043c\u0435\u043d\u0430 <code>Button0<\/code> \u0438 <code>Button1<\/code> \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u044b \u043a \u043f\u0435\u0440\u0432\u043e\u043c\u0443 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u043c\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443, <code>Button2<\/code> \u2014 \u043a\u043e \u0432\u0442\u043e\u0440\u043e\u043c\u0443, \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u0443\u0436\u0435 \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443 \u2014 \u0442\u0430\u043a \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043b\u043e\u0436\u0438\u043b\u043e\u0441\u044c)<\/li>\n<li>\u041f\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u0442\u0435\u043a\u0441\u0442\u0443 (\u0441\u043b\u0435\u0432\u0430 \u0438\u043b\u0438 \u0441\u0432\u0435\u0440\u0445\u0443) \u0438 \u043f\u043e \u0442\u0438\u043f\u0443: <code>app.OpenDialog.FileNameEdit.set_text(\"\")<\/code> (\u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u043c)<\/li>\n<li>\u041f\u043e \u0442\u0438\u043f\u0443 \u0438 \u043f\u043e \u0442\u0435\u043a\u0441\u0442\u0443 \u0432\u043d\u0443\u0442\u0440\u0438: <code>app.Properties.TabControlSharing.select(\"General\")<\/code><\/li>\n<\/ol>\n<p><\/p>\n<p>\u041e\u0431\u044b\u0447\u043d\u043e \u0434\u0432\u0430-\u0442\u0440\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e, \u0440\u0435\u0434\u043a\u043e \u0431\u043e\u043b\u044c\u0448\u0435. \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0438\u043c\u0435\u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 <strong>print_control_identifiers()<\/strong>. \u041e\u043d \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0447\u0430\u0442\u0430\u0442\u044c \u0434\u0435\u0440\u0435\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043a\u0430\u043a \u043d\u0430 \u044d\u043a\u0440\u0430\u043d, \u0442\u0430\u043a \u0438 \u0432 \u0444\u0430\u0439\u043b. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043f\u0435\u0447\u0430\u0442\u0430\u044e\u0442\u0441\u044f \u0435\u0433\u043e \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u044b\u0435 \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438\u043c\u0435\u043d\u0430. \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442\u0438\u0442\u044c \u043e\u0442\u0442\u0443\u0434\u0430 \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<p><\/p>\n<pre><code class=\"python\">app.Properties.child_window(title=\"Contains:\", auto_id=\"13087\", control_type=\"Edit\")<\/code><\/pre>\n<p>\n<b class=\"spoiler_title\">\u0421\u0430\u043c\u043e \u0434\u0435\u0440\u0435\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 &#8212; \u043e\u0431\u044b\u0447\u043d\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043f\u043e\u0440\u0442\u044f\u043d\u043a\u0430.<\/b><\/p>\n<pre><code class=\"python\">&gt;&gt;&gt; app.Properties.print_control_identifiers()\n\nControl Identifiers:\n\nDialog - 'Windows NT Properties'    (L688, T518, R1065, B1006)\n[u'Windows NT PropertiesDialog', u'Dialog', u'Windows NT Properties']\nchild_window(title=\"Windows NT Properties\", control_type=\"Window\")\n   |\n   | Image - ''    (L717, T589, R749, B622)\n   | [u'', u'0', u'Image1', u'Image0', 'Image', u'1']\n   | child_window(auto_id=\"13057\", control_type=\"Image\")\n   |\n   | Image - ''    (L717, T630, R1035, B632)\n   | ['Image2', u'2']\n   | child_window(auto_id=\"13095\", control_type=\"Image\")\n   |\n   | Edit - 'Folder name:'    (L790, T596, R1036, B619)\n   | [u'3', 'Edit', u'Edit1', u'Edit0']\n   | child_window(title=\"Folder name:\", auto_id=\"13156\", control_type=\"Edit\")\n   |\n   | Static - 'Type:'    (L717, T643, R780, B658)\n   | [u'Type:Static', u'Static', u'Static1', u'Static0', u'Type:']\n   | child_window(title=\"Type:\", auto_id=\"13080\", control_type=\"Text\")\n   |\n   | Edit - 'Type:'    (L790, T643, R1036, B666)\n   | [u'4', 'Edit2', u'Type:Edit']\n   | child_window(title=\"Type:\", auto_id=\"13059\", control_type=\"Edit\")\n   |\n   | Static - 'Location:'    (L717, T669, R780, B684)\n   | [u'Location:Static', u'Location:', u'Static2']\n   | child_window(title=\"Location:\", auto_id=\"13089\", control_type=\"Text\")\n   |\n   | Edit - 'Location:'    (L790, T669, R1036, B692)\n   | ['Edit3', u'Location:Edit', u'5']\n   | child_window(title=\"Location:\", auto_id=\"13065\", control_type=\"Edit\")\n   |\n   | Static - 'Size:'    (L717, T695, R780, B710)\n   | [u'Size:Static', u'Size:', u'Static3']\n   | child_window(title=\"Size:\", auto_id=\"13081\", control_type=\"Text\")\n   |\n   | Edit - 'Size:'    (L790, T695, R1036, B718)\n   | ['Edit4', u'6', u'Size:Edit']\n   | child_window(title=\"Size:\", auto_id=\"13064\", control_type=\"Edit\")\n   |\n   | Static - 'Size on disk:'    (L717, T721, R780, B736)\n   | [u'Size on disk:', u'Size on disk:Static', u'Static4']\n   | child_window(title=\"Size on disk:\", auto_id=\"13107\", control_type=\"Text\")\n   |\n   | Edit - 'Size on disk:'    (L790, T721, R1036, B744)\n   | ['Edit5', u'7', u'Size on disk:Edit']\n   | child_window(title=\"Size on disk:\", auto_id=\"13106\", control_type=\"Edit\")\n   |\n   | Static - 'Contains:'    (L717, T747, R780, B762)\n   | [u'Contains:1', u'Contains:0', u'Contains:Static', u'Static5', u'Contains:']\n   | child_window(title=\"Contains:\", auto_id=\"13088\", control_type=\"Text\")\n   |\n   | Edit - 'Contains:'    (L790, T747, R1036, B770)\n   | [u'8', 'Edit6', u'Contains:Edit']\n   | child_window(title=\"Contains:\", auto_id=\"13087\", control_type=\"Edit\")\n   |\n   | Image - 'Contains:'    (L717, T773, R1035, B775)\n   | [u'Contains:Image', 'Image3', u'Contains:2']\n   | child_window(title=\"Contains:\", auto_id=\"13096\", control_type=\"Image\")\n   |\n   | Static - 'Created:'    (L717, T786, R780, B801)\n   | [u'Created:', u'Created:Static', u'Static6', u'Created:1', u'Created:0']\n   | child_window(title=\"Created:\", auto_id=\"13092\", control_type=\"Text\")\n   |\n   | Edit - 'Created:'    (L790, T786, R1036, B809)\n   | [u'Created:Edit', 'Edit7', u'9']\n   | child_window(title=\"Created:\", auto_id=\"13072\", control_type=\"Edit\")\n   |\n   | Image - 'Created:'    (L717, T812, R1035, B814)\n   | [u'Created:Image', 'Image4', u'Created:2']\n   | child_window(title=\"Created:\", auto_id=\"13097\", control_type=\"Image\")\n   |\n   | Static - 'Attributes:'    (L717, T825, R780, B840)\n   | [u'Attributes:Static', u'Static7', u'Attributes:']\n   | child_window(title=\"Attributes:\", auto_id=\"13091\", control_type=\"Text\")\n   |\n   | CheckBox - 'Read-only (Only applies to files in folder)'    (L790, T825, R1035, B841)\n   | [u'CheckBox0', u'CheckBox1', 'CheckBox', u'Read-only (Only applies to files in folder)CheckBox', u'Read-only (Only applies to files in folder)']\n   | child_window(title=\"Read-only (Only applies to files in folder)\", auto_id=\"13075\", control_type=\"CheckBox\")\n   |\n   | CheckBox - 'Hidden'    (L790, T848, R865, B864)\n   | ['CheckBox2', u'HiddenCheckBox', u'Hidden']\n   | child_window(title=\"Hidden\", auto_id=\"13076\", control_type=\"CheckBox\")\n   |\n   | Button - 'Advanced...'    (L930, T845, R1035, B868)\n   | [u'Advanced...', u'Advanced...Button', 'Button', u'Button1', u'Button0']\n   | child_window(title=\"Advanced...\", auto_id=\"13154\", control_type=\"Button\")\n   |\n   | Button - 'OK'    (L814, T968, R889, B991)\n   | ['Button2', u'OK', u'OKButton']\n   | child_window(title=\"OK\", auto_id=\"1\", control_type=\"Button\")\n   |\n   | Button - 'Cancel'    (L895, T968, R970, B991)\n   | ['Button3', u'CancelButton', u'Cancel']\n   | child_window(title=\"Cancel\", auto_id=\"2\", control_type=\"Button\")\n   |\n   | Button - 'Apply'    (L976, T968, R1051, B991)\n   | ['Button4', u'ApplyButton', u'Apply']\n   | child_window(title=\"Apply\", auto_id=\"12321\", control_type=\"Button\")\n   |\n   | TabControl - ''    (L702, T556, R1051, B962)\n   | [u'10', u'TabControlSharing', u'TabControlPrevious Versions', u'TabControlSecurity', u'TabControl', u'TabControlCustomize']\n   | child_window(auto_id=\"12320\", control_type=\"Tab\")\n   |    |\n   |    | TabItem - 'General'    (L704, T558, R753, B576)\n   |    | [u'GeneralTabItem', 'TabItem', u'General', u'TabItem0', u'TabItem1']\n   |    | child_window(title=\"General\", control_type=\"TabItem\")\n   |    |\n   |    | TabItem - 'Sharing'    (L753, T558, R801, B576)\n   |    | [u'Sharing', u'SharingTabItem', 'TabItem2']\n   |    | child_window(title=\"Sharing\", control_type=\"TabItem\")\n   |    |\n   |    | TabItem - 'Security'    (L801, T558, R851, B576)\n   |    | [u'Security', 'TabItem3', u'SecurityTabItem']\n   |    | child_window(title=\"Security\", control_type=\"TabItem\")\n   |    |\n   |    | TabItem - 'Previous Versions'    (L851, T558, R947, B576)\n   |    | [u'Previous VersionsTabItem', u'Previous Versions', 'TabItem4']\n   |    | child_window(title=\"Previous Versions\", control_type=\"TabItem\")\n   |    |\n   |    | TabItem - 'Customize'    (L947, T558, R1007, B576)\n   |    | [u'CustomizeTabItem', 'TabItem5', u'Customize']\n   |    | child_window(title=\"Customize\", control_type=\"TabItem\")\n   |\n   | TitleBar - 'None'    (L712, T521, R1057, B549)\n   | ['TitleBar', u'11']\n   |    |\n   |    | Menu - 'System'    (L696, T526, R718, B548)\n   |    | [u'System0', u'System', u'System1', u'Menu', u'SystemMenu']\n   |    | child_window(title=\"System\", auto_id=\"MenuBar\", control_type=\"MenuBar\")\n   |    |    |\n   |    |    | MenuItem - 'System'    (L696, T526, R718, B548)\n   |    |    | [u'System2', u'MenuItem', u'SystemMenuItem']\n   |    |    | child_window(title=\"System\", control_type=\"MenuItem\")\n   |    |\n   |    | Button - 'Close'    (L1024, T519, R1058, B549)\n   |    | [u'CloseButton', u'Close', 'Button5']\n   |    | child_window(title=\"Close\", control_type=\"Button\")<\/code><\/pre>\n<p><\/p>\n<p>\u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043f\u0435\u0447\u0430\u0442\u044c \u0432\u0441\u0435\u0433\u043e \u0434\u0435\u0440\u0435\u0432\u0430 \u043c\u043e\u0436\u0435\u0442 \u0442\u043e\u0440\u043c\u043e\u0437\u0438\u0442\u044c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 iTunes \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u0430\u0436 \u0442\u0440\u0438 \u0442\u044b\u0441\u044f\u0447\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432!), \u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>depth<\/code> (\u0433\u043b\u0443\u0431\u0438\u043d\u0430): <code>depth=1<\/code> \u2014 \u0441\u0430\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442, <code>depth=2<\/code> \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0434\u0435\u0442\u0438, \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0415\u0433\u043e \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0432 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f\u0445 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 <code>child_window<\/code>.<\/p>\n<p><\/p>\n<h3 id=\"primery\">\u041f\u0440\u0438\u043c\u0435\u0440\u044b<\/h3>\n<p><\/p>\n<p>\u041c\u044b \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043f\u043e\u043f\u043e\u043b\u043d\u044f\u0435\u043c <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pywinauto\/pywinauto\/tree\/master\/examples\">\u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438<\/a><\/noindex>. \u0418\u0437 \u0441\u0432\u0435\u0436\u0438\u0445 \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044e \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 WireShark (\u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 Qt5 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f; \u0445\u043e\u0442\u044f \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0448\u0430\u0442\u044c \u0438 \u0431\u0435\u0437 GUI, \u0432\u0435\u0434\u044c \u0435\u0441\u0442\u044c <code>scapy.Sniffer<\/code> \u0438\u0437 \u043f\u0438\u0442\u043e\u043d\u043e\u0432\u0441\u043a\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/secdev\/scapy\">scapy<\/a><\/noindex>). \u0422\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 MS Paint \u0441 \u0435\u0433\u043e Ribbon \u0442\u0443\u043b\u0431\u0430\u0440\u043e\u043c.<\/p>\n<p><\/p>\n<p>\u0415\u0449\u0435 \u043e\u0434\u0438\u043d \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u0438\u043c \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u043c: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/vasily-v-ryabov\/ui-automation-course\/tree\/master\/02_google_drive_Murashov\">\u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u0438\u0437 explorer.exe \u043d\u0430 Chrome \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0434\u043b\u044f Google Drive<\/a><\/noindex> (\u043e\u043d \u043f\u0435\u0440\u0435\u043a\u043e\u0447\u0443\u0435\u0442 \u0432 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435).<\/p>\n<p><\/p>\n<p>\u0418, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438 \u043d\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b (hot keys) \u0438 \u043c\u044b\u0448\u0438:<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pywinauto\/pywinauto\/blob\/master\/examples\/hook_and_listen.py\">hook_and_listen.py<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"blagodarnosti\">\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u0438<\/h3>\n<p><\/p>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u0441\u043f\u0430\u0441\u0438\u0431\u043e \u2014 \u0442\u0435\u043c, \u043a\u0442\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442. \u0414\u043b\u044f \u043c\u0435\u043d\u044f \u0438 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/airelil\">\u0412\u0430\u043b\u0435\u043d\u0442\u0438\u043d\u0430<\/a><\/noindex> \u044d\u0442\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435 \u0445\u043e\u0431\u0431\u0438. \u0414\u0432\u043e\u0435 \u043c\u043e\u0438\u0445 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432 \u0438\u0437 \u041d\u041d\u0413\u0423 \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u0437\u0430\u0449\u0438\u0442\u0438\u043b\u0438 \u0434\u0438\u043f\u043b\u043e\u043c\u044b \u0431\u0430\u043a\u0430\u043b\u0430\u0432\u0440\u0430 \u043f\u043e \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u0435. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/cetygamer\">\u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440<\/a><\/noindex> \u0432\u043d\u0435\u0441 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0432\u043a\u043b\u0430\u0434 \u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 MS UI Automation \u0438 \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043d\u0430\u0447\u0430\u043b \u0434\u0435\u043b\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043a\u043e\u0434\u0430 \u043f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 &#171;\u0437\u0430\u043f\u0438\u0441\u044c-\u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435&#187; \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 (\u044d\u0442\u043e \u0441\u0430\u043c\u0430\u044f \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0444\u0438\u0447\u0430), \u043f\u043e\u043a\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f &#171;uia&#187; \u0431\u044d\u043a\u0435\u043d\u0434\u0430. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/MagazinnikIvan\">\u0418\u0432\u0430\u043d<\/a><\/noindex> \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u0431\u044d\u043a\u0435\u043d\u0434 \u043f\u043e\u0434 Linux \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 AT-SPI (\u043c\u043e\u0434\u0443\u043b\u0438 <code>mouse<\/code> \u0438 <code>keyboard<\/code> \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/python-xlib\/python-xlib\">python-xlib<\/a><\/noindex> \u2014 \u0443\u0436\u0435 \u0432 \u0440\u0435\u043b\u0438\u0437\u0430\u0445 0.6.x).<\/p>\n<p><\/p>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u0430\u0432\u043d\u043e \u0447\u0438\u0442\u0430\u044e \u0441\u043f\u0435\u0446\u043a\u0443\u0440\u0441 \u043f\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 Python, \u0447\u0430\u0441\u0442\u044c \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432-\u043c\u0430\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u044f, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0444\u0438\u0447\u0438 \u0438\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0432\u0435\u0449\u0438 \u043d\u0430 \u0441\u0442\u0430\u0434\u0438\u0438 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439 \u0442\u043e\u0436\u0435 \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u0440\u0430\u0441\u043a\u043e\u043f\u0430\u043b\u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u044b. \u0425\u043e\u0442\u044f \u0438\u043d\u043e\u0433\u0434\u0430 \u0437\u0430 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u043a\u043e\u0434\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043b\u0435\u0434\u0438\u0442\u044c. \u0412 \u044d\u0442\u043e\u043c \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u044b (QuantifiedCode, Codacy \u0438 Landscape) \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0442\u0435\u0441\u0442\u044b \u0432 \u043e\u0431\u043b\u0430\u043a\u0435 (\u0441\u0435\u0440\u0432\u0438\u0441 AppVeyor) \u0441 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0435\u043c \u043a\u043e\u0434\u0430 \u0432 \u0440\u0430\u0439\u043e\u043d\u0435 95%.<\/p>\n<p><\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0441\u043f\u0430\u0441\u0438\u0431\u043e \u0432\u0441\u0435\u043c, \u043a\u0442\u043e \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0442\u0437\u044b\u0432\u044b, \u0437\u0430\u0432\u043e\u0434\u0438\u0442 \u0431\u0430\u0433\u0438 \u0438 \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u0435\u0442 \u043f\u0443\u043b\u043b \u0440\u0435\u043a\u0432\u0435\u0441\u0442\u044b!<\/p>\n<p><\/p>\n<h3 id=\"dopolnitelnye-resursy\">\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b<\/h3>\n<p><\/p>\n<p>\u0417\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c\u0438 \u043c\u044b \u0441\u043b\u0435\u0434\u0438\u043c \u043f\u043e <noindex><a rel=\"nofollow\" href=\"https:\/\/stackoverflow.com\/questions\/tagged\/pywinauto\">\u0442\u0435\u0433\u0443 \u043d\u0430 StackOverflow<\/a><\/noindex> (\u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.stackoverflow.com\/questions\/tagged\/pywinauto\">\u0442\u0435\u0433 \u0432 \u0440\u0443\u0441\u0441\u043a\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 SO<\/a><\/noindex>) \u0438 <noindex><a rel=\"nofollow\" href=\"https:\/\/toster.ru\/search?q=pywinauto\">\u043f\u043e \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u043c\u0443 \u0441\u043b\u043e\u0432\u0443 \u043d\u0430 \u0422\u043e\u0441\u0442\u0435\u0440\u0435<\/a><\/noindex>. \u0415\u0441\u0442\u044c <noindex><a rel=\"nofollow\" href=\"https:\/\/gitter.im\/pywinauto-russian-users\/Lobby\">\u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0439 \u0447\u0430\u0442 \u0432 Gitter&#8217;\u0435<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u043c\u0435\u0441\u044f\u0446 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pywinauto\/pywinauto\/wiki\/UI-Automation-tools-ratings\">\u0440\u0435\u0439\u0442\u0438\u043d\u0433 open-source \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0434\u043b\u044f GUI \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/a><\/noindex>. \u041f\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u0437\u0432\u0435\u0437\u0434 \u043d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431\u0435 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0440\u0430\u0441\u0442\u0443\u0442 \u0442\u043e\u043b\u044c\u043a\u043e Autohotkey (\u0443 \u043d\u0438\u0445 \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u0438 \u0434\u043b\u0438\u043d\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f) \u0438 PyAutoGUI (\u0432\u043e \u043c\u043d\u043e\u0433\u043e\u043c \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u0438 \u043a\u043d\u0438\u0433 \u0435\u0435 \u0430\u0432\u0442\u043e\u0440\u0430 Al Sweigart: &#171;Automate the Boring Stuff with Python&#187; \u0438 \u0434\u0440\u0443\u0433\u0438\u0445).<\/p>\n<p>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/323962\/\">habr.com<\/a> <\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>Python \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 pywinauto \u2014 \u044d\u0442\u043e open source \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u043d\u044b\u0445 GUI \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 Windows. \u0417\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0434\u0432\u0430 \u0433\u043e\u0434\u0430 \u0432 \u043d\u0435\u0439 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043d\u043e\u0432\u044b\u0435 \u043a\u0440\u0443\u043f\u043d\u044b\u0435 \u0444\u0438\u0447\u0438: \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 MS UI Automation. \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u0440\u0435\u0436\u043d\u0438\u0439, \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f: WinForms, WPF, Qt5, Windows Store (UWP) \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435 \u2014 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0430 Windows. \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u044d\u043a\u0435\u043d\u0434\u043e\u0432\/\u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 (\u0441\u0435\u0439\u0447\u0430\u0441 \u0438\u0445 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-85535","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"Python \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 pywinauto \u2014 \u044d\u0442\u043e open source \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u043d\u044b\u0445 GUI \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 Windows. \u0417\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0434\u0432\u0430 \u0433\u043e\u0434\u0430 \u0432 \u043d\u0435\u0439 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043d\u043e\u0432\u044b\u0435 \u043a\u0440\u0443\u043f\u043d\u044b\u0435 \u0444\u0438\u0447\u0438: \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 MS UI Automation. \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u0440\u0435\u0436\u043d\u0438\u0439, \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f: WinForms, WPF, Qt5, Windows Store (UWP) \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435 \u2014 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0430 Windows. \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u044d\u043a\u0435\u043d\u0434\u043e\u0432\/\u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 (\u0441\u0435\u0439\u0447\u0430\u0441 \u0438\u0445\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/avtomatiziruem-desktopnyj-gui-na-python-pywinauto-kak-podruzhitsya-c-ms-ui-automation\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u043d\u044b\u0439 GUI \u043d\u0430 Python + pywinauto: \u043a\u0430\u043a \u043f\u043e\u0434\u0440\u0443\u0436\u0438\u0442\u044c\u0441\u044f c MS UI Automation | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"Python \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 pywinauto \u2014 \u044d\u0442\u043e open source \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u043d\u044b\u0445 GUI \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 Windows. \u0417\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0434\u0432\u0430 \u0433\u043e\u0434\u0430 \u0432 \u043d\u0435\u0439 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043d\u043e\u0432\u044b\u0435 \u043a\u0440\u0443\u043f\u043d\u044b\u0435 \u0444\u0438\u0447\u0438: \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 MS UI Automation. \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u0440\u0435\u0436\u043d\u0438\u0439, \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f: WinForms, WPF, Qt5, Windows Store (UWP) \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435 \u2014 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0430 Windows. \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u044d\u043a\u0435\u043d\u0434\u043e\u0432\/\u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 (\u0441\u0435\u0439\u0447\u0430\u0441 \u0438\u0445\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/avtomatiziruem-desktopnyj-gui-na-python-pywinauto-kak-podruzhitsya-c-ms-ui-automation\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-06-16T23:42:31+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-06-16T23:42:31+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Automatisierung von Desktop-GUI mit Python + pywinauto: So arbeiten Sie mit MS UI Automation zusammen | ProHoster","description":"Die Python-Bibliothek pywinauto ist ein Open-Source-Projekt zur Automatisierung von Desktop-GUI-Anwendungen unter Windows. In den letzten zwei Jahren gab es neue, bedeutende Funktionen: Unterst\u00fctzung der MS UI Automation-Technologie. Die Benutzeroberfl\u00e4che bleibt gleich, und jetzt werden unterst\u00fctzt: WinForms, WPF, Qt5, Windows Store (UWP) und vieles mehr \u2013 nahezu alles, was auf Windows vorhanden ist. Das System von Backends\/Plugins (derzeit gibt es)","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/avtomatiziruem-desktopnyj-gui-na-python-pywinauto-kak-podruzhitsya-c-ms-ui-automation","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u043d\u044b\u0439 GUI \u043d\u0430 Python + pywinauto: \u043a\u0430\u043a \u043f\u043e\u0434\u0440\u0443\u0436\u0438\u0442\u044c\u0441\u044f c MS UI Automation | ProHoster","og:description":"Python \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 pywinauto \u2014 \u044d\u0442\u043e open source \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u043d\u044b\u0445 GUI \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 Windows. \u0417\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0434\u0432\u0430 \u0433\u043e\u0434\u0430 \u0432 \u043d\u0435\u0439 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043d\u043e\u0432\u044b\u0435 \u043a\u0440\u0443\u043f\u043d\u044b\u0435 \u0444\u0438\u0447\u0438: \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 MS UI Automation. \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u0440\u0435\u0436\u043d\u0438\u0439, \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f: WinForms, WPF, Qt5, Windows Store (UWP) \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435 \u2014 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0430 Windows. \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u044d\u043a\u0435\u043d\u0434\u043e\u0432\/\u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 (\u0441\u0435\u0439\u0447\u0430\u0441 \u0438\u0445","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/avtomatiziruem-desktopnyj-gui-na-python-pywinauto-kak-podruzhitsya-c-ms-ui-automation","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-06-16T23:42:31+00:00","article:modified_time":"2020-06-16T23:42:31+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"85535","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 14:35:48","updated":"2022-09-29 03:06:08"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/85535","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=85535"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/85535\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=85535"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=85535"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=85535"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}