From 3f6183f26805e74b38e9ddf37e4f3077d0d37492 Mon Sep 17 00:00:00 2001 From: Ivan Maslov Date: Wed, 8 Jun 2022 10:42:52 +0300 Subject: [PATCH] write documentation in rus --- .../GuideSphinx/03_Copyrights_Contacts.rst | 24 +- Sources/GuideSphinx/Robot/01_Robot.rst | 111 ++- Sources/GuideSphinx/Robot/02_uidesktop.rst | 38 + .../Robot/{02_Defs.rst => 03_uiweb.rst} | 4 +- Sources/GuideSphinx/Robot/04_keyboard.rst | 38 + Sources/GuideSphinx/Robot/05_clipboard.rst | 38 + Sources/GuideSphinx/Robot/06_mouse.rst | 38 + Sources/GuideSphinx/Robot/07_image.rst | 38 + .../{03_HowToUse.rst => 08_HowToUse.rst} | 2 +- .../GuideSphinx/Robot/09_Dependencies.rst | 2 +- Sources/GuideSphinx/index.rst | 6 +- .../doctrees/03_Copyrights_Contacts.doctree | Bin 12305 -> 20878 bytes .../RUS_Guide/doctrees/Robot/01_Robot.doctree | Bin 4784 -> 21894 bytes .../doctrees/Robot/02_uidesktop.doctree | Bin 0 -> 140456 bytes .../RUS_Guide/doctrees/Robot/03_uiweb.doctree | Bin 0 -> 140416 bytes .../doctrees/Robot/04_keyboard.doctree | Bin 0 -> 140446 bytes .../doctrees/Robot/05_clipboard.doctree | Bin 0 -> 140456 bytes .../RUS_Guide/doctrees/Robot/06_mouse.doctree | Bin 0 -> 140416 bytes .../RUS_Guide/doctrees/Robot/07_image.doctree | Bin 0 -> 140416 bytes ...3_HowToUse.doctree => 08_HowToUse.doctree} | Bin 34955 -> 34955 bytes ...encies.doctree => 09_Dependencies.doctree} | Bin 4893 -> 4893 bytes .../doctrees/Studio/01_Studio.doctree | Bin 3598 -> 4115 bytes Wiki/RUS_Guide/doctrees/environment.pickle | Bin 436780 -> 466686 bytes Wiki/RUS_Guide/doctrees/index.doctree | Bin 42517 -> 48383 bytes Wiki/RUS_Guide/html/01_HowToInstall.html | 10 +- .../html/03_Copyrights_Contacts.html | 68 +- Wiki/RUS_Guide/html/Agent/02_Defs.html | 10 +- .../html/Orchestrator/01_Orchestrator.html | 10 +- Wiki/RUS_Guide/html/Orchestrator/02_Defs.html | 10 +- .../Orchestrator/03_gSettingsTemplate.html | 10 +- .../html/Orchestrator/04_HowToUse.html | 10 +- Wiki/RUS_Guide/html/Orchestrator/05_UAC.html | 10 +- .../html/Orchestrator/06_Defs Managers.html | 10 +- Wiki/RUS_Guide/html/Robot/01_Robot.html | 129 +++- Wiki/RUS_Guide/html/Robot/02_Defs.html | 58 +- Wiki/RUS_Guide/html/Robot/02_uidesktop.html | 710 ++++++++++++++++++ Wiki/RUS_Guide/html/Robot/03_uiweb.html | 710 ++++++++++++++++++ Wiki/RUS_Guide/html/Robot/04_keyboard.html | 710 ++++++++++++++++++ Wiki/RUS_Guide/html/Robot/05_clipboard.html | 710 ++++++++++++++++++ Wiki/RUS_Guide/html/Robot/06_mouse.html | 710 ++++++++++++++++++ Wiki/RUS_Guide/html/Robot/07_image.html | 710 ++++++++++++++++++ .../{03_HowToUse.html => 08_HowToUse.html} | 26 +- ...Dependencies.html => 09_Dependencies.html} | 22 +- Wiki/RUS_Guide/html/Studio/01_Studio.html | 18 +- Wiki/RUS_Guide/html/Studio/02_HowToUse.html | 10 +- Wiki/RUS_Guide/html/Tools/02_Defs.html | 10 +- Wiki/RUS_Guide/html/_modules/index.html | 10 +- .../_modules/pyOpenRPA/Agent/__Agent__.html | 10 +- .../Orchestrator/Managers/ControlPanel.html | 10 +- .../Orchestrator/Managers/Process.html | 10 +- .../pyOpenRPA/Orchestrator/Web/Basic.html | 10 +- .../Orchestrator/__Orchestrator__.html | 10 +- .../_modules/pyOpenRPA/Robot/UIDesktop.html | 54 +- .../_modules/pyOpenRPA/Tools/Debugger.html | 10 +- .../_modules/pyOpenRPA/Tools/StopSafe.html | 10 +- .../_sources/03_Copyrights_Contacts.rst.txt | 49 +- .../html/_sources/Robot/01_Robot.rst.txt | 113 ++- .../html/_sources/Robot/02_uidesktop.rst.txt | 38 + .../html/_sources/Robot/03_uiweb.rst.txt | 38 + .../html/_sources/Robot/04_keyboard.rst.txt | 38 + .../html/_sources/Robot/05_clipboard.rst.txt | 38 + .../html/_sources/Robot/06_mouse.rst.txt | 38 + .../html/_sources/Robot/07_image.rst.txt | 38 + ...3_HowToUse.rst.txt => 08_HowToUse.rst.txt} | 2 +- .../_sources/Robot/09_Dependencies.rst.txt | 2 +- .../html/_sources/Studio/01_Studio.rst.txt | 2 + Wiki/RUS_Guide/html/_sources/index.rst.txt | 138 ++-- Wiki/RUS_Guide/html/genindex.html | 58 +- Wiki/RUS_Guide/html/index.html | 182 +++-- Wiki/RUS_Guide/html/objects.inv | Bin 2488 -> 2732 bytes Wiki/RUS_Guide/html/py-modindex.html | 12 +- Wiki/RUS_Guide/html/search.html | 10 +- Wiki/RUS_Guide/html/searchindex.js | 2 +- .../markdown/03_Copyrights_Contacts.md | 68 +- Wiki/RUS_Guide/markdown/Robot/01_Robot.md | 120 ++- Wiki/RUS_Guide/markdown/Robot/02_uidesktop.md | 554 ++++++++++++++ Wiki/RUS_Guide/markdown/Robot/03_uiweb.md | 554 ++++++++++++++ Wiki/RUS_Guide/markdown/Robot/04_keyboard.md | 554 ++++++++++++++ Wiki/RUS_Guide/markdown/Robot/05_clipboard.md | 554 ++++++++++++++ Wiki/RUS_Guide/markdown/Robot/06_mouse.md | 554 ++++++++++++++ Wiki/RUS_Guide/markdown/Robot/07_image.md | 554 ++++++++++++++ .../Robot/{03_HowToUse.md => 08_HowToUse.md} | 2 +- ...{04_Dependencies.md => 09_Dependencies.md} | 2 +- Wiki/RUS_Guide/markdown/index.md | 180 +++-- 84 files changed, 9195 insertions(+), 453 deletions(-) create mode 100644 Sources/GuideSphinx/Robot/02_uidesktop.rst rename Sources/GuideSphinx/Robot/{02_Defs.rst => 03_uiweb.rst} (97%) create mode 100644 Sources/GuideSphinx/Robot/04_keyboard.rst create mode 100644 Sources/GuideSphinx/Robot/05_clipboard.rst create mode 100644 Sources/GuideSphinx/Robot/06_mouse.rst create mode 100644 Sources/GuideSphinx/Robot/07_image.rst rename Sources/GuideSphinx/Robot/{03_HowToUse.rst => 08_HowToUse.rst} (99%) rename Wiki/RUS_Guide/html/_sources/Robot/04_Dependencies.rst.txt => Sources/GuideSphinx/Robot/09_Dependencies.rst (92%) create mode 100644 Wiki/RUS_Guide/doctrees/Robot/02_uidesktop.doctree create mode 100644 Wiki/RUS_Guide/doctrees/Robot/03_uiweb.doctree create mode 100644 Wiki/RUS_Guide/doctrees/Robot/04_keyboard.doctree create mode 100644 Wiki/RUS_Guide/doctrees/Robot/05_clipboard.doctree create mode 100644 Wiki/RUS_Guide/doctrees/Robot/06_mouse.doctree create mode 100644 Wiki/RUS_Guide/doctrees/Robot/07_image.doctree rename Wiki/RUS_Guide/doctrees/Robot/{03_HowToUse.doctree => 08_HowToUse.doctree} (99%) rename Wiki/RUS_Guide/doctrees/Robot/{04_Dependencies.doctree => 09_Dependencies.doctree} (95%) create mode 100644 Wiki/RUS_Guide/html/Robot/02_uidesktop.html create mode 100644 Wiki/RUS_Guide/html/Robot/03_uiweb.html create mode 100644 Wiki/RUS_Guide/html/Robot/04_keyboard.html create mode 100644 Wiki/RUS_Guide/html/Robot/05_clipboard.html create mode 100644 Wiki/RUS_Guide/html/Robot/06_mouse.html create mode 100644 Wiki/RUS_Guide/html/Robot/07_image.html rename Wiki/RUS_Guide/html/Robot/{03_HowToUse.html => 08_HowToUse.html} (95%) rename Wiki/RUS_Guide/html/Robot/{04_Dependencies.html => 09_Dependencies.html} (86%) create mode 100644 Wiki/RUS_Guide/html/_sources/Robot/02_uidesktop.rst.txt create mode 100644 Wiki/RUS_Guide/html/_sources/Robot/03_uiweb.rst.txt create mode 100644 Wiki/RUS_Guide/html/_sources/Robot/04_keyboard.rst.txt create mode 100644 Wiki/RUS_Guide/html/_sources/Robot/05_clipboard.rst.txt create mode 100644 Wiki/RUS_Guide/html/_sources/Robot/06_mouse.rst.txt create mode 100644 Wiki/RUS_Guide/html/_sources/Robot/07_image.rst.txt rename Wiki/RUS_Guide/html/_sources/Robot/{03_HowToUse.rst.txt => 08_HowToUse.rst.txt} (99%) rename Sources/GuideSphinx/Robot/04_Dependencies.rst => Wiki/RUS_Guide/html/_sources/Robot/09_Dependencies.rst.txt (92%) create mode 100644 Wiki/RUS_Guide/markdown/Robot/02_uidesktop.md create mode 100644 Wiki/RUS_Guide/markdown/Robot/03_uiweb.md create mode 100644 Wiki/RUS_Guide/markdown/Robot/04_keyboard.md create mode 100644 Wiki/RUS_Guide/markdown/Robot/05_clipboard.md create mode 100644 Wiki/RUS_Guide/markdown/Robot/06_mouse.md create mode 100644 Wiki/RUS_Guide/markdown/Robot/07_image.md rename Wiki/RUS_Guide/markdown/Robot/{03_HowToUse.md => 08_HowToUse.md} (99%) rename Wiki/RUS_Guide/markdown/Robot/{04_Dependencies.md => 09_Dependencies.md} (95%) diff --git a/Sources/GuideSphinx/03_Copyrights_Contacts.rst b/Sources/GuideSphinx/03_Copyrights_Contacts.rst index 4d295582..7540ce47 100644 --- a/Sources/GuideSphinx/03_Copyrights_Contacts.rst +++ b/Sources/GuideSphinx/03_Copyrights_Contacts.rst @@ -42,12 +42,20 @@ Thank you! ************************************************** -3-rd party components license dependencies +Используемые сторонние компоненты (лицензионная чистота) ************************************************** -- WinPython 3.7.1 32-bit & 64-bit, license MIT (https://github.com/winpython/winpython) -- Selenium v..., license Apache 2.0 -- pywinauto 0.6.5, license BSD 3-Clause (https://github.com/pywinauto/pywinauto) -- Semantic UI ..., license MIT (https://github.com/Semantic-Org/Semantic-UI) -- PyAutoGUI ..., license BSD 3-Clause (https://github.com/asweigart/pyautogui) -- keyboard ..., license MIT (https://github.com/boppreh/keyboard) -- pywin32 ..., Python Software Foundation License (PSF) (https://github.com/mhammond/pywin32) \ No newline at end of file + +- WinPython, v3.7.1 32-bit & 64-bit, лицензия MIT (https://github.com/winpython/winpython) +- Selenium, v..., лицензия Apache 2.0 (https://github.com/SeleniumHQ/selenium/blob/trunk/LICENSE) +- pywinauto, v0.6.5, лицензия BSD 3-Clause (https://github.com/pywinauto/pywinauto) +- Semantic UI, v..., лицензия MIT (https://github.com/Semantic-Org/Semantic-UI) +- PyAutoGUI, v..., лицензия BSD 3-Clause (https://github.com/asweigart/pyautogui) +- keyboard, v..., лицензия MIT (https://github.com/boppreh/keyboard) +- pywin32 (win32api), v..., Python Software Foundation лицензия (PSF) (https://github.com/mhammond/pywin32) +- WMI, v..., лицензия MIT, (http://www.opensource.org/licenses/mit-license.php) +- psutil, v..., лицензия BSD 3-Clause (https://github.com/giampaolo/psutil/blob/master/LICENSE) +- Pillow PIL, v..., лицензия HPND (https://github.com/python-pillow/Pillow/blob/main/LICENSE) +- requests, v..., лицензия Apache 2.0 (https://github.com/psf/requests/blob/main/LICENSE) +- JsRender, v..., лицензия MIT (https://github.com/BorisMoore/jsrender/blob/master/MIT-LICENSE.txt) +- Handlebars, v..., лицензия MIT, (https://github.com/handlebars-lang/handlebars.js/blob/master/LICENSE) +- jinja2, v..., лицензия BSD 3-Clause, (https://github.com/pallets/jinja/blob/main/LICENSE.rst) \ No newline at end of file diff --git a/Sources/GuideSphinx/Robot/01_Robot.rst b/Sources/GuideSphinx/Robot/01_Robot.rst index b85852ea..301b1c1f 100644 --- a/Sources/GuideSphinx/Robot/01_Robot.rst +++ b/Sources/GuideSphinx/Robot/01_Robot.rst @@ -4,21 +4,110 @@ 1. Описание ************************ -pyOpenRPA Robot is the python package which allow you to create best RPA program. +Модуль обеспечивает всю необходимую функциональность для создания любого программного робота RPA. Модуль робота поставляется в качестве библиотеки Python, что позволяет с легкостью интегрировать его в другие проекты перспективных технологий. -The description of the functions you can find page 'Defs' (see menu) +**Содержит** -Here is the example of the pyOpenRPA usage. +- Уровень доступа к элементам локального приложения (win32, UI automation), и веб приложения + + - UIDesktop: инструменты взаимодействия с элементами локального приложения (взаимодействие с ОС через протоколы win32, UI automation). Перейти к описанию функций: :ref:`module.robot.uidesktop` + - UIWeb: инструменты взаимодействия с элементами веб приложения. Перейти к описанию функций: :ref:`module.robot.uiweb` + +- Уровень доступа к текстовым каналам передачи данных (клавиатура, буфер обмена) + + - Keyboard: инструменты взаимодействия с клавиатурой. Перейти к описанию функций: :ref:`module.robot.keyboard` + - Clipboard: инструменты взаимодействия с буфером обмена. Перейти к описанию функций: :ref:`module.robot.clipboard` + +- Уровень доступа к графическим каналам передачи данных (мышь, экран) + + - Mouse: инструменты взаимодействия с мышью. Перейти к описанию функций: :ref:`module.robot.mouse` + - Image: инструменты взаимодействия с эраном рабочего стола. Перейти к описанию функций: :ref:`module.robot.image` + + +Ниже преставлен пример использования инструментов робота. .. code-block:: python - # EXAMPLE 1 - from pyOpenRPA.Robot import UIDesktop + import time + from pyOpenRPA.Robot import UIDesktop + + # UIDesktop: Работа с 1С + lDemoBaseSelector = [{"title":"Запуск 1С:Предприятия","class_name":"V8TopLevelFrameTaxiStarter","backend":"uia"},{"title":"DEMO", "depth_start": 5, "depth_end": 5}] + lDemoBase = UIDesktop.UIOSelector_Get_UIO(lDemoBaseSelector) + lDemoBase.draw_outline() + time.sleep(2.0) + lRunBaseSelector = [{"title":"Запуск 1С:Предприятия","class_name":"V8TopLevelFrameTaxiStarter","backend":"uia"},{"title":"1С:Предприятие", "depth_start": 4, "depth_end": 4}] + lRunBase = UIDesktop.UIOSelector_Get_UIO(lRunBaseSelector) + lRunBase.draw_outline() + time.sleep(2.0) + lRunBase.click_input() + + # ОТКРЫТЬ ЗАКАЗЫ ПОКУПАТЕЛЕЙ + lOrderNumberSelector = [{"title":"Управление нашей фирмой, редакция 1.6","class_name":"V8TopLevelFrameSDI","backend":"uia"},{"title":"АСФР-000036 Номер", "depth_start": 13, "depth_end": 13}] + UIDesktop.UIOSelector_Get_UIO(lOrderNumberSelector).draw_outline() + UIDesktop.UIOSelector_Get_UIO(lOrderNumberSelector).double_click_input() + + time.sleep(1.0) + lCommentSelector = [{"title":"Управление нашей фирмой, редакция 1.6","class_name":"V8TopLevelFrameSDI","backend":"uia"},{"control_type":"Pane"},{"control_type":"Pane"},{"control_type":"Pane"},{"control_type":"Pane"},{"control_type":"Pane"},{"control_type":"Pane"},{"control_type":"Pane"},{"title":"","control_type":"Edit", "depth_start": 1, "depth_end": 10}] + UIDesktop.UIOSelector_Get_UIO(lCommentSelector).draw_outline() + UIDesktop.UIOSelector_Get_UIO(lCommentSelector).set_edit_text("Заказ исполнен роботом") + + # UIWeb: Работа с браузером + # WIKI TO DO + + # Keyboard: Взаимодействие с клавиатурой + import ctypes # An included library with Python install. + from pyOpenRPA.Robot import Keyboard + from pyOpenRPA.Robot import Clipboard + Keyboard.send("win+r") + time.sleep(0.3) + Keyboard.write("cmd") + time.sleep(0.3) + Keyboard.send("enter") + time.sleep(0.6) + Keyboard.write("echo %time%") + time.sleep(0.3) + Keyboard.send("enter") + time.sleep(0.3) + Keyboard.send("ctrl+a") + time.sleep(0.6) + Clipboard.ClipboardSet("") + Keyboard.send("ctrl+c") + time.sleep(0.6) + lTextRaw = Clipboard.ClipboardGet() + lTimeStr = lTextRaw.split("\n")[-3] + + def msg_box(title, text, style): + return ctypes.windll.user32.MessageBoxW(0, text, title, style) + msg_box('Робот на клавиатуре', f'Робот извлек время из консоли: {lTimeStr}', 0) + + # Mouse: Взаимодействие с мышью + from pyOpenRPA.Robot import Mouse + # Нарисовать букву Я + x = -50 + y = 150 + Mouse.mouseDown(x+100,y+0) + Mouse.moveTo(x+100,y+100) + Mouse.moveTo(x+100,y+50) + Mouse.moveTo(x+80,y+30) + Mouse.moveTo(x+100,y+0) + Mouse.moveTo(x+100,y+50) + Mouse.moveTo(x+80,y+100) + Mouse.mouseUp() + + time.sleep(0.5) + # Нарисовать :) + x = 230 + y = 150 + Mouse.mouseDown(x+0,y+0) + Mouse.moveTo(x+0,y+75) + Mouse.mouseUp() - lNotepadOKButton = UIDesktop.UIOSelector_Get_UIO( - inSpecificationList=[ - {"title":"notepad.exe"},{"title":"OK"}], - inElement=None, - inFlagRaiseException=True) + Mouse.mouseDown(x+75,y+0) + Mouse.moveTo(x+75,y+75) + Mouse.mouseUp() - lNotepadOKButton.click() + Mouse.mouseDown(x-30,y+90) + Mouse.moveTo(x+40,y+130) + Mouse.moveTo(x+105,y+90) + Mouse.mouseUp() \ No newline at end of file diff --git a/Sources/GuideSphinx/Robot/02_uidesktop.rst b/Sources/GuideSphinx/Robot/02_uidesktop.rst new file mode 100644 index 00000000..2ad32908 --- /dev/null +++ b/Sources/GuideSphinx/Robot/02_uidesktop.rst @@ -0,0 +1,38 @@ +.. _module.robot.uidesktop: + +#################################### +2. UIDesktop +#################################### + +Here you can find the functions description for interaction with desktop GUI applications + +How to use both x32 and x64 python processes (it can be helpfully, if another app GUI is on another bitness than your app) + +.. code-block:: python + + from pyOpenRPA.Robot import UIDesktop + #Section for robot init + lPyOpenRPA_SettingsDict = { + "Python32FullPath": "..\\Resources\\WPy32-3720\\python-3.7.2\\python.exe", #Set from user: "..\\Resources\\WPy32-3720\\python-3.7.2\\OpenRPARobotGUIx32.exe" + "Python64FullPath": "..\\Resources\\WPy64-3720\\python-3.7.2.amd64\\python.exe", #Set from user + "Python32ProcessName": "pyOpenRPA_UIDesktopX32.exe", #Config set once + "Python64ProcessName": "pyOpenRPA_UIDesktopX64.exe" #Config set once + } + # Init the pyOpenRPA configuration + UIDesktop.Utils.ProcessBitness.SettingsInit(lPyOpenRPA_SettingsDict) + # Now you can use pyOpenRPA with both bitness. + + +.. automodule:: pyOpenRPA.Robot.UIDesktop + :members: + :autosummary: + + +********** +References +********** + +`reStructuredText`_ + +.. target-notes:: +.. _`reStructuredText`: http://docutils.sourceforge.net/rst.html diff --git a/Sources/GuideSphinx/Robot/02_Defs.rst b/Sources/GuideSphinx/Robot/03_uiweb.rst similarity index 97% rename from Sources/GuideSphinx/Robot/02_Defs.rst rename to Sources/GuideSphinx/Robot/03_uiweb.rst index 46fafea4..80946577 100644 --- a/Sources/GuideSphinx/Robot/02_Defs.rst +++ b/Sources/GuideSphinx/Robot/03_uiweb.rst @@ -1,5 +1,7 @@ +.. _module.robot.uiweb: + #################################### -2. Функции +3. UIWeb #################################### Here you can find the functions description for interaction with desktop GUI applications diff --git a/Sources/GuideSphinx/Robot/04_keyboard.rst b/Sources/GuideSphinx/Robot/04_keyboard.rst new file mode 100644 index 00000000..b3f0f318 --- /dev/null +++ b/Sources/GuideSphinx/Robot/04_keyboard.rst @@ -0,0 +1,38 @@ +.. _module.robot.keyboard: + +#################################### +4. Keyboard +#################################### + +Here you can find the functions description for interaction with desktop GUI applications + +How to use both x32 and x64 python processes (it can be helpfully, if another app GUI is on another bitness than your app) + +.. code-block:: python + + from pyOpenRPA.Robot import UIDesktop + #Section for robot init + lPyOpenRPA_SettingsDict = { + "Python32FullPath": "..\\Resources\\WPy32-3720\\python-3.7.2\\python.exe", #Set from user: "..\\Resources\\WPy32-3720\\python-3.7.2\\OpenRPARobotGUIx32.exe" + "Python64FullPath": "..\\Resources\\WPy64-3720\\python-3.7.2.amd64\\python.exe", #Set from user + "Python32ProcessName": "pyOpenRPA_UIDesktopX32.exe", #Config set once + "Python64ProcessName": "pyOpenRPA_UIDesktopX64.exe" #Config set once + } + # Init the pyOpenRPA configuration + UIDesktop.Utils.ProcessBitness.SettingsInit(lPyOpenRPA_SettingsDict) + # Now you can use pyOpenRPA with both bitness. + + +.. automodule:: pyOpenRPA.Robot.UIDesktop + :members: + :autosummary: + + +********** +References +********** + +`reStructuredText`_ + +.. target-notes:: +.. _`reStructuredText`: http://docutils.sourceforge.net/rst.html diff --git a/Sources/GuideSphinx/Robot/05_clipboard.rst b/Sources/GuideSphinx/Robot/05_clipboard.rst new file mode 100644 index 00000000..d733784a --- /dev/null +++ b/Sources/GuideSphinx/Robot/05_clipboard.rst @@ -0,0 +1,38 @@ +.. _module.robot.clipboard: + +#################################### +5. Clipboard +#################################### + +Here you can find the functions description for interaction with desktop GUI applications + +How to use both x32 and x64 python processes (it can be helpfully, if another app GUI is on another bitness than your app) + +.. code-block:: python + + from pyOpenRPA.Robot import UIDesktop + #Section for robot init + lPyOpenRPA_SettingsDict = { + "Python32FullPath": "..\\Resources\\WPy32-3720\\python-3.7.2\\python.exe", #Set from user: "..\\Resources\\WPy32-3720\\python-3.7.2\\OpenRPARobotGUIx32.exe" + "Python64FullPath": "..\\Resources\\WPy64-3720\\python-3.7.2.amd64\\python.exe", #Set from user + "Python32ProcessName": "pyOpenRPA_UIDesktopX32.exe", #Config set once + "Python64ProcessName": "pyOpenRPA_UIDesktopX64.exe" #Config set once + } + # Init the pyOpenRPA configuration + UIDesktop.Utils.ProcessBitness.SettingsInit(lPyOpenRPA_SettingsDict) + # Now you can use pyOpenRPA with both bitness. + + +.. automodule:: pyOpenRPA.Robot.UIDesktop + :members: + :autosummary: + + +********** +References +********** + +`reStructuredText`_ + +.. target-notes:: +.. _`reStructuredText`: http://docutils.sourceforge.net/rst.html diff --git a/Sources/GuideSphinx/Robot/06_mouse.rst b/Sources/GuideSphinx/Robot/06_mouse.rst new file mode 100644 index 00000000..ca52389d --- /dev/null +++ b/Sources/GuideSphinx/Robot/06_mouse.rst @@ -0,0 +1,38 @@ +.. _module.robot.mouse: + +#################################### +6. Mouse +#################################### + +Here you can find the functions description for interaction with desktop GUI applications + +How to use both x32 and x64 python processes (it can be helpfully, if another app GUI is on another bitness than your app) + +.. code-block:: python + + from pyOpenRPA.Robot import UIDesktop + #Section for robot init + lPyOpenRPA_SettingsDict = { + "Python32FullPath": "..\\Resources\\WPy32-3720\\python-3.7.2\\python.exe", #Set from user: "..\\Resources\\WPy32-3720\\python-3.7.2\\OpenRPARobotGUIx32.exe" + "Python64FullPath": "..\\Resources\\WPy64-3720\\python-3.7.2.amd64\\python.exe", #Set from user + "Python32ProcessName": "pyOpenRPA_UIDesktopX32.exe", #Config set once + "Python64ProcessName": "pyOpenRPA_UIDesktopX64.exe" #Config set once + } + # Init the pyOpenRPA configuration + UIDesktop.Utils.ProcessBitness.SettingsInit(lPyOpenRPA_SettingsDict) + # Now you can use pyOpenRPA with both bitness. + + +.. automodule:: pyOpenRPA.Robot.UIDesktop + :members: + :autosummary: + + +********** +References +********** + +`reStructuredText`_ + +.. target-notes:: +.. _`reStructuredText`: http://docutils.sourceforge.net/rst.html diff --git a/Sources/GuideSphinx/Robot/07_image.rst b/Sources/GuideSphinx/Robot/07_image.rst new file mode 100644 index 00000000..3a0959e7 --- /dev/null +++ b/Sources/GuideSphinx/Robot/07_image.rst @@ -0,0 +1,38 @@ +.. _module.robot.image: + +#################################### +7. Image +#################################### + +Here you can find the functions description for interaction with desktop GUI applications + +How to use both x32 and x64 python processes (it can be helpfully, if another app GUI is on another bitness than your app) + +.. code-block:: python + + from pyOpenRPA.Robot import UIDesktop + #Section for robot init + lPyOpenRPA_SettingsDict = { + "Python32FullPath": "..\\Resources\\WPy32-3720\\python-3.7.2\\python.exe", #Set from user: "..\\Resources\\WPy32-3720\\python-3.7.2\\OpenRPARobotGUIx32.exe" + "Python64FullPath": "..\\Resources\\WPy64-3720\\python-3.7.2.amd64\\python.exe", #Set from user + "Python32ProcessName": "pyOpenRPA_UIDesktopX32.exe", #Config set once + "Python64ProcessName": "pyOpenRPA_UIDesktopX64.exe" #Config set once + } + # Init the pyOpenRPA configuration + UIDesktop.Utils.ProcessBitness.SettingsInit(lPyOpenRPA_SettingsDict) + # Now you can use pyOpenRPA with both bitness. + + +.. automodule:: pyOpenRPA.Robot.UIDesktop + :members: + :autosummary: + + +********** +References +********** + +`reStructuredText`_ + +.. target-notes:: +.. _`reStructuredText`: http://docutils.sourceforge.net/rst.html diff --git a/Sources/GuideSphinx/Robot/03_HowToUse.rst b/Sources/GuideSphinx/Robot/08_HowToUse.rst similarity index 99% rename from Sources/GuideSphinx/Robot/03_HowToUse.rst rename to Sources/GuideSphinx/Robot/08_HowToUse.rst index a771a294..5259e73b 100644 --- a/Sources/GuideSphinx/Robot/03_HowToUse.rst +++ b/Sources/GuideSphinx/Robot/08_HowToUse.rst @@ -1,5 +1,5 @@ #################################### -3. Как использовать? +8. Как использовать? #################################### The Robot tool is the main module for production process automation. It has no graphic/console interface. All low-level actions to OS are perfoming by the Robot tool in pyOpenRPA. diff --git a/Wiki/RUS_Guide/html/_sources/Robot/04_Dependencies.rst.txt b/Sources/GuideSphinx/Robot/09_Dependencies.rst similarity index 92% rename from Wiki/RUS_Guide/html/_sources/Robot/04_Dependencies.rst.txt rename to Sources/GuideSphinx/Robot/09_Dependencies.rst index f81546d8..ce74f304 100644 --- a/Wiki/RUS_Guide/html/_sources/Robot/04_Dependencies.rst.txt +++ b/Sources/GuideSphinx/Robot/09_Dependencies.rst @@ -1,5 +1,5 @@ #################################### -4. Зависимости +9. Зависимости #################################### Python 3 x32 [psutil, pywinauto, wmi, PIL, keyboard, pyautogui, win32api (pywin32), selenium, openCV, tesseract, requests, lxml, PyMuPDF] diff --git a/Sources/GuideSphinx/index.rst b/Sources/GuideSphinx/index.rst index bfbff939..5e7e861b 100644 --- a/Sources/GuideSphinx/index.rst +++ b/Sources/GuideSphinx/index.rst @@ -62,9 +62,9 @@ pyOpenRPA - роботы вам помогут! **Содержит** -- уровень доступа к элементам локального (win32, UI automation) и веб приложения -- уровень доступа к текстовым каналам передачи данных (клавиатура, буфер обмена) -- уровень доступа к графическим каналам передачи данных (мышь, экран) +- Уровень доступа к элементам локального приложения (win32, UI automation), и веб приложения +- Уровень доступа к текстовым каналам передачи данных (клавиатура, буфер обмена) +- Уровень доступа к графическим каналам передачи данных (мышь, экран) Подробное описание модуля: :ref:`module.robot.description`. diff --git a/Wiki/RUS_Guide/doctrees/03_Copyrights_Contacts.doctree b/Wiki/RUS_Guide/doctrees/03_Copyrights_Contacts.doctree index efa88d664a121bb9bcd8e905091cbf515ca0d334..ec2da5024d43c8ff8b4d6d73e0e6959b9e50dfa5 100644 GIT binary patch literal 20878 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 D-w|E{ delta 3155 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 VFg-;~E5Z&@wbC5M1>6`N`2RyZl_UTF literal 0 HcmV?d00001 diff --git a/Wiki/RUS_Guide/doctrees/Robot/03_uiweb.doctree b/Wiki/RUS_Guide/doctrees/Robot/03_uiweb.doctree new file mode 100644 index 0000000000000000000000000000000000000000..aaccfbaf508fd03c345393a6553000b4869bfb8c GIT binary patch literal 140416 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 JdF*4d+Tasm1Kd@v;wh&$kNyZLdG4#&#?sRK* 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 Zs{qNs^b|3x2&+TYN^=kW>Hw literal 0 HcmV?d00001 diff --git a/Wiki/RUS_Guide/doctrees/Robot/05_clipboard.doctree b/Wiki/RUS_Guide/doctrees/Robot/05_clipboard.doctree new file mode 100644 index 0000000000000000000000000000000000000000..9c9e210f86927fd3c5eac05bc5535a370a4ca5e5 GIT binary patch literal 140456 zcmeHw3z!^7b*^43Y1fi0$(C%(Htt>dF*4d+Tasm1Kd@v;wh&$kNyZLdG4#&#?sRK* zW<1@a)nYr>k6;VvgapQbFAzcqA-PTnF9&0R34%Z%Kvv#b{^y=+*GgvP_<&w4R;oqA zZo12h)k0&!s5s3xHa9)ge4v?gyX*R-U2W70M$=sYH3}uOT&x?F<`F1dh4me?Y!A>5 zmO6TU-0+*1y4;Hg2DJP{wb&>d1NG`?)fp(1&Dv;HuNQ}!rDaE&ZjbIbb#t`g00}tc zVzX#N_wKSnS+{NY5`OQh=o8*=%ZrVg|Hr6aI9fNxygKlUS!}xNz0vx~X#IS&X2V_P z=;PS7S?Y0@l+B9K+_%tOTGL@ZPP4SQw6L_;UCL%VeCyE2j!}DLM;+#T%owo?)tYgr zUbyomBekjhHKTIyz>bkagf;faZ4I+%93uQ2If%0yx#qe&A9|o}JI%&usoPy<8wJO# zRyc!8U8SYSg&Y)iIi^!Kgd%svbpzV1j9r9VP;JR!<2bT7RQl>Bkr;Hixulh@#>td= zhf9|YH%9f+YG7<>?U82beE7E>{#^+FHXLa-O3y3hp!yYF^-^EyvVC2I(r#djK3>;r zC6S=txZS85+Elfn74(WWW>$)tQ!=!%Mukkv)^T_=Uwr0JBf z!cnJM({8(Sucp^(WwW4TW!szGpxeO_d=A|VQ@&B1Lqnxr!kJ}^Q^27cyafUp{;J!n zlbTc28n&T<Usm+=> z1}&hiQAef_=9sny4cWJ&rc;3qfZM=#;6JIii81X=lHhaoCBU8+XXk3Sz}0SdW!XfH zDd$Ja)xuFh_wN3$ixw;xt5+w0r*!!Zkfo-X6SZpH(eB*4%hRo%jfcEdMl_I^0nkI! z=_wyzE%S#A$1yA8_AayFXg6v1^=S0Jz5_&JTes{1$sEv~Qs0o)H!v_Va?tQBgFP~G z*MX_6Tl%+NzvY?{umvdK{;dPo4{Tw74H(CbzRent;b??nP>p()Zs`2T^kAWYLXj@R zL~h@fOyu@$5+VomiQ@KciKK?d*}CO`r@zBsJdqz<0(s8#yD5z@?OUsrF>_qAVfNKZ z!3g)ZeVamW+qaP!M>~6;j4XD#FbC*T{7)_Ii^}^ywbTn2&H^p8>i7 z#@*C`o+Ft0bC?750w5luxEhV$_-gaa`~Y9nO+6gOxLu|Vt(qrru%1${`_979hz`M< zE(ULQz0fFw!G<`lQm^SFFe4hiP1dHEtrYD!HI-#^bi@X))DNsU3e&ZP0MHBeIB5g5 zsUZl8Z3t*9<63phHyM#hK%})$V8;TOL#1dO7d&2wF_B3xgRr%3lCU`EE~)8ez3E;x z{n6=Xr$2Q1k?E7C-5ZjIcS=i#ou-Z)yN}T^cQ_Y_z*b#-^&S?14qbgU3zV0F7^;3V2Ev$X*k@kaj32JA#{e~ zJ}uWbX;!vw>C^7NU+Zg_dfz69mbGj9ZAUAc@Bz&+ClE9CoqP9(2P_(6Gc~BTv05%_ zh}pG%4Wk#bQ`MY$}0Uj8juRE*NG9?MWB_II6W_8p;Zcduz zGGZ*KiPJfuzZi(LWf5KI>B0r?=iOxtU%GER|I&N38CZ3h76W2Q5eKiH_`5u)IH z?%Axt=MfMsd`rS##MM|0dxut94kojoOcN>z9Ln!L4ubRuHY-8_RJ*lg6pkYPr2GNc zX<%(_bc&3D{dyWytp{0>-vikn`*!BlcU?wUF=y`8ttP0c%0s{fC9^qT9h%lb^%59vy zFG`(Eq+*YRPC9j_|3TW~HJ_Kvkggxn$Bg}$970A@EE{15R?@~1bCWa@(@V&~4Oc4$ zu5d`bLC!-bxj9&68Z32`0;xY}qm8A0COFSSU@8kGve3H<+Ifp{2S_QC=lv92X16DVjM%|kb0Eb4|*@R>D26=V3 zJ_UIqr&>2Wvn@9rPzw`=&<)nqaufP-bHaQT7(-Zk#p)!<2bvBTtO>|lVM#G)Iqa~{ zBT60c5#04n=#?p9rM2k){1JTzm~l{5XUM|$u5hqK@ldzB)ETc=8?{J4ib?ck5U!Hw zlWk$J410XEx*VEJnnkD7+}DF){ih*7{UiX4&%_|qNVqF>@N%&OOzDqSi&IiU7uTzk z(t<98b#g zs`CSok<7}sVF?eqi*lQMO>mbot=CFWY{c3GT*Uy~tqmYCnyC3^k`iG3Z-A!!Zy57m zLuSL@DOwvvbWD9^MLaQKU5jLB)*$>yqXN?n^GAr*W`!wJ#wSbjYapGkfOMVF~$+^Hu?z7Bqcgx#qpA!B#yq&#KkFBr>3c4*dX6<9IPJji1TQ}(5w ztXM5Lks}HA8#5OPF}u_fK$|3Yakvx1g&o5kag?<*8@328jO*1`V`BF|C=sZ#-Twe*}|&lyhd;g(jCZB1#K=6XJ2Pb~>9UkDe7z?=Wfhz)3?pl0pVA{~ ztmsoNf~M{Ilo!VPlr$#HLmaV`2qWFKc=eLkGP;)MLx0q@EKZR#b1e%z65?IUO*}d8 z?|`Z2<(Z1N*^8fD+KE%ttXmYOH_r_JO$t*+!|zEnSy@^z{P)J&UVoRR726+don-z? zvqeJK3FtE06r?+=9|*RFgE`(=ufFt=Lf*iXsD-jOFeHr?y@3Nw+w}$scv686^Uxva zL>}o5!K;_N#?c`>3jI-s@QM^sGly`GM?$tXy`uh93!2w2rc-zC*ZYgd8dxIU?D4h#~`7Uu}^Q zb_yagnCZdT5)qMsY>bdE_>@E!lzqWpNg6Bqg1>{N?fL>WWFTe2JahyfCBgtlumX1& z;NTm49uYSh&Ksc{4S`jmSzg2BWsaWVYcK%y3?E4mJo5~H>CqJL88#}M^<!%8&&NKV|BZVoWefOl3Ech1edm&=qg#)^Z_Ec!$S@Xc@NQpH+Fw=vEZTDWV zBkY{3KwS&-VfwsY-ebr>U$(f7)Xl|`#)<~|YG~T7fxbp5bt7=ytd}Z~ zKhMndu)>tlTze8rR)!YLbu>L6dh$Wl#08(1P&3d(6 zzGr`hlPvtJB!X6swU0>}E1L3GL(_Im`8G9E9^~wNH0O09ht|xw*EV?tqd9*wj6uzL zHAU>qoR>Ya;?4PinSNf0>Ho}k>^p_`A|o{G&lH$2&z!=aDoh!jf+zQ6m1@B$L{s

nC|lqp80G#-pbGiWC)KroPW3G2YZ)*V4oOOyOH>?ML}VoRVgZDokgd z8T`D$l+oaO5=>T(88`TFXG06t7Fx}m!Eb{ERfFI95KRB$3_kQ6GWf5Ph+Em6W#EXkE+H@tvI?|d?2Xuf9q)|HXymbpnsGlk^TURX`98tDFdNhAoS14~5YuPKXunM&Q)Q$5 z7D;18qx~Le+OE;QHdFA944sbwe3J;FHDm3yOwR5K0GBb^RhRpQOB$8D&(?60lRy5O#md>`BCX=6sG4=O|5ZX_b zd;KJ@T{PL}gXE~m{!WVgnaTc^M`FCm#%uXWS_MsZ8Ig79)@-KL=@or*{d^=;vo^tx zU$f-Nl?qcvbM46`S>!F4Ydsp+`nQ>@JzJjV4VbAGqE1PoWO!zW3>#>8!-Id8kdvm0 z40r>6oxnP2e<9O+P$ETT(>yF`tZ15#K+|?3=s~pznsa78#?LP%B4{ms_Sz<|Of<$- z7=s$)+fpRXjPWjytaxL*lS`%LR}V0AJriB|2K`Z-tY-a|!bIm;{QZ!^l+mDjvQ1W- z77Y4i)Vj)EC!uN&Wo^~WyyUpLth4qA2^;^warGG=jxCkIadp`!A@A_#5|vQ)4u2|X ztmqw{hNkU$2gT#+QZCHH2>#tf8m&1BuWj;*M@R8F7=t>BKTHuma}@9J$clFq`%pkL z^tu?f3}&=X-*tQqr>|LGRharba~)q+m@>K!Puj_f)Pn1fJmVyP|BkZFmcG5mb06~C z@1xg~#k>NjT@u2ML%g1>GefdfBVJDyGg8QXEMFEy#mequiKMZj`#2Apw(C9=A*5W- z<|EQrK;!`qB;_h(uU_&RM`v*b^hce=zbl%LUy^zWFTxNPLucOd#TLUXjO06(8mLbWEP+ zBr9bLj)}hUOEi$7H+rgiqfj%JB2(G4etFa-g?ek5h_LfH)Pb3@6?Abz-yz@ftVHU{ zzU3K7V@2QcS!mj>Z@Es*w}d1(A05hH5orn9e*i{NGiWG8%qQg2~F!g5i(u zlK3w?-chRoILT)?)FW-{qmaNeF`*~GqPry0&J;a>wC&BW47&kwmqgm6t>M`65O+zW zqxcJf-2QOU@;1_3>m-d8y~5?tv|X>Dwo4-C!aUq1Swo}&t|9By%U;9e<&M5!I}AX5 z!KxI=Ghc9yM^n5n*vT*DZ}}DKO!a4?D<2-*fs@s&eF_tuXI|oVg(;(#@MN2;HZ6FG z2O^QVzk>ajkF?|{g3Z-@1${NJ5NCIcoUq3z%)+2-@oZEWE95#HiJm9}ikhUcqU-oC z(6n9Gk??9@6-LZM?@=ZKX~BDV4U^3PdXL|O0jT#dQ-sgF$CyV`y!Y6h=smK&*JXx! z^L@yl;FLA%j}@j194dW?vgch2_0a%(>`CT4HNeT0z6`Hz|72q{zLLA7P%YcdeTz^s zpMcuWh7Sz8-Q{X!+|ftNMpF+g7JfM&{;h|97s9^{M_@#w;?zyUZXRjo z+@-cz83*FroAJqr{fBm%PQ|e8y%i_7Ny|-tK%4&P^t00+I{nD>$?2!G*nGpLrh9d4 z;Xt_SW@+iL)6{Vy_xTeUE?tK6Sl})x8g`-i#%6FrIVf3$C3zbdr#p?hA=Gi#h6l;P z&0PfGEO1wlW_qz$(I*0pHpJ7+JU~(vuF?cE{2bMqh{T&o{H`9AqV-d6A^eaxbU#oS z8qr7X5xrh0na7L~yHKqecD>LjkJP5%*Gj#nkJJsj+Nc){dt|aUwS8Ov*6X)i1I13M zTIt_9aQ(oR0ezylecMRc938Pu$LO!=g`@g7)aTP3IanR7IwN=P-DTKEooa2MHZ@eN z7Hm+A%D4s(s`8oxq~?HMGtB2E6I(aoa+t-dqxDfc2i<5vke%J#S=qS^TWFTgPHQQC zL$zuxA+M&_K?fY8j!z4S`m>1YOYFK~Lc1VwlqJ5pjB&)^?NLZL=KkP@~Q?#g4PFfOGDK>c^=;wF~OGem`I#Q_@}(UM&024?cywe;4%{fD$s&m<2pizF-JOUEjB zbJy{Qk}*OyBUGE4ribwO6?C$|<8HTS%rwfyd}w|1b=O6TCA{Y?!xn7q^dC$=HT_|9 zfv4Tm4^O}E^ut^fk|Hh&7*ezD2hzezR9t4LG_UeRHiWdcUg7Rq6TuTQ7JfP6^!C? z^fKgI>*J(SrD|4+#_{HBaPV(4Pmj?X<#20(oAs~ImHW~IckKvl>yd}`;Y-LHgGJVn zrmS&X0tQqVEh)6Kz5_Hf3+FA!ob?0YJNFia5#UxR`u_O9%y-o5`Vt7if_8CEn2e>$5+|Q;>rf_gTwfUQDL$Mx}OM{HIhm$oy|` z9;O*5#(WwQ`pmcf5B7l}p>?51`NauZHw zY+BG0^*QdsO3;|0IreN-2iEn_WdMaE6KFjAJV^u5QTwSiYbSIgM#9!E{9>j8;csGROG%tvXp;NEfl3kx zUz|pw7YJJ~g&uHbGz|6y5DA072sI;Nuyr?5kPre}FNX@HrPe+0!$NX#FdF%K%Zo&1 z(^v~kB`mcg@M}=qVyt^$<4ypmMy06PM%f^aRO{Dt2f*lP!!fkJQLng9%k@o~m91O) zwEOSZ`WmL*w+Z4M?b?2L@EhYj4Vq72WKGTb%ThW%^(5{2)JZLO>PgZ!{0g0)dJ=j+ zbuy-VzTB)~5DBcHm*5X2uYj_|XnWrH03zzWbp9afd!wSZj!C||Px#JVJN*s_s~?n?{cJlH#o+&qSC)T}z`7E(D~@H*Q! zYN6x=FTJicHgO@lEp|XD6xU@i!WYfEw=OlSn!+laK1DOAOkvOv>XMNH^M=?!yWV&=1&ZwoH?%_>xSj1>$-d$;x0xHR~ybIa6`r zoHL0lQCTbsKAGiXXfC-C1)t0_auFziPwQh~sjTN<64tZu8z!G9=Cu9_OTK|6pMc*w z0yOtX1AEvL%!)3z#Aen8;)ZAsQeGF=?U}`q{|4exQ*{=7Qylqo-q3w!j^apA8yR@K zFiuj;#>7|P7KQ`_=bV$3w-hG&ytR6;j}~B}^$S>nEYwW~Z5X6lzsgh{d~G6D4Dz8D z<`Bkp);XX*5e!6u;H8oVqDNz@NP*x*iq$C)lybM@KyZhI$V4D`v!sE@gjoZED}fL> z5WFFcL^%-j1rPy(KO$NY+9}Qk1d&{fjwlfH77#%PKcOZo6$l>XcnvniX9^7VY^;`x z8m3$TRKjK?O&&6%a<9UeE#kzuk@+gMD!?;{d&>ADL)_Cl$4x)c3X@Lyj9|uxP+3Rg zcj!@(X{`L4NM|o~2xk;CT9dGl)O|}fXYr;Kj#!Vv;3urd;L|EWUF!t=CZfSNkPhO| zATMnZ%<(nT1{y>f#ATKkt3#FscEeJbBA`K36GeD&AF0}5G(E$gu`dBewsC{FgJ?&aBi8zlBg66^)cI(3H32I$XTt7`u-gz zAxC`+S9B8f-2oClL{hTV`XQrW=kZ)2eI#XPwOY;!{?uM-ARDPY40uc0JR~oE+zgpz zoGwz+`EA7uK#po_fW_bx4xYywx}P}v;b4j!WT;Sl=Z9P~yzRu)dfW~XjCdvITgI(K zpW)UO*hds2UY4RwUII7>6wi~iA@za)F}51GU1?cx(l-LZ;ixAO5WYatK*T~!87Uy# zMydyA*5fZD$%MkCFc0yoAo+(S)FhIBK++(U{CEezW=rv`R1-RmXC29$67lT4k_I9Z zW)08gfDk#Jt)!7C$FsfwB6xNc^w{RcCXy@QS#Plu0 z5YfHO7v1b{RDK8s51U_cB?_SP{YWQVsD(c+ivykA?m44y0u|2fV?-|OA9@>^IXFMq zjU{>5XPk%>3x`c#D)BzJzbUxu0d4njeWF%2hO~R`>vK$}Z1fHF!Jej3(~Er%Z1%s~ zzpw8BIN%LlITr-1QU^tM>ZN5|bBV|PQVRD(fcjRb8v&?)M>>cDsJwJ%+^kPMNv3`3 z;bmFH@!pz0*_wR$Rgk#$7P+V^+Jk%_tN{kERof9YzfvlfTVG}CZ=df4J`V6UR z{Vn`pSp`pX1l8E>yKmHpJ>{zIXvg$&!@$efh@sj<4A>;Z%Ahdp2u9Gv$<#sg^HdAO zuY$t=_mo+s3jY_RgE-;y((7BDASc&txeJg8(veNvKTTmwMBIrQWc@V~pjoFBdZhpx zEtMj`elMxo;k?InE0vAx7O0wPWc|}1gNN&&^=K6(zI;I2qnB+gHt^K=1_|%K8sqw~|p&yV5jfu=bKFw<^p=5?9P_UgfnQP_@Otz#Yx2JjxropPHL_ zm7rqDQY+%^zp*OfWmiGPBGrVBCs_VfGN;4@%hx3hL?+Byg5|A1 zh&;jawKNjt2^L=fkp#;_&|{kk79NRUE{>TuA_0AhdLu7a^o&Fiw-oFY458GjJNut`(&Ckn`&R*(jVlpk(rvbSH zA#yGmHmhV*dd_r4WoHVPL{Pm7>P9juHms9t?i^rIb~w0@-LAN;^fauht!iQkvVd+>bBDh zm}8_So7{~Q_C(~Ks7frga-Bl26l|kuQUu$*q-uv#D}SUwI<>0rgsN#)Rmd`Kk*8L; zHY8+MT50MlRV%GQnV!PwW$^8q^#KLmQL!WMGKoD|?`V#N`QuDE78ZzcQ7Y$Hz6z6& z=UDzXmUJw~A|6?R1jUYmV;(b|srDbWmhaAyCUlyo?Z}YU{VFA zTCEJjIal&meY}B>LgKSmHw{-Sjf(NFgG$*s3R1fB4R*1_{GL2|C%p&+@a1z@k zG$l@Ai=;uuNx+^gGZ);7P@x5$T3HpWN295A(uMdg*(k@uqohmD8$6@r z(yP<-sMJ_@JU#j;8E>wKr`RGApz8YxNdwUm&02c22MCd;N1sh2QJx<41rSM(ejg&2 zHq)a>E<#M29`*b&Nv-{mhDE9A(Tx!GYEH?}bQ%WZi8F{Fv>fbVdm*3~{eihws>>I< z^#h;|Y~=UwM+P9&J3j(BB8KnKxu1~?=aSXYs772>s5umiFNCT9;HUyYEF`(~qNNNc zXcBumAaq&`jzM6^fES74*)w~yHd!(YB@NCCIdFHRjlUF4#4G+aFL0$|^vqZ&vZLpO zLf>+&B*E`xDV!0rTHgi{MzWe0lMY}>NUycvrMCp8-^zSB-ERAR!CFMh#I+djNI*GA zX7j=nRtXudb);%?W^<1i^-_&s09?!A6PTNPOGF;Xgqu(BzS*&QbwWEZ1vjPW4W}y8 zgJ5h-)gbsK=O)pDy(v>m)q>rmgE%eVrP~EKmSv8dTDR36K;lS6Hi_>{VM|7dLqI4( z1eCcI7fxcs@k}u=Wi8Ar+)iy zplX`m_H*d4W-wP2ck4Sanwb3mp)fvW9gd%gb;+`$d1w|jWy(Xdh?lcNIS;*HO4)VK?<0<@B&i7pte_f7zfcCP^SI9dJCYw8-Fx~*75&c^H6DlnCK@-O7 zc|-TZ$*%Vz(|>Ep zC>+(yG4>#VX=?`h2yGPJ01EjUSnl-tn`)gu2bi%HUn7=_bZORWDS6EE##>b{Sm>S8 zHk3%@F<&CH|G3{fVDPY65*HXM5e@a;hIIB)>l$+i%@6h5HGyriIQ$T@nJSj_Ln$PS zsNqql8_Au#k8}`+n!VD*Fp&hQf1W}Ha*hV6$T`Iz^$Ak7!}0yUD3DHt{!dUfgU~n8 zGcsP@R%0e3;b=^T7Tj3485)62`3}w@L;hE@zNNq*DqCbwCfO!x7Q4HJ*#u?=lN-^8 zjhJcY@=^vM>(|BskPTSUF#vMA7&7ju78>^L=6DI-IabPi24AN6s>00;$@IO5Gb$r6@i}bW zjD55ZOlAa++zGUV9e?5`_)8@X#7KcD7R4iXC|0LcqnsZ|?J8D3Sli9i$jiUkdFLimjTrbNgx^Br@`Vf`V_PP6`iPLjFvbW}6fjWLn! z+kM&2KC*cV1`iuJaj6Q(<^xD)FE!8U$OfL95j+dsL-aS9TiInrlODQ>qy=R3xs)l3 z$mnfQH-d~lO*)7}M!dBBonXE~W@c9zDHFq=#BiCQw@;?9NM&6N@_(9g9Og_!`TI4zC-C-r(^DoGmj7Dn~tD1VjaS=8&C`NvfOIVtOik6I94|$mW*xMvAw3 zRH+^h|8rUYNfM&{2PCwN+C(-R{&#RLCuL)`ASaK6jB-k^PQkx)C3hVBe_6(xq(kEW zL()J*6tf2YUj~H8!T&#`kthfMz5pWN|3>JsP4JK83gF)})&wBl3?)k7|5|WU-rE!5 zv~B?dA#^iW*$mjj`%d9GLecfGg|SuI^0^0}NNUR$k=1=ZP^ekU@JEI%gx+})1`sJN zp_4x&XUH#s!NdMiTyz4AzX<8}A(m|Y9dFlE7yJUfK`Yu`jX+(E*bY7Z;t+TQI~QVX3cb=C1X=~f9K?E3wZrL~ClpAh>6FsS4$d*OqezB`wLJpIrzOQjYK*4^#u?Czh8y1+62EyF2*?Y zB(AqW2(0=Vt`(J&xYzA69C(Yh#$Iqe>NygIefeY32!Az}qva=ZTWrnOjP-J0D?s48 z@kb^IJjeF1!}jwsBBeX&w9g3mok-DWR4f`RT1aOvHNY|8*N+ulmAfC$_}erdPMN+4 zg$_gA2*UkM(m@;);-!JRAH`X>fA^!Yt zwZmZOy$YmL1%DE%W>E0eCgcORZqdkViyUqHHkJ^K7I0JNM$5qPeH;hQVE8oaqYAU4 z0>N2j5=f#tupM${v@$^~=8rg&l_A!*U=nhO^<6BPb%=Gysb}3A&knI*kj_9Xr2dRR zti|h96`e)AbocvLAZ2fb%wdQ{Au+dNRbqD%`e^+}_&E9Hw{P`5d;^U>|2W z#L5AU;iP>c#JXJ4KtvZz;pjfFrdXXqEGhRo4zX^R5Sa+Ec1s$FOqex@bv_Uxhgdt) zNR&e?UjPw^^-HiFZ9*(0SAbaF0wKZszfr@K`mke*Ac^MkTWrm3gVlf;K%`;gj|`DU z@0>TcL`pR}?K1+gPN4FP#%B`+i1liuvzHp+c>=NCo-%zAVpXAT1Y$iwI*5ZIn>dCEJPMu`Mr=Hxt?bJy>BywXq(5!z(LNXXa&H6`$SyIS_v&U-=v|o^);xWF3;xD?wLy9r^CE zfwz(K`tDo~Ep$s`F6}>X zNH_H&?n&7wEgaAF29Nhs3gWrQti;$mnWWB_)n-DI7Y60`yRw-l9kO<_$?x}N{U^zf z_8*iVntL{@CFGCbEdES3N(=Jy2G1zJ^y)PIAvI(jPk($t#+#($)t{3z5N*t?r9TFN z5PACJGifBs(;vP7BI%EH&|{nF4z%tn4asx-#23fxKMuX}!l=s^SC^3I=z*$$ zNT?z~pfDqMal`8!4%Li;Ic64gjHSul+c9_XN>B07WSg{%>lO+5aw&5alNvt;p+u4z zmy-_Sk{VuVy!i!IlB7Xz3K__9dg}Ojq-yf1V|XB(Mn`d%X$jGif6ACeR6!QqkwRN4 zi}oh6$SX}}(Vi4CGP3AGSy&RsEqRzi87D6c^01yld@2tsi9Ga5(|LF_g^UOf6T4(5 ztS?sRl_pfsUMMD1mXWF*&Un3BfpnVj`a`IiX6pP?Gm0myKd3N1WgU*6iFL`cqbIDH zqhXFUxe9m=_=e}+lOxBtI_B^}E}iLcQkXOtmPz^?Ld<@xv*X39&6Bej>K z8jvJ7#NKE7X5$}&)LKeEeV;d+V{cHAX^-r@wfHJLc^mIUKx)09BUyY=R)*7K0Y1a6 zMc79)MJ2gKCYY9yRR|ru5P}NdqxB4dpM^C|0NVSIVW1H=t9vqxZmnMsBN-Ov#Fq1@hU8l>J-07xzus|GAto75x?w{G!U6EYxrdY z5F*Dfx2KUP$1lDBBKTzi^w=hTL2?EB;w=P%Ulu`$(*9i^!!NL&wW0~nic$=tJMi+# z(FVS)n<5vLs(f`@_aOzEHAM+w4mRF$!bHeU-JG_Qg!#vO=Fk3a-S5EQVGAU#CDa!h z(!CDp?4|Z|4r7&frA%4GDh;R`!7A?{9mHW3UV7GH6{IX1R(V?rs|2iq+MyV5pCDB` zj8*elX8bh@ZszX!VVF-iJV^vdFOoD6;~A!t?EEmP9^9y! z;q${1f)ZzNmq(KF`C(cAN#{>#|H1R8!_|s^{*?R?)XhoRC@q{n^#+f3MGE4X?eoL3 znJ1nf&L+R#m-U|{KiBI&D8JP6!?ICYke@erM){>zXXl53O3$?jhOFcHhcC!@lX!ku z(m=E^vzC7t1VZHbhtH&uD9=Cmo+OfgSO-0}nSVfXh5Uo(s|WNDB~U~ zJvVF{Ww^Pj3O8kVJ~zE0H*nT3adbE(Oo?Ctb9`Vkw{s6Pj3JEwiO=}i&poWXB&=Klh2EGXJsC_DPg=%xjRbnRlzEE@h#!N1 zA_<7gNe6KW2wu7ZlXUEwHsNX5;P;^U*g_2H;|;c_`I^<6G6fVJJ8?{^CZ9NdbKu1B z^czmUdivSv4^4jzK0l(J{_W|L(@#x*6#jke^uus5^z_H!`)8)#H~r!1_nm$izCL-{ z-K?E{41RxBgGNtjryoB3AbkJ+(~nF)1;0OZ`t{oM2Ts3^G&~8tydJ)EHR$76s16OL zpMj32pMjpC-Lt13g;o#2|BuLopW*ED!4xi~3VN7y5GQC}`r5OIV_enUvxzEDa^zMv zCEu4KzKlwKBJRxi^dEtOzi;}38b)!b->9n3Og{~Z`iQ5f&z?R3f4(2o^bsi4PCo=H z|H$dbpwUwr=es_VxSb)A>iW}RDnp6=|A4SI_+&!)GH6j4OK?}w^sfkx(Y`ll4er>w*AGqEmNcI=#fD6~y(#LnsSMm`z~ zHgp%&rkc7KvRNPNhIr*$FbVm&mG5Fn$8y29iaFJmU+_Jsc4~$9-(DX0ayiYjd}3ws zr9mSTk9}B%hTX^q0`;tu`{B8DVnvW&G^M*vDisDUV@kQBAP#YDW|p!m_&7_gHP}Zq zof|q6k6t>M!jx5L_pE&mXvvg{y3O#G@Ed-LX_%|x})U)=OlaQmEMbGObx(U3d`;b0n?1zWP>aZb_KTxk0;Dt|F zkLN4Crdu{tdzdHi&L>&-v;83Qg&;W5UMRz#^LfL$_8v|d+htE8Ya$YoH=;XksTFwy zMDWp7oOKzGyZAh}uEajh5`1(M&=QU>5)XR3P|`rOuOWPNonm#0kEC4cI6gWeAuY+hOpqaTAv*sv?as|0~kjOHFe+ zcp3;~I>Wo~?C}zK^;mV(f)gIHy(>w!3m{AATdqvR`FtQ{J|Z&uEvOqoM(-sZ#33VI zdMP+Xz6Bqh3@6G>sR+uCeTp$kVw6iT&66pUM4{2Z9EGMBn7^4+?J%bKiUR3W-~I)v zX3)1QiERTL$6j)mqfan-Mv&Sw?-@}LuWEH)lBz90q~Al*Gh~1?>pKd3p&~`TWD;qj zLNTnxtPnH7$&D!1VlIh`Nf~QhbXgqMx)e(~wv%)q5X>5Sy->QfWR{CNr|zgWYy)qQ z&Wg5fRNGcMBps|hyfvgS8-4;OaCc(opOxMUa#ULbEFPviPlLRn`>DCL^AsoI=r&Ye zy5LykrBam}DdGcnat3AuU_R%q9oR<{fUTEn6QMP@Q~{ z0clr5k8Of9Bv$}w-eMsjZ8MZ8fizvP09wvA48&xGx=G#=p#dzz3#6QCjm4J5YN3Je zme|y@v05%_6~t)$+Kz@(oggsIvpvL#vHM!-A+K2&iLXWL-8g^EdKYB_izd?2(W1kM`w#%)5__`|p_Ot!5&@RrZQ=N?~=88rf z-4{}3DuTUtK-~z~`z+}o4(##LOT@JrnH{IeO|A#a0(%r=qQoGZK)p|=Oi_S(C`?6M z@Bvb_!%*)R3Zzr0_fx2vK@YF?FPVp@L(nQ}lXXaAL9WZJ*p6N)82H90@!7X5O?-i7 zX$9i#(SqVlvwE7f3|geERSNr%N14Q%s9X&8F-ye^b#fyL`mPp&3r(9 zo`j?5FL0e%yf!ifs9K%dE#e%HaAsyifxZ;15$q$10z(DGJ|mjM&`E1`YYs* zW<5*U!~%=7Sg3binS7!tCw)zseH8d57(8q)#f2}Rz-gqjmm2$Y6xbgKCt3l268`}h zEc7kcDB{h&nKB&_>OBK>BT(<_q=Pu9$4iqT9H%KA>S2%Bpx)OAg^BBg?dqY#6tTb; zNYxHQz4LpOm2C}FRadsVZ&|a6IRkmhVHM>-;I|DEBJi-l|9%|xQ&n|Z%{bmq<oA5`5ZOdNk^PpXD zl6na=zJfMRF*+ox(Fb)?>M>PEeaWQi$q1G{H^)pf^G?Z)DC}jPpR2Dj?7bT%A&0#q zSkf`ryH^B=hwD=Z;n+{LZsd2t1)o{5?saNdH#ACn0QZ_C`XzTfbROH*L0)Q0gux4n zZ7aN?`?0xY&>|9z0@{lcNDAT5c`NiSLrPtQ2-lXEwFVN zTMgn2X<2ZdZw4B}W-t-bzERRZ4Ciq%QD&~nU+K_<)!DJc$Ux!%2Z9N2&G@Q&fbz1m$RqoQG?a_8P1+E^X7 zF(<3_qZ+SHJF>N6)vzm9L8t?HeZ9`EgAxqQfc6`JqALbOP(YFclrgeAT5JN9^)Uyw z1)P!&uc!5h$AhuZ4L=DstvIRY9(=;~>1=CS&{ZcV#;uI?b(E}TJx2x1!kt8r0TEj7 z-1kvLvA^mo_Ut3@pTXc^>n_?U0fGM*>FlLGD;%j2zfaw?$_GWFe zWEM(Vp;~ct*d)VWiUe3_p&Q<3_DZZ3eaTD^ar;+*3lZGDoOBR}+j;3Nf?Plf1>I>ZqM14^NML!@_JBb(y6qO9r=4yrt< zxJO}p$~qiB6YCNM$F@*a%QSwW@RlZw)z+C!G3g1wM-4^Juv4$R{0@E=~;jg!XN zM->kv+_Xn8+eYWH=wl#j(Zs}ib%qNl7JY;_oMR6+N+p%{aAQoP=);Zjirg;{X!<73 zx{T1&=ehMb_7R1qx3sHq1Zn4j$8ax*>6Fy90$?_=DmdWS@*s!)3}zP&dlEtIpGX>r zaS~Hr3Tpp|R1eOw$6u3@iG@pHF5*`~@;@b^CXxKVk~GLj{>2GqgbFnvsddu&q$bQQ zrZhOsFH5LSoaR4yY*)R#{Qt`OPrCh@_8++Yx{DZ6HZS^Da2`LGjnl&Y*WU2)ZdD6gwMY{Mqo>{qQqhuvs5BInQZg#`4^7-&3#H{Nj4MbI*wam&}K&tZ0%6Vxd$}=mz z03w-{--NN+%&Z`}LT1IY?*xE82qj9Hm7N$vXk)PDGoe?eAV0z0988V@&>Vs3ip54dwiCWnh((aj48y(W{ zZ|FMMv)z60;QoVyTLYW6knV&~Ung6$_uSV&>8 zDYb6JW6NczIS-h2JuvOA9S4W^4&OGoWs|nETrC{c?ri{XGy_Z(kqd$0k{d}@nWNQl3-De?wu5CBpJ7e3^9+TU@qpF*HUBJ&#`McF!3_&CV0e zZoaV@G^_q?!tQX&+Rtbq*t}nH&wZz!B$nsY$)QsxsqHy+5{!@d{r-LM6)`~Kw{f*S zJA^HS10rwrIQInn2xB`jKm=cey9bP4UBIt5r8lvfUhj;xEQuyCaG|Hupf>QEFVMg6 z8vZ%{XhopQ0s@T>=e>Dp)`Y@j=-Ux2QZ>=Dy1RuauD@T~Q?9};)iJ#cm&L;qfh4Ni zM54V(3=SdkV^6yT;z8MJ7x67!;Nn-DgCwW%#gtj4uIbN_4&v4{FTK9i3377Xmb(B! zBORiaq>KAADU89;D}%U4q_7=hDEfW?f&uWXFc1H2*dnb?kn_Jn!V>%?Z0*3N=cqxq zM~$LP3t}<>R3TzYIkSmw{5*vPsk-swMBU(}x6T9$IO*<;bO$s2{4P;TORvJdXKzvcn0n_;I$w$=437 zqW#_}dSRIiXg)f*_K3Do^ENNwf$MS*bvq@}p1pnwz>FWz%Yu9!zBA|i_F1N`Rp0KO zt!&h+9jFf({JLh{te|XkouIO1S|`a1l^!f*sR973C-XNh;lk+g+)}YUP>y6mQyxki7Z!o(sd`#SQ`eR80 z5pOarrdxx5NUC>iYw(nWnnd!Sl{Cmm{u$UB{AUT(iPQWCkL{{kgWr_(pR_ed`_H;H z_*2<9Eo=>X!^b;vsS>7Fr(1*4#ozI*!3(aCti+_P!Sf{zL{*-(t-&{eROMTPYtl%R zZw>kah-?ks4`a2tHHhRQA+kS6 zS%mw8Z%A*#_6Hd^S#Hfw1zThz&^ys9+aUZ?DhJjw{-kt>Lfjx^!=@w)$uk^B6=p+s zj7p?x@&@7Ut!@y8qe9v4khme3x<~lgl!>J-<-aB!#4TlBI;6fw7?~rFN!@mO0f{3u z;+l^KbDp|r)~OWsU;vgu?yu~`P9f))QS{CVhE9mY><4DqE&Ndm8&b98dx=`YOK)pq zw=lp4Uu9;jOVA&rGn@W=Cxvkl{Yg|wwrgl8^h$R_5Ei5uIIH2E5`HPE+TmTp=UUp4GgCg?S^Y zN`_!gvtFp6hja;{9-d80=;aEe)1<&%$d{C)fWL&iQ^TpRk1Q#SPg#fKXJTEl`J;QW zEG5IDzT`%9FP5d{I6IX0VqXuFknhF55lfQyVlNM3gIsA7`@-!xXp9+k15O9qYH{LT17S;=$IqRCs7`T)7~Hb#A6yXU>KZX9yzjRIUbXcP~_WmB)rd*LJ; zfb6a_+Jxhe)_br&FB)GRZtS1lbE9QI%ahPH2|~C_@ap@f^#Q0y^1zL{*>rOy$Eghs z4&p8Oj#;(`>}sQ4FyKjvabuujID>UKm|k)w%J_0q>ratB&3ZR>u^cXqsFshx0jhlq zVcu}SQ1eM7`+8VSy82|OD<6lri_PM;W+d6{F45tJ ze;}=N3D(%!beF*tJr10^5I6<1`Gh|kpG@nc@GZ_LQRxwk5s_~cv;er!?Jj3C6y)m7 zD+i@rWqs5rM~aYp;VFMDcFL01&RSpf=JMrGBVQdo8m#{Y71#pd>{eF-zGk4UX8iy< zOH{d~AZ1iD>m=6n73lw^G=!=I72 z*ZMrx!!!+)%!{JxmHtvU8UTS5%UNO>gACLoTO83*e~`V1_6 zcSF2X*|d|Ya7I|Sc{A7zKa@;?+dH9~Wv4onK!9K=P&i_7*cf^L`-7o9gXjcol&EG|jMy%Hzy-Qwu?;*%jPPTSXp(6_?7!@-%9 zuJBwDizocfa&C8_Y}Q7rdL7OzUurO#a_)-j1~k9OT|ZGRHp<2TXgBOC_yq=2L$t0q z)M8<%F83nuT20?E7xSZ2dEzl2Xj;c{rYmgs0%aLpF9?=I>NSYCLn4*odD8zv8ZAB8`A=%0;x8U9-7R15i0y>JvuAzu83 z5UcoK?_21uga-_qN@F5_9D<|?h%nq$VA{=EzEGXOODt^Y>|*a5`qY7)$H%tvg|cqj zKrDd^-fS7ca_(#PXlXxNw6T)*jb;uoN_g^ZyrGX9!11EdbQjedP4~PyJoZs9=8HxRGy{e)38$CBvmj$IP2h-G z%-7KT9)|;u?kbE9^Zr-vA~ee@i;am|o~s-%mV9A?w$&?eH3@WcF8PMsE{o##zpB|r zqgc%!he&zYT@9-Qt{=~fEs2&Cocu8p?xiKld2SxlB;bNzB9zKyY$qlche@jwq{WFwX)Ph5bOq@eyd&ta^{wU5*$?sKi;!8hzJwn?>Vc1+ zS8u(a`A6Kn~kIndT<9YD013$icK74!~KYqCm zK7NHC>n?zg4fyfx3*qDY__1IEe01T*x{Kjs1AhGS68QKPe&E~8EqvR#g|E!B@RfSj zZVf*0)e9EhNNM4Xl@{KhVBrl579NMM2dK=(O#wESTOy=V)=r;#i43fVIN4Mf%j;HRAVPZKnBXaVAEq zWp2L6k~}~3C2Qk$i@ihmMkyeT)&@oa*Iswf@vjT_MN1&x0^W-L(FK-YuY-}Nnt&bV ztZxBt7=R5cglo*owdo8xjCX7_a+fH-rah#w&&#Q4?8PbdxRx$tTDk;}mY{bbYPrPM zR=mfZDJftH@u;nLIXqi>r?8b&HGi7 dc^mFITn9)Brl*K$Mc5&#R+_`OfE%L&{~z|Clp_ED literal 0 HcmV?d00001 diff --git a/Wiki/RUS_Guide/doctrees/Robot/06_mouse.doctree b/Wiki/RUS_Guide/doctrees/Robot/06_mouse.doctree new file mode 100644 index 0000000000000000000000000000000000000000..6b2a2f34cfea76490c0adb41c3cb49e521656305 GIT binary patch literal 140416 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 G1OFfCnS_!6 literal 0 HcmV?d00001 diff --git a/Wiki/RUS_Guide/doctrees/Robot/07_image.doctree b/Wiki/RUS_Guide/doctrees/Robot/07_image.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0d35bf3f5829f5875ed099e6146718945129339e GIT binary patch literal 140416 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

P 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 OdIEO z8zgl`!IS@j5QHkIH;=OZCEmQ0qBCjJO%tn!$FT3c{ob4J`-UnnQ_{1*YdpIpU5}I5 zdb{S>M$=MT?YeF;`W)Hk=18!knR?4+5C;U91g*AX)^t`Pfu_;or?akYy}5DHAt769 zw6sS$gBT0m#*#bzA=Z)%KV+qm%3g$&csWLdj zBg5l7kA*68APb9-f*c2vM)=M;EK!8bMVUz9u&OHT0DF|+tt;abK&J2Te0)0l9bb!# zXK5m^)RoDx4b8EkZEkqb5agicaZqn)i0jL4rjjtW%?`n8^f+ff5tL@0P}WF AivR!s diff --git a/Wiki/RUS_Guide/doctrees/environment.pickle b/Wiki/RUS_Guide/doctrees/environment.pickle index f0665a5a71910758dacd4aeb804407d2346503a3..87e752389fe9a3dde8d3a9ab76fbca84698add74 100644 GIT binary patch delta 63460 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 Ef18>R?EnA( diff --git a/Wiki/RUS_Guide/doctrees/index.doctree b/Wiki/RUS_Guide/doctrees/index.doctree index 7568dbb1a7d83993c263b8e762d502ada244cbae..8f396b29bec3e8afb122f926d42fb39c03b64ace 100644 GIT binary patch literal 48383 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 delta 8363 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

  • 2. Функции
  • -
  • 3. Как использовать?
  • -
  • 4. Зависимости
  • +
  • 2. UIDesktop
  • +
  • 3. UIWeb
  • +
  • 4. Keyboard
  • +
  • 5. Clipboard
  • +
  • 6. Mouse
  • +
  • 7. Image
  • +
  • 8. Как использовать?
  • +
  • 9. Зависимости
  • МОДУЛЬ СТУДИЯ

    @@ -101,8 +102,14 @@

    МОДУЛЬ СТУДИЯ

      @@ -204,30 +211,47 @@ If you has many IT specialists, very long deadlines for the IT tasks, many bugs

      If you need some IT help - feel free to contact me (prefer e-mail or skype). If you will find some issue in pyOpenRPA - write about it to me via e-mail/skype/gitlab issue.

      Thank you!

      -
      -

      Ivan Maslov (CEO & FOUNDER)

      -

      Our contacts:

      +
      +

      Центр поддержки клиентов

      +

      У вас остались вопросы? Мы вам поможем!

      -
      -

      3-rd party components license dependencies

      +
      +

      Иван Маслов (Основатель & генеральный директор)

      +
      +
      +

      Используемые сторонние компоненты (лицензионная чистота)

      +

      .. v1.2.12 replace:: v1.2.12 - .. |author| replace:: Ivan Maslov <ivan.maslov@unicodelabs.ru>

      + .. |author| replace:: Ivan Maslov <ivan.maslov@unicodelabs.ru>

      diff --git a/Wiki/RUS_Guide/html/Agent/02_Defs.html b/Wiki/RUS_Guide/html/Agent/02_Defs.html index 673e3296..bb8a43a5 100644 --- a/Wiki/RUS_Guide/html/Agent/02_Defs.html +++ b/Wiki/RUS_Guide/html/Agent/02_Defs.html @@ -97,8 +97,14 @@

      МОДУЛЬ СТУДИЯ

      diff --git a/Wiki/RUS_Guide/html/Robot/02_uidesktop.html b/Wiki/RUS_Guide/html/Robot/02_uidesktop.html new file mode 100644 index 00000000..85f7697e --- /dev/null +++ b/Wiki/RUS_Guide/html/Robot/02_uidesktop.html @@ -0,0 +1,710 @@ + + + + + + + + + + 2. UIDesktop — документация pyOpenRPA v1.2.12 v1.2.12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + + + + + +
      + +
      + + + + + + + + + + + + + + + + + + + +
      + + + + +
      +
      +
      +
      + +
      +

      2. UIDesktop

      +

      Here you can find the functions description for interaction with desktop GUI applications

      +

      How to use both x32 and x64 python processes (it can be helpfully, if another app GUI is on another bitness than your app)

      +
      from pyOpenRPA.Robot import UIDesktop
      +#Section for robot init
      +lPyOpenRPA_SettingsDict = {
      +        "Python32FullPath": "..\\Resources\\WPy32-3720\\python-3.7.2\\python.exe", #Set from user: "..\\Resources\\WPy32-3720\\python-3.7.2\\OpenRPARobotGUIx32.exe"
      +        "Python64FullPath": "..\\Resources\\WPy64-3720\\python-3.7.2.amd64\\python.exe", #Set from user
      +        "Python32ProcessName": "pyOpenRPA_UIDesktopX32.exe", #Config set once
      +        "Python64ProcessName": "pyOpenRPA_UIDesktopX64.exe" #Config set once
      +}
      +# Init the pyOpenRPA configuration
      +UIDesktop.Utils.ProcessBitness.SettingsInit(lPyOpenRPA_SettingsDict)
      +# Now you can use pyOpenRPA with both bitness.
      +
      +
      +

      Functions:

      + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Get_OSBitnessInt()

      Detect OS bitness.

      PWASpecification_Get_PWAApplication(…)

      #Backend selection - attribute «backend» («win32» || «uia») in 1-st list element

      PWASpecification_Get_UIO(…)

      #Backend def selection - attribute «backend» («win32» || «uia») in 1-st list element #old name - GetControl

      UIOSelectorSecs_WaitAppear_Bool(…)

      Wait for UI object will appear in GUI for inWaitSecs seconds.

      UIOSelectorSecs_WaitDisappear_Bool(…)

      Wait for UI object will disappear in GUI for inWaitSecs seconds.

      UIOSelectorUIOActivity_Run_Dict(…[, …])

      Run the activity in UIO (UI Object)

      UIOSelector_Exist_Bool(inUIOSelector)

      Check if object is exist by the UIO selector.

      UIOSelector_FocusHighlight(inUIOSelector)

      Set focus and highlight (draw outline) the element (in app) by the UIO selector.

      UIOSelector_GetChildList_UIOList([…])

      Get list of child UIO’s by the parent UIOSelector

      UIOSelector_Get_BitnessInt(inSpecificationList)

      Detect process bitness by the UI Object UIO Selector.

      UIOSelector_Get_BitnessStr(inSpecificationList)

      Detect process bitness by the UI Object UIO Selector.

      UIOSelector_Get_UIO(inSpecificationList[, …])

      Get the pywinauto object by the UIO selector.

      UIOSelector_Get_UIOActivityList(inUIOSelector)

      Get the list of the UI object activities

      UIOSelector_Get_UIOInfo(inUIOSelector)

      Get the UIO dict of the attributes

      UIOSelector_Get_UIOList(inSpecificationList)

      Get the UIO list by the selector

      UIOSelector_Highlight(inUIOSelector)

      Highlight (draw outline) the element (in app) by the UIO selector.

      UIOSelector_SafeOtherGet_Process(inUIOSelector)

      Safe get other process or None if destination app is the other/same bitness

      UIOSelector_SearchChildByMouse_UIO(…)

      UIOSelector (see description on the top of the document) #old name - AutomationSearchMouseElement

      UIOSelector_SearchChildByMouse_UIOTree(…)

      !!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!!

      UIOSelector_TryRestore_Dict(inSpecificationList)

      Try to restore (maximize) window, if it’s minimized.

      UIOSelectorsSecs_WaitAppear_List(…[, …])

      Wait for many UI object will appear in GUI for inWaitSecs seconds.

      UIOSelectorsSecs_WaitDisappear_List(…[, …])

      Wait for many UI object will disappear in GUI for inWaitSecs seconds.

      +
      +
      +pyOpenRPA.Robot.UIDesktop.Get_OSBitnessInt()[исходный код]
      +

      Detect OS bitness.

      +
      +
      Результат
      +

      int 32 or int 64

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.PWASpecification_Get_PWAApplication(inControlSpecificationArray)[исходный код]
      +

      #Backend selection - attribute «backend» («win32» || «uia») in 1-st list element

      +
      +
      Параметры
      +

      inControlSpecificationArray – List of dict, dict in pywinauto.find_windows notation

      +
      +
      Результат
      +

      process application object

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.PWASpecification_Get_UIO(inControlSpecificationArray)[исходный код]
      +

      #Backend def selection - attribute «backend» («win32» || «uia») in 1-st list element +#old name - GetControl

      +
      +
      Параметры
      +

      inControlSpecificationArray – List of dict, dict in pywinauto.find_windows notation

      +
      +
      Результат
      +

      list of UIO object

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelectorSecs_WaitAppear_Bool(inSpecificationList, inWaitSecs)[исходный код]
      +

      Wait for UI object will appear in GUI for inWaitSecs seconds.

      +
      +
      Параметры
      +
        +
      • inSpecificationList – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}]

      • +
      • inWaitSecs – Float value (seconds) for wait UI element appear in GUI

      • +
      +
      +
      Результат
      +

      True - UI object will appear. False - else case

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelectorSecs_WaitDisappear_Bool(inSpecificationList, inWaitSecs)[исходный код]
      +

      Wait for UI object will disappear in GUI for inWaitSecs seconds.

      +
      +
      Параметры
      +
        +
      • inSpecificationList – UIOSelector. +Example: [{«title»:»notepad»},{«title»:»OK»}]

      • +
      • inWaitSecs – Float value (seconds) for wait UI element disappear in GUI

      • +
      +
      +
      Результат
      +

      True - UI object will disappear. False - else case

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelectorUIOActivity_Run_Dict(inUIOSelector, inActionName, inArgumentList=None, inkwArgumentObject=None)[исходный код]
      +

      Run the activity in UIO (UI Object)

      +
      +
      Параметры
      +
        +
      • inUIOSelector – UIOSelector - List of items, which contains condition attributes

      • +
      • inActionName – UIOActivity (name) activity name string from Pywinauto

      • +
      • inArgumentList

      • +
      • inkwArgumentObject

      • +
      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Exist_Bool(inUIOSelector)[исходный код]
      +

      Check if object is exist by the UIO selector.

      +
      +
      Параметры
      +

      inUIOSelector

      +
      +
      Результат
      +

      True - Object is exist. False - else case

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_FocusHighlight(inUIOSelector)[исходный код]
      +

      Set focus and highlight (draw outline) the element (in app) by the UIO selector.

      +
      +
      Параметры
      +

      inUIOSelector – UIOSelector - List of items, which contains condition attributes

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_GetChildList_UIOList(inUIOSelector=None, inBackend='win32')[исходный код]
      +

      Get list of child UIO’s by the parent UIOSelector

      +
      +
      Параметры
      +
        +
      • inUIOSelector – UIOSelector - List of items, which contains condition attributes

      • +
      • inBackend – «win32» or «uia»

      • +
      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_BitnessInt(inSpecificationList)[исходный код]
      +

      Detect process bitness by the UI Object UIO Selector.

      +
      +
      Параметры
      +

      inSpecificationList – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}]

      +
      +
      Результат
      +

      int 32 or int 64

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_BitnessStr(inSpecificationList)[исходный код]
      +

      Detect process bitness by the UI Object UIO Selector.

      +
      +
      Параметры
      +

      inSpecificationList – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}]

      +
      +
      Результат
      +

      str «32» or str «64»

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIO(inSpecificationList, inElement=None, inFlagRaiseException=True)[исходный код]
      +

      Get the pywinauto object by the UIO selector.

      +
      +
      Параметры
      +
        +
      • inSpecificationList

      • +
      • inElement

      • +
      • inFlagRaiseException

      • +
      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOActivityList(inUIOSelector)[исходный код]
      +

      Get the list of the UI object activities

      +
      +
      Параметры
      +

      inUIOSelector – UIOSelector - List of items, which contains condition attributes

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOInfo(inUIOSelector)[исходный код]
      +

      Get the UIO dict of the attributes

      +
      +
      Параметры
      +

      inUIOSelector – UIOSelector - List of items, which contains condition attributes

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOList(inSpecificationList, inElement=None, inFlagRaiseException=True)[исходный код]
      +

      Get the UIO list by the selector

      +
      +
      Параметры
      +
        +
      • inSpecificationList – UIO Selector

      • +
      • inElement – Входной элемент - показатель, что не требуется выполнять коннект к процессу

      • +
      • inFlagRaiseException – Флаг True - выкинуть ошибку в случае обнаружении пустого списка

      • +
      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Highlight(inUIOSelector)[исходный код]
      +

      Highlight (draw outline) the element (in app) by the UIO selector.

      +
      +
      Параметры
      +

      inUIOSelector – UIOSelector - List of items, which contains condition attributes

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_SafeOtherGet_Process(inUIOSelector)[исходный код]
      +

      Safe get other process or None if destination app is the other/same bitness

      +
      +
      Параметры
      +

      inUIOSelector – UIO Selector of the UI object

      +
      +
      Результат
      +

      None or process (of the other bitness)

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_SearchChildByMouse_UIO(inElementSpecification)[исходный код]
      +

      UIOSelector (see description on the top of the document) +#old name - AutomationSearchMouseElement

      +
      +
      Параметры
      +

      inElementSpecification – UIOSelector of the UI Object

      +
      +
      Результат
      +

      pywinauto element wrapper instance or None

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_SearchChildByMouse_UIOTree(inUIOSelector)[исходный код]
      +

      !!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!!

      +
      +
      Параметры
      +

      inUIOSelector – UIOSelector of the UI Object

      +
      +
      Результат
      +

      ?

      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_TryRestore_Dict(inSpecificationList)[исходный код]
      +

      Try to restore (maximize) window, if it’s minimized. (!IMPORTANT! When use UIA framework minimized windows doesn’t appear by the UIOSelector. You need to try restore windows and after that try to get UIO)

      +
      +
      Параметры
      +

      inSpecificationList – UIOSelector - List of items, which contains condition attributes

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelectorsSecs_WaitAppear_List(inSpecificationListList, inWaitSecs, inFlagWaitAllInMoment=False)[исходный код]
      +

      Wait for many UI object will appear in GUI for inWaitSecs seconds.

      +
      +
      Параметры
      +
        +
      • inSpecificationListList

        UIOSelector list. +Example: [

        +
        +

        [{«title»:»notepad»},{«title»:»OK»}], +[{«title»:»notepad»},{«title»:»Cancel»}]

        +
        +

        ]

        +

      • +
      • inWaitSecs – Float value (seconds) for wait UI element appear in GUI

      • +
      • inFlagWaitAllInMoment – True - Wait all UI objects from the UIOSelector list to be appeared

      • +
      +
      +
      Результат
      +

      List of index, which UI object UIO will be appeared. Example: [1] # Appear only UI object with UIO selector: [{«title»:»notepad»},{«title»:»Cancel»}]

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelectorsSecs_WaitDisappear_List(inSpecificationListList, inWaitSecs, inFlagWaitAllInMoment=False)[исходный код]
      +

      Wait for many UI object will disappear in GUI for inWaitSecs seconds.

      +
      +
      Параметры
      +
        +
      • inSpecificationListList

        UIOSelector list. +Example: [

        +
        +

        [{«title»:»notepad»},{«title»:»OK»}], +[{«title»:»notepad»},{«title»:»Cancel»}]

        +
        +

        ]

        +

      • +
      • inWaitSecs – Float value (seconds) for wait UI element disappear in GUI

      • +
      • inFlagWaitAllInMoment – True - Wait all UI objects from the UIOSelector list to be disappeared.

      • +
      +
      +
      Результат
      +

      List of index, which UI object UIO will be disappeared. Example: [1] # Disappear only UI object with UIO selector: [{«title»:»notepad»},{«title»:»Cancel»}]

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +

      References

      +

      reStructuredText 1

      +
      +
      1
      +

      http://docutils.sourceforge.net/rst.html

      +
      +
      +

      .. v1.2.12 replace:: v1.2.12 + .. |author| replace:: Ivan Maslov <ivan.maslov@unicodelabs.ru>

      +

      +
      +
      + + +
      + +
      + +
      +
      + +
      + +
      + + + + + + + + + + + \ No newline at end of file diff --git a/Wiki/RUS_Guide/html/Robot/03_uiweb.html b/Wiki/RUS_Guide/html/Robot/03_uiweb.html new file mode 100644 index 00000000..6ffd3adc --- /dev/null +++ b/Wiki/RUS_Guide/html/Robot/03_uiweb.html @@ -0,0 +1,710 @@ + + + + + + + + + + 3. UIWeb — документация pyOpenRPA v1.2.12 v1.2.12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + + + + + +
      + +
      + + + + + + + + + + + + + + + + + + + +
      + + + + +
      +
      +
      +
      + +
      +

      3. UIWeb

      +

      Here you can find the functions description for interaction with desktop GUI applications

      +

      How to use both x32 and x64 python processes (it can be helpfully, if another app GUI is on another bitness than your app)

      +
      from pyOpenRPA.Robot import UIDesktop
      +#Section for robot init
      +lPyOpenRPA_SettingsDict = {
      +        "Python32FullPath": "..\\Resources\\WPy32-3720\\python-3.7.2\\python.exe", #Set from user: "..\\Resources\\WPy32-3720\\python-3.7.2\\OpenRPARobotGUIx32.exe"
      +        "Python64FullPath": "..\\Resources\\WPy64-3720\\python-3.7.2.amd64\\python.exe", #Set from user
      +        "Python32ProcessName": "pyOpenRPA_UIDesktopX32.exe", #Config set once
      +        "Python64ProcessName": "pyOpenRPA_UIDesktopX64.exe" #Config set once
      +}
      +# Init the pyOpenRPA configuration
      +UIDesktop.Utils.ProcessBitness.SettingsInit(lPyOpenRPA_SettingsDict)
      +# Now you can use pyOpenRPA with both bitness.
      +
      +
      +

      Functions:

      + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Get_OSBitnessInt()

      Detect OS bitness.

      PWASpecification_Get_PWAApplication(…)

      #Backend selection - attribute «backend» («win32» || «uia») in 1-st list element

      PWASpecification_Get_UIO(…)

      #Backend def selection - attribute «backend» («win32» || «uia») in 1-st list element #old name - GetControl

      UIOSelectorSecs_WaitAppear_Bool(…)

      Wait for UI object will appear in GUI for inWaitSecs seconds.

      UIOSelectorSecs_WaitDisappear_Bool(…)

      Wait for UI object will disappear in GUI for inWaitSecs seconds.

      UIOSelectorUIOActivity_Run_Dict(…[, …])

      Run the activity in UIO (UI Object)

      UIOSelector_Exist_Bool(inUIOSelector)

      Check if object is exist by the UIO selector.

      UIOSelector_FocusHighlight(inUIOSelector)

      Set focus and highlight (draw outline) the element (in app) by the UIO selector.

      UIOSelector_GetChildList_UIOList([…])

      Get list of child UIO’s by the parent UIOSelector

      UIOSelector_Get_BitnessInt(inSpecificationList)

      Detect process bitness by the UI Object UIO Selector.

      UIOSelector_Get_BitnessStr(inSpecificationList)

      Detect process bitness by the UI Object UIO Selector.

      UIOSelector_Get_UIO(inSpecificationList[, …])

      Get the pywinauto object by the UIO selector.

      UIOSelector_Get_UIOActivityList(inUIOSelector)

      Get the list of the UI object activities

      UIOSelector_Get_UIOInfo(inUIOSelector)

      Get the UIO dict of the attributes

      UIOSelector_Get_UIOList(inSpecificationList)

      Get the UIO list by the selector

      UIOSelector_Highlight(inUIOSelector)

      Highlight (draw outline) the element (in app) by the UIO selector.

      UIOSelector_SafeOtherGet_Process(inUIOSelector)

      Safe get other process or None if destination app is the other/same bitness

      UIOSelector_SearchChildByMouse_UIO(…)

      UIOSelector (see description on the top of the document) #old name - AutomationSearchMouseElement

      UIOSelector_SearchChildByMouse_UIOTree(…)

      !!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!!

      UIOSelector_TryRestore_Dict(inSpecificationList)

      Try to restore (maximize) window, if it’s minimized.

      UIOSelectorsSecs_WaitAppear_List(…[, …])

      Wait for many UI object will appear in GUI for inWaitSecs seconds.

      UIOSelectorsSecs_WaitDisappear_List(…[, …])

      Wait for many UI object will disappear in GUI for inWaitSecs seconds.

      +
      +
      +pyOpenRPA.Robot.UIDesktop.Get_OSBitnessInt()[исходный код]
      +

      Detect OS bitness.

      +
      +
      Результат
      +

      int 32 or int 64

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.PWASpecification_Get_PWAApplication(inControlSpecificationArray)[исходный код]
      +

      #Backend selection - attribute «backend» («win32» || «uia») in 1-st list element

      +
      +
      Параметры
      +

      inControlSpecificationArray – List of dict, dict in pywinauto.find_windows notation

      +
      +
      Результат
      +

      process application object

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.PWASpecification_Get_UIO(inControlSpecificationArray)[исходный код]
      +

      #Backend def selection - attribute «backend» («win32» || «uia») in 1-st list element +#old name - GetControl

      +
      +
      Параметры
      +

      inControlSpecificationArray – List of dict, dict in pywinauto.find_windows notation

      +
      +
      Результат
      +

      list of UIO object

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelectorSecs_WaitAppear_Bool(inSpecificationList, inWaitSecs)[исходный код]
      +

      Wait for UI object will appear in GUI for inWaitSecs seconds.

      +
      +
      Параметры
      +
        +
      • inSpecificationList – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}]

      • +
      • inWaitSecs – Float value (seconds) for wait UI element appear in GUI

      • +
      +
      +
      Результат
      +

      True - UI object will appear. False - else case

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelectorSecs_WaitDisappear_Bool(inSpecificationList, inWaitSecs)[исходный код]
      +

      Wait for UI object will disappear in GUI for inWaitSecs seconds.

      +
      +
      Параметры
      +
        +
      • inSpecificationList – UIOSelector. +Example: [{«title»:»notepad»},{«title»:»OK»}]

      • +
      • inWaitSecs – Float value (seconds) for wait UI element disappear in GUI

      • +
      +
      +
      Результат
      +

      True - UI object will disappear. False - else case

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelectorUIOActivity_Run_Dict(inUIOSelector, inActionName, inArgumentList=None, inkwArgumentObject=None)[исходный код]
      +

      Run the activity in UIO (UI Object)

      +
      +
      Параметры
      +
        +
      • inUIOSelector – UIOSelector - List of items, which contains condition attributes

      • +
      • inActionName – UIOActivity (name) activity name string from Pywinauto

      • +
      • inArgumentList

      • +
      • inkwArgumentObject

      • +
      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Exist_Bool(inUIOSelector)[исходный код]
      +

      Check if object is exist by the UIO selector.

      +
      +
      Параметры
      +

      inUIOSelector

      +
      +
      Результат
      +

      True - Object is exist. False - else case

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_FocusHighlight(inUIOSelector)[исходный код]
      +

      Set focus and highlight (draw outline) the element (in app) by the UIO selector.

      +
      +
      Параметры
      +

      inUIOSelector – UIOSelector - List of items, which contains condition attributes

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_GetChildList_UIOList(inUIOSelector=None, inBackend='win32')[исходный код]
      +

      Get list of child UIO’s by the parent UIOSelector

      +
      +
      Параметры
      +
        +
      • inUIOSelector – UIOSelector - List of items, which contains condition attributes

      • +
      • inBackend – «win32» or «uia»

      • +
      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_BitnessInt(inSpecificationList)[исходный код]
      +

      Detect process bitness by the UI Object UIO Selector.

      +
      +
      Параметры
      +

      inSpecificationList – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}]

      +
      +
      Результат
      +

      int 32 or int 64

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_BitnessStr(inSpecificationList)[исходный код]
      +

      Detect process bitness by the UI Object UIO Selector.

      +
      +
      Параметры
      +

      inSpecificationList – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}]

      +
      +
      Результат
      +

      str «32» or str «64»

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIO(inSpecificationList, inElement=None, inFlagRaiseException=True)[исходный код]
      +

      Get the pywinauto object by the UIO selector.

      +
      +
      Параметры
      +
        +
      • inSpecificationList

      • +
      • inElement

      • +
      • inFlagRaiseException

      • +
      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOActivityList(inUIOSelector)[исходный код]
      +

      Get the list of the UI object activities

      +
      +
      Параметры
      +

      inUIOSelector – UIOSelector - List of items, which contains condition attributes

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOInfo(inUIOSelector)[исходный код]
      +

      Get the UIO dict of the attributes

      +
      +
      Параметры
      +

      inUIOSelector – UIOSelector - List of items, which contains condition attributes

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOList(inSpecificationList, inElement=None, inFlagRaiseException=True)[исходный код]
      +

      Get the UIO list by the selector

      +
      +
      Параметры
      +
        +
      • inSpecificationList – UIO Selector

      • +
      • inElement – Входной элемент - показатель, что не требуется выполнять коннект к процессу

      • +
      • inFlagRaiseException – Флаг True - выкинуть ошибку в случае обнаружении пустого списка

      • +
      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Highlight(inUIOSelector)[исходный код]
      +

      Highlight (draw outline) the element (in app) by the UIO selector.

      +
      +
      Параметры
      +

      inUIOSelector – UIOSelector - List of items, which contains condition attributes

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_SafeOtherGet_Process(inUIOSelector)[исходный код]
      +

      Safe get other process or None if destination app is the other/same bitness

      +
      +
      Параметры
      +

      inUIOSelector – UIO Selector of the UI object

      +
      +
      Результат
      +

      None or process (of the other bitness)

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_SearchChildByMouse_UIO(inElementSpecification)[исходный код]
      +

      UIOSelector (see description on the top of the document) +#old name - AutomationSearchMouseElement

      +
      +
      Параметры
      +

      inElementSpecification – UIOSelector of the UI Object

      +
      +
      Результат
      +

      pywinauto element wrapper instance or None

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_SearchChildByMouse_UIOTree(inUIOSelector)[исходный код]
      +

      !!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!!

      +
      +
      Параметры
      +

      inUIOSelector – UIOSelector of the UI Object

      +
      +
      Результат
      +

      ?

      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_TryRestore_Dict(inSpecificationList)[исходный код]
      +

      Try to restore (maximize) window, if it’s minimized. (!IMPORTANT! When use UIA framework minimized windows doesn’t appear by the UIOSelector. You need to try restore windows and after that try to get UIO)

      +
      +
      Параметры
      +

      inSpecificationList – UIOSelector - List of items, which contains condition attributes

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelectorsSecs_WaitAppear_List(inSpecificationListList, inWaitSecs, inFlagWaitAllInMoment=False)[исходный код]
      +

      Wait for many UI object will appear in GUI for inWaitSecs seconds.

      +
      +
      Параметры
      +
        +
      • inSpecificationListList

        UIOSelector list. +Example: [

        +
        +

        [{«title»:»notepad»},{«title»:»OK»}], +[{«title»:»notepad»},{«title»:»Cancel»}]

        +
        +

        ]

        +

      • +
      • inWaitSecs – Float value (seconds) for wait UI element appear in GUI

      • +
      • inFlagWaitAllInMoment – True - Wait all UI objects from the UIOSelector list to be appeared

      • +
      +
      +
      Результат
      +

      List of index, which UI object UIO will be appeared. Example: [1] # Appear only UI object with UIO selector: [{«title»:»notepad»},{«title»:»Cancel»}]

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelectorsSecs_WaitDisappear_List(inSpecificationListList, inWaitSecs, inFlagWaitAllInMoment=False)[исходный код]
      +

      Wait for many UI object will disappear in GUI for inWaitSecs seconds.

      +
      +
      Параметры
      +
        +
      • inSpecificationListList

        UIOSelector list. +Example: [

        +
        +

        [{«title»:»notepad»},{«title»:»OK»}], +[{«title»:»notepad»},{«title»:»Cancel»}]

        +
        +

        ]

        +

      • +
      • inWaitSecs – Float value (seconds) for wait UI element disappear in GUI

      • +
      • inFlagWaitAllInMoment – True - Wait all UI objects from the UIOSelector list to be disappeared.

      • +
      +
      +
      Результат
      +

      List of index, which UI object UIO will be disappeared. Example: [1] # Disappear only UI object with UIO selector: [{«title»:»notepad»},{«title»:»Cancel»}]

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +

      References

      +

      reStructuredText 1

      +
      +
      1
      +

      http://docutils.sourceforge.net/rst.html

      +
      +
      +

      .. v1.2.12 replace:: v1.2.12 + .. |author| replace:: Ivan Maslov <ivan.maslov@unicodelabs.ru>

      +

      +
      +
      + + +
      + +
      + +
      +
      + +
      + +
      + + + + + + + + + + + \ No newline at end of file diff --git a/Wiki/RUS_Guide/html/Robot/04_keyboard.html b/Wiki/RUS_Guide/html/Robot/04_keyboard.html new file mode 100644 index 00000000..bf49c2fe --- /dev/null +++ b/Wiki/RUS_Guide/html/Robot/04_keyboard.html @@ -0,0 +1,710 @@ + + + + + + + + + + 4. Keyboard — документация pyOpenRPA v1.2.12 v1.2.12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + + + + + +
      + +
      + + + + + + + + + + + + + + + + + + + +
      + + + + +
      +
      +
      +
      + +
      +

      4. Keyboard

      +

      Here you can find the functions description for interaction with desktop GUI applications

      +

      How to use both x32 and x64 python processes (it can be helpfully, if another app GUI is on another bitness than your app)

      +
      from pyOpenRPA.Robot import UIDesktop
      +#Section for robot init
      +lPyOpenRPA_SettingsDict = {
      +        "Python32FullPath": "..\\Resources\\WPy32-3720\\python-3.7.2\\python.exe", #Set from user: "..\\Resources\\WPy32-3720\\python-3.7.2\\OpenRPARobotGUIx32.exe"
      +        "Python64FullPath": "..\\Resources\\WPy64-3720\\python-3.7.2.amd64\\python.exe", #Set from user
      +        "Python32ProcessName": "pyOpenRPA_UIDesktopX32.exe", #Config set once
      +        "Python64ProcessName": "pyOpenRPA_UIDesktopX64.exe" #Config set once
      +}
      +# Init the pyOpenRPA configuration
      +UIDesktop.Utils.ProcessBitness.SettingsInit(lPyOpenRPA_SettingsDict)
      +# Now you can use pyOpenRPA with both bitness.
      +
      +
      +

      Functions:

      + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Get_OSBitnessInt()

      Detect OS bitness.

      PWASpecification_Get_PWAApplication(…)

      #Backend selection - attribute «backend» («win32» || «uia») in 1-st list element

      PWASpecification_Get_UIO(…)

      #Backend def selection - attribute «backend» («win32» || «uia») in 1-st list element #old name - GetControl

      UIOSelectorSecs_WaitAppear_Bool(…)

      Wait for UI object will appear in GUI for inWaitSecs seconds.

      UIOSelectorSecs_WaitDisappear_Bool(…)

      Wait for UI object will disappear in GUI for inWaitSecs seconds.

      UIOSelectorUIOActivity_Run_Dict(…[, …])

      Run the activity in UIO (UI Object)

      UIOSelector_Exist_Bool(inUIOSelector)

      Check if object is exist by the UIO selector.

      UIOSelector_FocusHighlight(inUIOSelector)

      Set focus and highlight (draw outline) the element (in app) by the UIO selector.

      UIOSelector_GetChildList_UIOList([…])

      Get list of child UIO’s by the parent UIOSelector

      UIOSelector_Get_BitnessInt(inSpecificationList)

      Detect process bitness by the UI Object UIO Selector.

      UIOSelector_Get_BitnessStr(inSpecificationList)

      Detect process bitness by the UI Object UIO Selector.

      UIOSelector_Get_UIO(inSpecificationList[, …])

      Get the pywinauto object by the UIO selector.

      UIOSelector_Get_UIOActivityList(inUIOSelector)

      Get the list of the UI object activities

      UIOSelector_Get_UIOInfo(inUIOSelector)

      Get the UIO dict of the attributes

      UIOSelector_Get_UIOList(inSpecificationList)

      Get the UIO list by the selector

      UIOSelector_Highlight(inUIOSelector)

      Highlight (draw outline) the element (in app) by the UIO selector.

      UIOSelector_SafeOtherGet_Process(inUIOSelector)

      Safe get other process or None if destination app is the other/same bitness

      UIOSelector_SearchChildByMouse_UIO(…)

      UIOSelector (see description on the top of the document) #old name - AutomationSearchMouseElement

      UIOSelector_SearchChildByMouse_UIOTree(…)

      !!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!!

      UIOSelector_TryRestore_Dict(inSpecificationList)

      Try to restore (maximize) window, if it’s minimized.

      UIOSelectorsSecs_WaitAppear_List(…[, …])

      Wait for many UI object will appear in GUI for inWaitSecs seconds.

      UIOSelectorsSecs_WaitDisappear_List(…[, …])

      Wait for many UI object will disappear in GUI for inWaitSecs seconds.

      +
      +
      +pyOpenRPA.Robot.UIDesktop.Get_OSBitnessInt()[исходный код]
      +

      Detect OS bitness.

      +
      +
      Результат
      +

      int 32 or int 64

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.PWASpecification_Get_PWAApplication(inControlSpecificationArray)[исходный код]
      +

      #Backend selection - attribute «backend» («win32» || «uia») in 1-st list element

      +
      +
      Параметры
      +

      inControlSpecificationArray – List of dict, dict in pywinauto.find_windows notation

      +
      +
      Результат
      +

      process application object

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.PWASpecification_Get_UIO(inControlSpecificationArray)[исходный код]
      +

      #Backend def selection - attribute «backend» («win32» || «uia») in 1-st list element +#old name - GetControl

      +
      +
      Параметры
      +

      inControlSpecificationArray – List of dict, dict in pywinauto.find_windows notation

      +
      +
      Результат
      +

      list of UIO object

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelectorSecs_WaitAppear_Bool(inSpecificationList, inWaitSecs)[исходный код]
      +

      Wait for UI object will appear in GUI for inWaitSecs seconds.

      +
      +
      Параметры
      +
        +
      • inSpecificationList – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}]

      • +
      • inWaitSecs – Float value (seconds) for wait UI element appear in GUI

      • +
      +
      +
      Результат
      +

      True - UI object will appear. False - else case

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelectorSecs_WaitDisappear_Bool(inSpecificationList, inWaitSecs)[исходный код]
      +

      Wait for UI object will disappear in GUI for inWaitSecs seconds.

      +
      +
      Параметры
      +
        +
      • inSpecificationList – UIOSelector. +Example: [{«title»:»notepad»},{«title»:»OK»}]

      • +
      • inWaitSecs – Float value (seconds) for wait UI element disappear in GUI

      • +
      +
      +
      Результат
      +

      True - UI object will disappear. False - else case

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelectorUIOActivity_Run_Dict(inUIOSelector, inActionName, inArgumentList=None, inkwArgumentObject=None)[исходный код]
      +

      Run the activity in UIO (UI Object)

      +
      +
      Параметры
      +
        +
      • inUIOSelector – UIOSelector - List of items, which contains condition attributes

      • +
      • inActionName – UIOActivity (name) activity name string from Pywinauto

      • +
      • inArgumentList

      • +
      • inkwArgumentObject

      • +
      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Exist_Bool(inUIOSelector)[исходный код]
      +

      Check if object is exist by the UIO selector.

      +
      +
      Параметры
      +

      inUIOSelector

      +
      +
      Результат
      +

      True - Object is exist. False - else case

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_FocusHighlight(inUIOSelector)[исходный код]
      +

      Set focus and highlight (draw outline) the element (in app) by the UIO selector.

      +
      +
      Параметры
      +

      inUIOSelector – UIOSelector - List of items, which contains condition attributes

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_GetChildList_UIOList(inUIOSelector=None, inBackend='win32')[исходный код]
      +

      Get list of child UIO’s by the parent UIOSelector

      +
      +
      Параметры
      +
        +
      • inUIOSelector – UIOSelector - List of items, which contains condition attributes

      • +
      • inBackend – «win32» or «uia»

      • +
      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_BitnessInt(inSpecificationList)[исходный код]
      +

      Detect process bitness by the UI Object UIO Selector.

      +
      +
      Параметры
      +

      inSpecificationList – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}]

      +
      +
      Результат
      +

      int 32 or int 64

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_BitnessStr(inSpecificationList)[исходный код]
      +

      Detect process bitness by the UI Object UIO Selector.

      +
      +
      Параметры
      +

      inSpecificationList – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}]

      +
      +
      Результат
      +

      str «32» or str «64»

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIO(inSpecificationList, inElement=None, inFlagRaiseException=True)[исходный код]
      +

      Get the pywinauto object by the UIO selector.

      +
      +
      Параметры
      +
        +
      • inSpecificationList

      • +
      • inElement

      • +
      • inFlagRaiseException

      • +
      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOActivityList(inUIOSelector)[исходный код]
      +

      Get the list of the UI object activities

      +
      +
      Параметры
      +

      inUIOSelector – UIOSelector - List of items, which contains condition attributes

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOInfo(inUIOSelector)[исходный код]
      +

      Get the UIO dict of the attributes

      +
      +
      Параметры
      +

      inUIOSelector – UIOSelector - List of items, which contains condition attributes

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOList(inSpecificationList, inElement=None, inFlagRaiseException=True)[исходный код]
      +

      Get the UIO list by the selector

      +
      +
      Параметры
      +
        +
      • inSpecificationList – UIO Selector

      • +
      • inElement – Входной элемент - показатель, что не требуется выполнять коннект к процессу

      • +
      • inFlagRaiseException – Флаг True - выкинуть ошибку в случае обнаружении пустого списка

      • +
      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Highlight(inUIOSelector)[исходный код]
      +

      Highlight (draw outline) the element (in app) by the UIO selector.

      +
      +
      Параметры
      +

      inUIOSelector – UIOSelector - List of items, which contains condition attributes

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_SafeOtherGet_Process(inUIOSelector)[исходный код]
      +

      Safe get other process or None if destination app is the other/same bitness

      +
      +
      Параметры
      +

      inUIOSelector – UIO Selector of the UI object

      +
      +
      Результат
      +

      None or process (of the other bitness)

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_SearchChildByMouse_UIO(inElementSpecification)[исходный код]
      +

      UIOSelector (see description on the top of the document) +#old name - AutomationSearchMouseElement

      +
      +
      Параметры
      +

      inElementSpecification – UIOSelector of the UI Object

      +
      +
      Результат
      +

      pywinauto element wrapper instance or None

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_SearchChildByMouse_UIOTree(inUIOSelector)[исходный код]
      +

      !!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!!

      +
      +
      Параметры
      +

      inUIOSelector – UIOSelector of the UI Object

      +
      +
      Результат
      +

      ?

      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_TryRestore_Dict(inSpecificationList)[исходный код]
      +

      Try to restore (maximize) window, if it’s minimized. (!IMPORTANT! When use UIA framework minimized windows doesn’t appear by the UIOSelector. You need to try restore windows and after that try to get UIO)

      +
      +
      Параметры
      +

      inSpecificationList – UIOSelector - List of items, which contains condition attributes

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelectorsSecs_WaitAppear_List(inSpecificationListList, inWaitSecs, inFlagWaitAllInMoment=False)[исходный код]
      +

      Wait for many UI object will appear in GUI for inWaitSecs seconds.

      +
      +
      Параметры
      +
        +
      • inSpecificationListList

        UIOSelector list. +Example: [

        +
        +

        [{«title»:»notepad»},{«title»:»OK»}], +[{«title»:»notepad»},{«title»:»Cancel»}]

        +
        +

        ]

        +

      • +
      • inWaitSecs – Float value (seconds) for wait UI element appear in GUI

      • +
      • inFlagWaitAllInMoment – True - Wait all UI objects from the UIOSelector list to be appeared

      • +
      +
      +
      Результат
      +

      List of index, which UI object UIO will be appeared. Example: [1] # Appear only UI object with UIO selector: [{«title»:»notepad»},{«title»:»Cancel»}]

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelectorsSecs_WaitDisappear_List(inSpecificationListList, inWaitSecs, inFlagWaitAllInMoment=False)[исходный код]
      +

      Wait for many UI object will disappear in GUI for inWaitSecs seconds.

      +
      +
      Параметры
      +
        +
      • inSpecificationListList

        UIOSelector list. +Example: [

        +
        +

        [{«title»:»notepad»},{«title»:»OK»}], +[{«title»:»notepad»},{«title»:»Cancel»}]

        +
        +

        ]

        +

      • +
      • inWaitSecs – Float value (seconds) for wait UI element disappear in GUI

      • +
      • inFlagWaitAllInMoment – True - Wait all UI objects from the UIOSelector list to be disappeared.

      • +
      +
      +
      Результат
      +

      List of index, which UI object UIO will be disappeared. Example: [1] # Disappear only UI object with UIO selector: [{«title»:»notepad»},{«title»:»Cancel»}]

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +

      References

      +

      reStructuredText 1

      +
      +
      1
      +

      http://docutils.sourceforge.net/rst.html

      +
      +
      +

      .. v1.2.12 replace:: v1.2.12 + .. |author| replace:: Ivan Maslov <ivan.maslov@unicodelabs.ru>

      +

      +
      +
      + + +
      + +
      + +
      +
      + +
      + +
      + + + + + + + + + + + \ No newline at end of file diff --git a/Wiki/RUS_Guide/html/Robot/05_clipboard.html b/Wiki/RUS_Guide/html/Robot/05_clipboard.html new file mode 100644 index 00000000..61412bcf --- /dev/null +++ b/Wiki/RUS_Guide/html/Robot/05_clipboard.html @@ -0,0 +1,710 @@ + + + + + + + + + + 5. Clipboard — документация pyOpenRPA v1.2.12 v1.2.12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + + + + + +
      + +
      + + + + + + + + + + + + + + + + + + + +
      + + + + +
      +
      +
      +
      + +
      +

      5. Clipboard

      +

      Here you can find the functions description for interaction with desktop GUI applications

      +

      How to use both x32 and x64 python processes (it can be helpfully, if another app GUI is on another bitness than your app)

      +
      from pyOpenRPA.Robot import UIDesktop
      +#Section for robot init
      +lPyOpenRPA_SettingsDict = {
      +        "Python32FullPath": "..\\Resources\\WPy32-3720\\python-3.7.2\\python.exe", #Set from user: "..\\Resources\\WPy32-3720\\python-3.7.2\\OpenRPARobotGUIx32.exe"
      +        "Python64FullPath": "..\\Resources\\WPy64-3720\\python-3.7.2.amd64\\python.exe", #Set from user
      +        "Python32ProcessName": "pyOpenRPA_UIDesktopX32.exe", #Config set once
      +        "Python64ProcessName": "pyOpenRPA_UIDesktopX64.exe" #Config set once
      +}
      +# Init the pyOpenRPA configuration
      +UIDesktop.Utils.ProcessBitness.SettingsInit(lPyOpenRPA_SettingsDict)
      +# Now you can use pyOpenRPA with both bitness.
      +
      +
      +

      Functions:

      + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Get_OSBitnessInt()

      Detect OS bitness.

      PWASpecification_Get_PWAApplication(…)

      #Backend selection - attribute «backend» («win32» || «uia») in 1-st list element

      PWASpecification_Get_UIO(…)

      #Backend def selection - attribute «backend» («win32» || «uia») in 1-st list element #old name - GetControl

      UIOSelectorSecs_WaitAppear_Bool(…)

      Wait for UI object will appear in GUI for inWaitSecs seconds.

      UIOSelectorSecs_WaitDisappear_Bool(…)

      Wait for UI object will disappear in GUI for inWaitSecs seconds.

      UIOSelectorUIOActivity_Run_Dict(…[, …])

      Run the activity in UIO (UI Object)

      UIOSelector_Exist_Bool(inUIOSelector)

      Check if object is exist by the UIO selector.

      UIOSelector_FocusHighlight(inUIOSelector)

      Set focus and highlight (draw outline) the element (in app) by the UIO selector.

      UIOSelector_GetChildList_UIOList([…])

      Get list of child UIO’s by the parent UIOSelector

      UIOSelector_Get_BitnessInt(inSpecificationList)

      Detect process bitness by the UI Object UIO Selector.

      UIOSelector_Get_BitnessStr(inSpecificationList)

      Detect process bitness by the UI Object UIO Selector.

      UIOSelector_Get_UIO(inSpecificationList[, …])

      Get the pywinauto object by the UIO selector.

      UIOSelector_Get_UIOActivityList(inUIOSelector)

      Get the list of the UI object activities

      UIOSelector_Get_UIOInfo(inUIOSelector)

      Get the UIO dict of the attributes

      UIOSelector_Get_UIOList(inSpecificationList)

      Get the UIO list by the selector

      UIOSelector_Highlight(inUIOSelector)

      Highlight (draw outline) the element (in app) by the UIO selector.

      UIOSelector_SafeOtherGet_Process(inUIOSelector)

      Safe get other process or None if destination app is the other/same bitness

      UIOSelector_SearchChildByMouse_UIO(…)

      UIOSelector (see description on the top of the document) #old name - AutomationSearchMouseElement

      UIOSelector_SearchChildByMouse_UIOTree(…)

      !!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!!

      UIOSelector_TryRestore_Dict(inSpecificationList)

      Try to restore (maximize) window, if it’s minimized.

      UIOSelectorsSecs_WaitAppear_List(…[, …])

      Wait for many UI object will appear in GUI for inWaitSecs seconds.

      UIOSelectorsSecs_WaitDisappear_List(…[, …])

      Wait for many UI object will disappear in GUI for inWaitSecs seconds.

      +
      +
      +pyOpenRPA.Robot.UIDesktop.Get_OSBitnessInt()[исходный код]
      +

      Detect OS bitness.

      +
      +
      Результат
      +

      int 32 or int 64

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.PWASpecification_Get_PWAApplication(inControlSpecificationArray)[исходный код]
      +

      #Backend selection - attribute «backend» («win32» || «uia») in 1-st list element

      +
      +
      Параметры
      +

      inControlSpecificationArray – List of dict, dict in pywinauto.find_windows notation

      +
      +
      Результат
      +

      process application object

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.PWASpecification_Get_UIO(inControlSpecificationArray)[исходный код]
      +

      #Backend def selection - attribute «backend» («win32» || «uia») in 1-st list element +#old name - GetControl

      +
      +
      Параметры
      +

      inControlSpecificationArray – List of dict, dict in pywinauto.find_windows notation

      +
      +
      Результат
      +

      list of UIO object

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelectorSecs_WaitAppear_Bool(inSpecificationList, inWaitSecs)[исходный код]
      +

      Wait for UI object will appear in GUI for inWaitSecs seconds.

      +
      +
      Параметры
      +
        +
      • inSpecificationList – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}]

      • +
      • inWaitSecs – Float value (seconds) for wait UI element appear in GUI

      • +
      +
      +
      Результат
      +

      True - UI object will appear. False - else case

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelectorSecs_WaitDisappear_Bool(inSpecificationList, inWaitSecs)[исходный код]
      +

      Wait for UI object will disappear in GUI for inWaitSecs seconds.

      +
      +
      Параметры
      +
        +
      • inSpecificationList – UIOSelector. +Example: [{«title»:»notepad»},{«title»:»OK»}]

      • +
      • inWaitSecs – Float value (seconds) for wait UI element disappear in GUI

      • +
      +
      +
      Результат
      +

      True - UI object will disappear. False - else case

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelectorUIOActivity_Run_Dict(inUIOSelector, inActionName, inArgumentList=None, inkwArgumentObject=None)[исходный код]
      +

      Run the activity in UIO (UI Object)

      +
      +
      Параметры
      +
        +
      • inUIOSelector – UIOSelector - List of items, which contains condition attributes

      • +
      • inActionName – UIOActivity (name) activity name string from Pywinauto

      • +
      • inArgumentList

      • +
      • inkwArgumentObject

      • +
      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Exist_Bool(inUIOSelector)[исходный код]
      +

      Check if object is exist by the UIO selector.

      +
      +
      Параметры
      +

      inUIOSelector

      +
      +
      Результат
      +

      True - Object is exist. False - else case

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_FocusHighlight(inUIOSelector)[исходный код]
      +

      Set focus and highlight (draw outline) the element (in app) by the UIO selector.

      +
      +
      Параметры
      +

      inUIOSelector – UIOSelector - List of items, which contains condition attributes

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_GetChildList_UIOList(inUIOSelector=None, inBackend='win32')[исходный код]
      +

      Get list of child UIO’s by the parent UIOSelector

      +
      +
      Параметры
      +
        +
      • inUIOSelector – UIOSelector - List of items, which contains condition attributes

      • +
      • inBackend – «win32» or «uia»

      • +
      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_BitnessInt(inSpecificationList)[исходный код]
      +

      Detect process bitness by the UI Object UIO Selector.

      +
      +
      Параметры
      +

      inSpecificationList – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}]

      +
      +
      Результат
      +

      int 32 or int 64

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_BitnessStr(inSpecificationList)[исходный код]
      +

      Detect process bitness by the UI Object UIO Selector.

      +
      +
      Параметры
      +

      inSpecificationList – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}]

      +
      +
      Результат
      +

      str «32» or str «64»

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIO(inSpecificationList, inElement=None, inFlagRaiseException=True)[исходный код]
      +

      Get the pywinauto object by the UIO selector.

      +
      +
      Параметры
      +
        +
      • inSpecificationList

      • +
      • inElement

      • +
      • inFlagRaiseException

      • +
      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOActivityList(inUIOSelector)[исходный код]
      +

      Get the list of the UI object activities

      +
      +
      Параметры
      +

      inUIOSelector – UIOSelector - List of items, which contains condition attributes

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOInfo(inUIOSelector)[исходный код]
      +

      Get the UIO dict of the attributes

      +
      +
      Параметры
      +

      inUIOSelector – UIOSelector - List of items, which contains condition attributes

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOList(inSpecificationList, inElement=None, inFlagRaiseException=True)[исходный код]
      +

      Get the UIO list by the selector

      +
      +
      Параметры
      +
        +
      • inSpecificationList – UIO Selector

      • +
      • inElement – Входной элемент - показатель, что не требуется выполнять коннект к процессу

      • +
      • inFlagRaiseException – Флаг True - выкинуть ошибку в случае обнаружении пустого списка

      • +
      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Highlight(inUIOSelector)[исходный код]
      +

      Highlight (draw outline) the element (in app) by the UIO selector.

      +
      +
      Параметры
      +

      inUIOSelector – UIOSelector - List of items, which contains condition attributes

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_SafeOtherGet_Process(inUIOSelector)[исходный код]
      +

      Safe get other process or None if destination app is the other/same bitness

      +
      +
      Параметры
      +

      inUIOSelector – UIO Selector of the UI object

      +
      +
      Результат
      +

      None or process (of the other bitness)

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_SearchChildByMouse_UIO(inElementSpecification)[исходный код]
      +

      UIOSelector (see description on the top of the document) +#old name - AutomationSearchMouseElement

      +
      +
      Параметры
      +

      inElementSpecification – UIOSelector of the UI Object

      +
      +
      Результат
      +

      pywinauto element wrapper instance or None

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_SearchChildByMouse_UIOTree(inUIOSelector)[исходный код]
      +

      !!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!!

      +
      +
      Параметры
      +

      inUIOSelector – UIOSelector of the UI Object

      +
      +
      Результат
      +

      ?

      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_TryRestore_Dict(inSpecificationList)[исходный код]
      +

      Try to restore (maximize) window, if it’s minimized. (!IMPORTANT! When use UIA framework minimized windows doesn’t appear by the UIOSelector. You need to try restore windows and after that try to get UIO)

      +
      +
      Параметры
      +

      inSpecificationList – UIOSelector - List of items, which contains condition attributes

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelectorsSecs_WaitAppear_List(inSpecificationListList, inWaitSecs, inFlagWaitAllInMoment=False)[исходный код]
      +

      Wait for many UI object will appear in GUI for inWaitSecs seconds.

      +
      +
      Параметры
      +
        +
      • inSpecificationListList

        UIOSelector list. +Example: [

        +
        +

        [{«title»:»notepad»},{«title»:»OK»}], +[{«title»:»notepad»},{«title»:»Cancel»}]

        +
        +

        ]

        +

      • +
      • inWaitSecs – Float value (seconds) for wait UI element appear in GUI

      • +
      • inFlagWaitAllInMoment – True - Wait all UI objects from the UIOSelector list to be appeared

      • +
      +
      +
      Результат
      +

      List of index, which UI object UIO will be appeared. Example: [1] # Appear only UI object with UIO selector: [{«title»:»notepad»},{«title»:»Cancel»}]

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelectorsSecs_WaitDisappear_List(inSpecificationListList, inWaitSecs, inFlagWaitAllInMoment=False)[исходный код]
      +

      Wait for many UI object will disappear in GUI for inWaitSecs seconds.

      +
      +
      Параметры
      +
        +
      • inSpecificationListList

        UIOSelector list. +Example: [

        +
        +

        [{«title»:»notepad»},{«title»:»OK»}], +[{«title»:»notepad»},{«title»:»Cancel»}]

        +
        +

        ]

        +

      • +
      • inWaitSecs – Float value (seconds) for wait UI element disappear in GUI

      • +
      • inFlagWaitAllInMoment – True - Wait all UI objects from the UIOSelector list to be disappeared.

      • +
      +
      +
      Результат
      +

      List of index, which UI object UIO will be disappeared. Example: [1] # Disappear only UI object with UIO selector: [{«title»:»notepad»},{«title»:»Cancel»}]

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +

      References

      +

      reStructuredText 1

      +
      +
      1
      +

      http://docutils.sourceforge.net/rst.html

      +
      +
      +

      .. v1.2.12 replace:: v1.2.12 + .. |author| replace:: Ivan Maslov <ivan.maslov@unicodelabs.ru>

      +

      +
      +
      + + +
      + +
      + +
      +
      + +
      + +
      + + + + + + + + + + + \ No newline at end of file diff --git a/Wiki/RUS_Guide/html/Robot/06_mouse.html b/Wiki/RUS_Guide/html/Robot/06_mouse.html new file mode 100644 index 00000000..bc346e26 --- /dev/null +++ b/Wiki/RUS_Guide/html/Robot/06_mouse.html @@ -0,0 +1,710 @@ + + + + + + + + + + 6. Mouse — документация pyOpenRPA v1.2.12 v1.2.12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + + + + + +
      + +
      + + + + + + + + + + + + + + + + + + + +
      + + + + +
      +
      +
      +
      + +
      +

      6. Mouse

      +

      Here you can find the functions description for interaction with desktop GUI applications

      +

      How to use both x32 and x64 python processes (it can be helpfully, if another app GUI is on another bitness than your app)

      +
      from pyOpenRPA.Robot import UIDesktop
      +#Section for robot init
      +lPyOpenRPA_SettingsDict = {
      +        "Python32FullPath": "..\\Resources\\WPy32-3720\\python-3.7.2\\python.exe", #Set from user: "..\\Resources\\WPy32-3720\\python-3.7.2\\OpenRPARobotGUIx32.exe"
      +        "Python64FullPath": "..\\Resources\\WPy64-3720\\python-3.7.2.amd64\\python.exe", #Set from user
      +        "Python32ProcessName": "pyOpenRPA_UIDesktopX32.exe", #Config set once
      +        "Python64ProcessName": "pyOpenRPA_UIDesktopX64.exe" #Config set once
      +}
      +# Init the pyOpenRPA configuration
      +UIDesktop.Utils.ProcessBitness.SettingsInit(lPyOpenRPA_SettingsDict)
      +# Now you can use pyOpenRPA with both bitness.
      +
      +
      +

      Functions:

      + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Get_OSBitnessInt()

      Detect OS bitness.

      PWASpecification_Get_PWAApplication(…)

      #Backend selection - attribute «backend» («win32» || «uia») in 1-st list element

      PWASpecification_Get_UIO(…)

      #Backend def selection - attribute «backend» («win32» || «uia») in 1-st list element #old name - GetControl

      UIOSelectorSecs_WaitAppear_Bool(…)

      Wait for UI object will appear in GUI for inWaitSecs seconds.

      UIOSelectorSecs_WaitDisappear_Bool(…)

      Wait for UI object will disappear in GUI for inWaitSecs seconds.

      UIOSelectorUIOActivity_Run_Dict(…[, …])

      Run the activity in UIO (UI Object)

      UIOSelector_Exist_Bool(inUIOSelector)

      Check if object is exist by the UIO selector.

      UIOSelector_FocusHighlight(inUIOSelector)

      Set focus and highlight (draw outline) the element (in app) by the UIO selector.

      UIOSelector_GetChildList_UIOList([…])

      Get list of child UIO’s by the parent UIOSelector

      UIOSelector_Get_BitnessInt(inSpecificationList)

      Detect process bitness by the UI Object UIO Selector.

      UIOSelector_Get_BitnessStr(inSpecificationList)

      Detect process bitness by the UI Object UIO Selector.

      UIOSelector_Get_UIO(inSpecificationList[, …])

      Get the pywinauto object by the UIO selector.

      UIOSelector_Get_UIOActivityList(inUIOSelector)

      Get the list of the UI object activities

      UIOSelector_Get_UIOInfo(inUIOSelector)

      Get the UIO dict of the attributes

      UIOSelector_Get_UIOList(inSpecificationList)

      Get the UIO list by the selector

      UIOSelector_Highlight(inUIOSelector)

      Highlight (draw outline) the element (in app) by the UIO selector.

      UIOSelector_SafeOtherGet_Process(inUIOSelector)

      Safe get other process or None if destination app is the other/same bitness

      UIOSelector_SearchChildByMouse_UIO(…)

      UIOSelector (see description on the top of the document) #old name - AutomationSearchMouseElement

      UIOSelector_SearchChildByMouse_UIOTree(…)

      !!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!!

      UIOSelector_TryRestore_Dict(inSpecificationList)

      Try to restore (maximize) window, if it’s minimized.

      UIOSelectorsSecs_WaitAppear_List(…[, …])

      Wait for many UI object will appear in GUI for inWaitSecs seconds.

      UIOSelectorsSecs_WaitDisappear_List(…[, …])

      Wait for many UI object will disappear in GUI for inWaitSecs seconds.

      +
      +
      +pyOpenRPA.Robot.UIDesktop.Get_OSBitnessInt()[исходный код]
      +

      Detect OS bitness.

      +
      +
      Результат
      +

      int 32 or int 64

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.PWASpecification_Get_PWAApplication(inControlSpecificationArray)[исходный код]
      +

      #Backend selection - attribute «backend» («win32» || «uia») in 1-st list element

      +
      +
      Параметры
      +

      inControlSpecificationArray – List of dict, dict in pywinauto.find_windows notation

      +
      +
      Результат
      +

      process application object

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.PWASpecification_Get_UIO(inControlSpecificationArray)[исходный код]
      +

      #Backend def selection - attribute «backend» («win32» || «uia») in 1-st list element +#old name - GetControl

      +
      +
      Параметры
      +

      inControlSpecificationArray – List of dict, dict in pywinauto.find_windows notation

      +
      +
      Результат
      +

      list of UIO object

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelectorSecs_WaitAppear_Bool(inSpecificationList, inWaitSecs)[исходный код]
      +

      Wait for UI object will appear in GUI for inWaitSecs seconds.

      +
      +
      Параметры
      +
        +
      • inSpecificationList – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}]

      • +
      • inWaitSecs – Float value (seconds) for wait UI element appear in GUI

      • +
      +
      +
      Результат
      +

      True - UI object will appear. False - else case

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelectorSecs_WaitDisappear_Bool(inSpecificationList, inWaitSecs)[исходный код]
      +

      Wait for UI object will disappear in GUI for inWaitSecs seconds.

      +
      +
      Параметры
      +
        +
      • inSpecificationList – UIOSelector. +Example: [{«title»:»notepad»},{«title»:»OK»}]

      • +
      • inWaitSecs – Float value (seconds) for wait UI element disappear in GUI

      • +
      +
      +
      Результат
      +

      True - UI object will disappear. False - else case

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelectorUIOActivity_Run_Dict(inUIOSelector, inActionName, inArgumentList=None, inkwArgumentObject=None)[исходный код]
      +

      Run the activity in UIO (UI Object)

      +
      +
      Параметры
      +
        +
      • inUIOSelector – UIOSelector - List of items, which contains condition attributes

      • +
      • inActionName – UIOActivity (name) activity name string from Pywinauto

      • +
      • inArgumentList

      • +
      • inkwArgumentObject

      • +
      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Exist_Bool(inUIOSelector)[исходный код]
      +

      Check if object is exist by the UIO selector.

      +
      +
      Параметры
      +

      inUIOSelector

      +
      +
      Результат
      +

      True - Object is exist. False - else case

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_FocusHighlight(inUIOSelector)[исходный код]
      +

      Set focus and highlight (draw outline) the element (in app) by the UIO selector.

      +
      +
      Параметры
      +

      inUIOSelector – UIOSelector - List of items, which contains condition attributes

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_GetChildList_UIOList(inUIOSelector=None, inBackend='win32')[исходный код]
      +

      Get list of child UIO’s by the parent UIOSelector

      +
      +
      Параметры
      +
        +
      • inUIOSelector – UIOSelector - List of items, which contains condition attributes

      • +
      • inBackend – «win32» or «uia»

      • +
      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_BitnessInt(inSpecificationList)[исходный код]
      +

      Detect process bitness by the UI Object UIO Selector.

      +
      +
      Параметры
      +

      inSpecificationList – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}]

      +
      +
      Результат
      +

      int 32 or int 64

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_BitnessStr(inSpecificationList)[исходный код]
      +

      Detect process bitness by the UI Object UIO Selector.

      +
      +
      Параметры
      +

      inSpecificationList – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}]

      +
      +
      Результат
      +

      str «32» or str «64»

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIO(inSpecificationList, inElement=None, inFlagRaiseException=True)[исходный код]
      +

      Get the pywinauto object by the UIO selector.

      +
      +
      Параметры
      +
        +
      • inSpecificationList

      • +
      • inElement

      • +
      • inFlagRaiseException

      • +
      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOActivityList(inUIOSelector)[исходный код]
      +

      Get the list of the UI object activities

      +
      +
      Параметры
      +

      inUIOSelector – UIOSelector - List of items, which contains condition attributes

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOInfo(inUIOSelector)[исходный код]
      +

      Get the UIO dict of the attributes

      +
      +
      Параметры
      +

      inUIOSelector – UIOSelector - List of items, which contains condition attributes

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOList(inSpecificationList, inElement=None, inFlagRaiseException=True)[исходный код]
      +

      Get the UIO list by the selector

      +
      +
      Параметры
      +
        +
      • inSpecificationList – UIO Selector

      • +
      • inElement – Входной элемент - показатель, что не требуется выполнять коннект к процессу

      • +
      • inFlagRaiseException – Флаг True - выкинуть ошибку в случае обнаружении пустого списка

      • +
      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Highlight(inUIOSelector)[исходный код]
      +

      Highlight (draw outline) the element (in app) by the UIO selector.

      +
      +
      Параметры
      +

      inUIOSelector – UIOSelector - List of items, which contains condition attributes

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_SafeOtherGet_Process(inUIOSelector)[исходный код]
      +

      Safe get other process or None if destination app is the other/same bitness

      +
      +
      Параметры
      +

      inUIOSelector – UIO Selector of the UI object

      +
      +
      Результат
      +

      None or process (of the other bitness)

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_SearchChildByMouse_UIO(inElementSpecification)[исходный код]
      +

      UIOSelector (see description on the top of the document) +#old name - AutomationSearchMouseElement

      +
      +
      Параметры
      +

      inElementSpecification – UIOSelector of the UI Object

      +
      +
      Результат
      +

      pywinauto element wrapper instance or None

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_SearchChildByMouse_UIOTree(inUIOSelector)[исходный код]
      +

      !!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!!

      +
      +
      Параметры
      +

      inUIOSelector – UIOSelector of the UI Object

      +
      +
      Результат
      +

      ?

      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_TryRestore_Dict(inSpecificationList)[исходный код]
      +

      Try to restore (maximize) window, if it’s minimized. (!IMPORTANT! When use UIA framework minimized windows doesn’t appear by the UIOSelector. You need to try restore windows and after that try to get UIO)

      +
      +
      Параметры
      +

      inSpecificationList – UIOSelector - List of items, which contains condition attributes

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelectorsSecs_WaitAppear_List(inSpecificationListList, inWaitSecs, inFlagWaitAllInMoment=False)[исходный код]
      +

      Wait for many UI object will appear in GUI for inWaitSecs seconds.

      +
      +
      Параметры
      +
        +
      • inSpecificationListList

        UIOSelector list. +Example: [

        +
        +

        [{«title»:»notepad»},{«title»:»OK»}], +[{«title»:»notepad»},{«title»:»Cancel»}]

        +
        +

        ]

        +

      • +
      • inWaitSecs – Float value (seconds) for wait UI element appear in GUI

      • +
      • inFlagWaitAllInMoment – True - Wait all UI objects from the UIOSelector list to be appeared

      • +
      +
      +
      Результат
      +

      List of index, which UI object UIO will be appeared. Example: [1] # Appear only UI object with UIO selector: [{«title»:»notepad»},{«title»:»Cancel»}]

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelectorsSecs_WaitDisappear_List(inSpecificationListList, inWaitSecs, inFlagWaitAllInMoment=False)[исходный код]
      +

      Wait for many UI object will disappear in GUI for inWaitSecs seconds.

      +
      +
      Параметры
      +
        +
      • inSpecificationListList

        UIOSelector list. +Example: [

        +
        +

        [{«title»:»notepad»},{«title»:»OK»}], +[{«title»:»notepad»},{«title»:»Cancel»}]

        +
        +

        ]

        +

      • +
      • inWaitSecs – Float value (seconds) for wait UI element disappear in GUI

      • +
      • inFlagWaitAllInMoment – True - Wait all UI objects from the UIOSelector list to be disappeared.

      • +
      +
      +
      Результат
      +

      List of index, which UI object UIO will be disappeared. Example: [1] # Disappear only UI object with UIO selector: [{«title»:»notepad»},{«title»:»Cancel»}]

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +

      References

      +

      reStructuredText 1

      +
      +
      1
      +

      http://docutils.sourceforge.net/rst.html

      +
      +
      +

      .. v1.2.12 replace:: v1.2.12 + .. |author| replace:: Ivan Maslov <ivan.maslov@unicodelabs.ru>

      +

      +
      +
      + + +
      + +
      + +
      +
      + +
      + +
      + + + + + + + + + + + \ No newline at end of file diff --git a/Wiki/RUS_Guide/html/Robot/07_image.html b/Wiki/RUS_Guide/html/Robot/07_image.html new file mode 100644 index 00000000..d7793546 --- /dev/null +++ b/Wiki/RUS_Guide/html/Robot/07_image.html @@ -0,0 +1,710 @@ + + + + + + + + + + 7. Image — документация pyOpenRPA v1.2.12 v1.2.12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + + + + + +
      + +
      + + + + + + + + + + + + + + + + + + + +
      + + + + +
      +
      +
      +
      + +
      +

      7. Image

      +

      Here you can find the functions description for interaction with desktop GUI applications

      +

      How to use both x32 and x64 python processes (it can be helpfully, if another app GUI is on another bitness than your app)

      +
      from pyOpenRPA.Robot import UIDesktop
      +#Section for robot init
      +lPyOpenRPA_SettingsDict = {
      +        "Python32FullPath": "..\\Resources\\WPy32-3720\\python-3.7.2\\python.exe", #Set from user: "..\\Resources\\WPy32-3720\\python-3.7.2\\OpenRPARobotGUIx32.exe"
      +        "Python64FullPath": "..\\Resources\\WPy64-3720\\python-3.7.2.amd64\\python.exe", #Set from user
      +        "Python32ProcessName": "pyOpenRPA_UIDesktopX32.exe", #Config set once
      +        "Python64ProcessName": "pyOpenRPA_UIDesktopX64.exe" #Config set once
      +}
      +# Init the pyOpenRPA configuration
      +UIDesktop.Utils.ProcessBitness.SettingsInit(lPyOpenRPA_SettingsDict)
      +# Now you can use pyOpenRPA with both bitness.
      +
      +
      +

      Functions:

      + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Get_OSBitnessInt()

      Detect OS bitness.

      PWASpecification_Get_PWAApplication(…)

      #Backend selection - attribute «backend» («win32» || «uia») in 1-st list element

      PWASpecification_Get_UIO(…)

      #Backend def selection - attribute «backend» («win32» || «uia») in 1-st list element #old name - GetControl

      UIOSelectorSecs_WaitAppear_Bool(…)

      Wait for UI object will appear in GUI for inWaitSecs seconds.

      UIOSelectorSecs_WaitDisappear_Bool(…)

      Wait for UI object will disappear in GUI for inWaitSecs seconds.

      UIOSelectorUIOActivity_Run_Dict(…[, …])

      Run the activity in UIO (UI Object)

      UIOSelector_Exist_Bool(inUIOSelector)

      Check if object is exist by the UIO selector.

      UIOSelector_FocusHighlight(inUIOSelector)

      Set focus and highlight (draw outline) the element (in app) by the UIO selector.

      UIOSelector_GetChildList_UIOList([…])

      Get list of child UIO’s by the parent UIOSelector

      UIOSelector_Get_BitnessInt(inSpecificationList)

      Detect process bitness by the UI Object UIO Selector.

      UIOSelector_Get_BitnessStr(inSpecificationList)

      Detect process bitness by the UI Object UIO Selector.

      UIOSelector_Get_UIO(inSpecificationList[, …])

      Get the pywinauto object by the UIO selector.

      UIOSelector_Get_UIOActivityList(inUIOSelector)

      Get the list of the UI object activities

      UIOSelector_Get_UIOInfo(inUIOSelector)

      Get the UIO dict of the attributes

      UIOSelector_Get_UIOList(inSpecificationList)

      Get the UIO list by the selector

      UIOSelector_Highlight(inUIOSelector)

      Highlight (draw outline) the element (in app) by the UIO selector.

      UIOSelector_SafeOtherGet_Process(inUIOSelector)

      Safe get other process or None if destination app is the other/same bitness

      UIOSelector_SearchChildByMouse_UIO(…)

      UIOSelector (see description on the top of the document) #old name - AutomationSearchMouseElement

      UIOSelector_SearchChildByMouse_UIOTree(…)

      !!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!!

      UIOSelector_TryRestore_Dict(inSpecificationList)

      Try to restore (maximize) window, if it’s minimized.

      UIOSelectorsSecs_WaitAppear_List(…[, …])

      Wait for many UI object will appear in GUI for inWaitSecs seconds.

      UIOSelectorsSecs_WaitDisappear_List(…[, …])

      Wait for many UI object will disappear in GUI for inWaitSecs seconds.

      +
      +
      +pyOpenRPA.Robot.UIDesktop.Get_OSBitnessInt()[исходный код]
      +

      Detect OS bitness.

      +
      +
      Результат
      +

      int 32 or int 64

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.PWASpecification_Get_PWAApplication(inControlSpecificationArray)[исходный код]
      +

      #Backend selection - attribute «backend» («win32» || «uia») in 1-st list element

      +
      +
      Параметры
      +

      inControlSpecificationArray – List of dict, dict in pywinauto.find_windows notation

      +
      +
      Результат
      +

      process application object

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.PWASpecification_Get_UIO(inControlSpecificationArray)[исходный код]
      +

      #Backend def selection - attribute «backend» («win32» || «uia») in 1-st list element +#old name - GetControl

      +
      +
      Параметры
      +

      inControlSpecificationArray – List of dict, dict in pywinauto.find_windows notation

      +
      +
      Результат
      +

      list of UIO object

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelectorSecs_WaitAppear_Bool(inSpecificationList, inWaitSecs)[исходный код]
      +

      Wait for UI object will appear in GUI for inWaitSecs seconds.

      +
      +
      Параметры
      +
        +
      • inSpecificationList – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}]

      • +
      • inWaitSecs – Float value (seconds) for wait UI element appear in GUI

      • +
      +
      +
      Результат
      +

      True - UI object will appear. False - else case

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelectorSecs_WaitDisappear_Bool(inSpecificationList, inWaitSecs)[исходный код]
      +

      Wait for UI object will disappear in GUI for inWaitSecs seconds.

      +
      +
      Параметры
      +
        +
      • inSpecificationList – UIOSelector. +Example: [{«title»:»notepad»},{«title»:»OK»}]

      • +
      • inWaitSecs – Float value (seconds) for wait UI element disappear in GUI

      • +
      +
      +
      Результат
      +

      True - UI object will disappear. False - else case

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelectorUIOActivity_Run_Dict(inUIOSelector, inActionName, inArgumentList=None, inkwArgumentObject=None)[исходный код]
      +

      Run the activity in UIO (UI Object)

      +
      +
      Параметры
      +
        +
      • inUIOSelector – UIOSelector - List of items, which contains condition attributes

      • +
      • inActionName – UIOActivity (name) activity name string from Pywinauto

      • +
      • inArgumentList

      • +
      • inkwArgumentObject

      • +
      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Exist_Bool(inUIOSelector)[исходный код]
      +

      Check if object is exist by the UIO selector.

      +
      +
      Параметры
      +

      inUIOSelector

      +
      +
      Результат
      +

      True - Object is exist. False - else case

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_FocusHighlight(inUIOSelector)[исходный код]
      +

      Set focus and highlight (draw outline) the element (in app) by the UIO selector.

      +
      +
      Параметры
      +

      inUIOSelector – UIOSelector - List of items, which contains condition attributes

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_GetChildList_UIOList(inUIOSelector=None, inBackend='win32')[исходный код]
      +

      Get list of child UIO’s by the parent UIOSelector

      +
      +
      Параметры
      +
        +
      • inUIOSelector – UIOSelector - List of items, which contains condition attributes

      • +
      • inBackend – «win32» or «uia»

      • +
      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_BitnessInt(inSpecificationList)[исходный код]
      +

      Detect process bitness by the UI Object UIO Selector.

      +
      +
      Параметры
      +

      inSpecificationList – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}]

      +
      +
      Результат
      +

      int 32 or int 64

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_BitnessStr(inSpecificationList)[исходный код]
      +

      Detect process bitness by the UI Object UIO Selector.

      +
      +
      Параметры
      +

      inSpecificationList – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}]

      +
      +
      Результат
      +

      str «32» or str «64»

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIO(inSpecificationList, inElement=None, inFlagRaiseException=True)[исходный код]
      +

      Get the pywinauto object by the UIO selector.

      +
      +
      Параметры
      +
        +
      • inSpecificationList

      • +
      • inElement

      • +
      • inFlagRaiseException

      • +
      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOActivityList(inUIOSelector)[исходный код]
      +

      Get the list of the UI object activities

      +
      +
      Параметры
      +

      inUIOSelector – UIOSelector - List of items, which contains condition attributes

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOInfo(inUIOSelector)[исходный код]
      +

      Get the UIO dict of the attributes

      +
      +
      Параметры
      +

      inUIOSelector – UIOSelector - List of items, which contains condition attributes

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOList(inSpecificationList, inElement=None, inFlagRaiseException=True)[исходный код]
      +

      Get the UIO list by the selector

      +
      +
      Параметры
      +
        +
      • inSpecificationList – UIO Selector

      • +
      • inElement – Входной элемент - показатель, что не требуется выполнять коннект к процессу

      • +
      • inFlagRaiseException – Флаг True - выкинуть ошибку в случае обнаружении пустого списка

      • +
      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_Highlight(inUIOSelector)[исходный код]
      +

      Highlight (draw outline) the element (in app) by the UIO selector.

      +
      +
      Параметры
      +

      inUIOSelector – UIOSelector - List of items, which contains condition attributes

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_SafeOtherGet_Process(inUIOSelector)[исходный код]
      +

      Safe get other process or None if destination app is the other/same bitness

      +
      +
      Параметры
      +

      inUIOSelector – UIO Selector of the UI object

      +
      +
      Результат
      +

      None or process (of the other bitness)

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_SearchChildByMouse_UIO(inElementSpecification)[исходный код]
      +

      UIOSelector (see description on the top of the document) +#old name - AutomationSearchMouseElement

      +
      +
      Параметры
      +

      inElementSpecification – UIOSelector of the UI Object

      +
      +
      Результат
      +

      pywinauto element wrapper instance or None

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_SearchChildByMouse_UIOTree(inUIOSelector)[исходный код]
      +

      !!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!!

      +
      +
      Параметры
      +

      inUIOSelector – UIOSelector of the UI Object

      +
      +
      Результат
      +

      ?

      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelector_TryRestore_Dict(inSpecificationList)[исходный код]
      +

      Try to restore (maximize) window, if it’s minimized. (!IMPORTANT! When use UIA framework minimized windows doesn’t appear by the UIOSelector. You need to try restore windows and after that try to get UIO)

      +
      +
      Параметры
      +

      inSpecificationList – UIOSelector - List of items, which contains condition attributes

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelectorsSecs_WaitAppear_List(inSpecificationListList, inWaitSecs, inFlagWaitAllInMoment=False)[исходный код]
      +

      Wait for many UI object will appear in GUI for inWaitSecs seconds.

      +
      +
      Параметры
      +
        +
      • inSpecificationListList

        UIOSelector list. +Example: [

        +
        +

        [{«title»:»notepad»},{«title»:»OK»}], +[{«title»:»notepad»},{«title»:»Cancel»}]

        +
        +

        ]

        +

      • +
      • inWaitSecs – Float value (seconds) for wait UI element appear in GUI

      • +
      • inFlagWaitAllInMoment – True - Wait all UI objects from the UIOSelector list to be appeared

      • +
      +
      +
      Результат
      +

      List of index, which UI object UIO will be appeared. Example: [1] # Appear only UI object with UIO selector: [{«title»:»notepad»},{«title»:»Cancel»}]

      +
      +
      +
      + +
      +
      +pyOpenRPA.Robot.UIDesktop.UIOSelectorsSecs_WaitDisappear_List(inSpecificationListList, inWaitSecs, inFlagWaitAllInMoment=False)[исходный код]
      +

      Wait for many UI object will disappear in GUI for inWaitSecs seconds.

      +
      +
      Параметры
      +
        +
      • inSpecificationListList

        UIOSelector list. +Example: [

        +
        +

        [{«title»:»notepad»},{«title»:»OK»}], +[{«title»:»notepad»},{«title»:»Cancel»}]

        +
        +

        ]

        +

      • +
      • inWaitSecs – Float value (seconds) for wait UI element disappear in GUI

      • +
      • inFlagWaitAllInMoment – True - Wait all UI objects from the UIOSelector list to be disappeared.

      • +
      +
      +
      Результат
      +

      List of index, which UI object UIO will be disappeared. Example: [1] # Disappear only UI object with UIO selector: [{«title»:»notepad»},{«title»:»Cancel»}]

      +
      +
      Результат
      +

      +
      +
      +
      + +
      +

      References

      +

      reStructuredText 1

      +
      +
      1
      +

      http://docutils.sourceforge.net/rst.html

      +
      +
      +

      .. v1.2.12 replace:: v1.2.12 + .. |author| replace:: Ivan Maslov <ivan.maslov@unicodelabs.ru>

      +

      +
      +
      + + +
      + +
      + +
      +
      + +
      + +
      + + + + + + + + + + + \ No newline at end of file diff --git a/Wiki/RUS_Guide/html/Robot/03_HowToUse.html b/Wiki/RUS_Guide/html/Robot/08_HowToUse.html similarity index 95% rename from Wiki/RUS_Guide/html/Robot/03_HowToUse.html rename to Wiki/RUS_Guide/html/Robot/08_HowToUse.html index 88479567..39c5159d 100644 --- a/Wiki/RUS_Guide/html/Robot/03_HowToUse.html +++ b/Wiki/RUS_Guide/html/Robot/08_HowToUse.html @@ -7,7 +7,7 @@ - 3. Как использовать? — документация pyOpenRPA v1.2.12 v1.2.12 + 8. Как использовать? — документация pyOpenRPA v1.2.12 v1.2.12 @@ -41,8 +41,8 @@ - - + + @@ -97,7 +97,13 @@
      • 1. Описание
      • 2. Функции
      • -
      • 3. Как использовать?
          +
        • 2. UIDesktop
        • +
        • 3. UIWeb
        • +
        • 4. Keyboard
        • +
        • 5. Clipboard
        • +
        • 6. Mouse
        • +
        • 7. Image
        • +
        • 8. Как использовать?

          МОДУЛЬ СТУДИЯ

            @@ -198,13 +204,13 @@
          • »
          • -
          • 3. Как использовать?
          • +
          • 8. Как использовать?
          • - Просмотреть исходный код страницы + Просмотреть исходный код страницы
          • @@ -218,7 +224,7 @@
            -

            3. Как использовать?

            +

            8. Как использовать?

            The Robot tool is the main module for production process automation. It has no graphic/console interface. All low-level actions to OS are perfoming by the Robot tool in pyOpenRPA.

            How to execute RPA script

            @@ -422,8 +428,8 @@ More docs about selenium you can find here ( - - + +

            diff --git a/Wiki/RUS_Guide/html/Robot/04_Dependencies.html b/Wiki/RUS_Guide/html/Robot/09_Dependencies.html similarity index 86% rename from Wiki/RUS_Guide/html/Robot/04_Dependencies.html rename to Wiki/RUS_Guide/html/Robot/09_Dependencies.html index adcb8403..de449630 100644 --- a/Wiki/RUS_Guide/html/Robot/04_Dependencies.html +++ b/Wiki/RUS_Guide/html/Robot/09_Dependencies.html @@ -7,7 +7,7 @@ - 4. Зависимости — документация pyOpenRPA v1.2.12 v1.2.12 + 9. Зависимости — документация pyOpenRPA v1.2.12 v1.2.12 @@ -42,7 +42,7 @@ - + @@ -97,8 +97,14 @@

            МОДУЛЬ СТУДИЯ

              @@ -169,13 +175,13 @@
            • »
            • -
            • 4. Зависимости
            • +
            • 9. Зависимости
            • - Просмотреть исходный код страницы + Просмотреть исходный код страницы
            • @@ -189,7 +195,7 @@
              -

              4. Зависимости

              +

              9. Зависимости

              Python 3 x32 [psutil, pywinauto, wmi, PIL, keyboard, pyautogui, win32api (pywin32), selenium, openCV, tesseract, requests, lxml, PyMuPDF] Python 3 x64 [psutil, pywinauto, wmi, PIL, keyboard, pyautogui, win32api (pywin32), selenium, openCV, tesseract, requests, lxml, PyMuPDF] pywinauto (Windows GUI automation) @@ -208,7 +214,7 @@ Handlebars


              diff --git a/Wiki/RUS_Guide/html/Studio/01_Studio.html b/Wiki/RUS_Guide/html/Studio/01_Studio.html index b910aac1..033c1be2 100644 --- a/Wiki/RUS_Guide/html/Studio/01_Studio.html +++ b/Wiki/RUS_Guide/html/Studio/01_Studio.html @@ -42,7 +42,7 @@ - + @@ -97,8 +97,14 @@

              МОДУЛЬ СТУДИЯ

                @@ -188,8 +194,8 @@
                -
                -

                1. Описание

                +
                +

                1. Описание

                pyOpenRPA Studio is the executable process.

                .. v1.2.12 replace:: v1.2.12 .. |author| replace:: Ivan Maslov <ivan.maslov@unicodelabs.ru>

                @@ -203,7 +209,7 @@

                diff --git a/Wiki/RUS_Guide/html/Studio/02_HowToUse.html b/Wiki/RUS_Guide/html/Studio/02_HowToUse.html index 296067c8..c1dd695e 100644 --- a/Wiki/RUS_Guide/html/Studio/02_HowToUse.html +++ b/Wiki/RUS_Guide/html/Studio/02_HowToUse.html @@ -97,8 +97,14 @@

                МОДУЛЬ СТУДИЯ

                  diff --git a/Wiki/RUS_Guide/html/Tools/02_Defs.html b/Wiki/RUS_Guide/html/Tools/02_Defs.html index 4bf0f050..300cc694 100644 --- a/Wiki/RUS_Guide/html/Tools/02_Defs.html +++ b/Wiki/RUS_Guide/html/Tools/02_Defs.html @@ -96,8 +96,14 @@

                  МОДУЛЬ СТУДИЯ

                    diff --git a/Wiki/RUS_Guide/html/_modules/index.html b/Wiki/RUS_Guide/html/_modules/index.html index 4ec4a98e..587b4597 100644 --- a/Wiki/RUS_Guide/html/_modules/index.html +++ b/Wiki/RUS_Guide/html/_modules/index.html @@ -95,8 +95,14 @@

                    МОДУЛЬ СТУДИЯ

                      diff --git a/Wiki/RUS_Guide/html/_modules/pyOpenRPA/Agent/__Agent__.html b/Wiki/RUS_Guide/html/_modules/pyOpenRPA/Agent/__Agent__.html index 747790e3..3cca6f1c 100644 --- a/Wiki/RUS_Guide/html/_modules/pyOpenRPA/Agent/__Agent__.html +++ b/Wiki/RUS_Guide/html/_modules/pyOpenRPA/Agent/__Agent__.html @@ -95,8 +95,14 @@

                      МОДУЛЬ СТУДИЯ

                        diff --git a/Wiki/RUS_Guide/html/_modules/pyOpenRPA/Orchestrator/Managers/ControlPanel.html b/Wiki/RUS_Guide/html/_modules/pyOpenRPA/Orchestrator/Managers/ControlPanel.html index 0e3e8f4b..36c34b6a 100644 --- a/Wiki/RUS_Guide/html/_modules/pyOpenRPA/Orchestrator/Managers/ControlPanel.html +++ b/Wiki/RUS_Guide/html/_modules/pyOpenRPA/Orchestrator/Managers/ControlPanel.html @@ -95,8 +95,14 @@

                        МОДУЛЬ СТУДИЯ

                          diff --git a/Wiki/RUS_Guide/html/_modules/pyOpenRPA/Orchestrator/Managers/Process.html b/Wiki/RUS_Guide/html/_modules/pyOpenRPA/Orchestrator/Managers/Process.html index a7c3c850..4864d864 100644 --- a/Wiki/RUS_Guide/html/_modules/pyOpenRPA/Orchestrator/Managers/Process.html +++ b/Wiki/RUS_Guide/html/_modules/pyOpenRPA/Orchestrator/Managers/Process.html @@ -95,8 +95,14 @@

                          МОДУЛЬ СТУДИЯ

                            diff --git a/Wiki/RUS_Guide/html/_modules/pyOpenRPA/Orchestrator/Web/Basic.html b/Wiki/RUS_Guide/html/_modules/pyOpenRPA/Orchestrator/Web/Basic.html index 42a1ac35..8d8a00ec 100644 --- a/Wiki/RUS_Guide/html/_modules/pyOpenRPA/Orchestrator/Web/Basic.html +++ b/Wiki/RUS_Guide/html/_modules/pyOpenRPA/Orchestrator/Web/Basic.html @@ -95,8 +95,14 @@

                            МОДУЛЬ СТУДИЯ

                              diff --git a/Wiki/RUS_Guide/html/_modules/pyOpenRPA/Orchestrator/__Orchestrator__.html b/Wiki/RUS_Guide/html/_modules/pyOpenRPA/Orchestrator/__Orchestrator__.html index caf94c67..9444f678 100644 --- a/Wiki/RUS_Guide/html/_modules/pyOpenRPA/Orchestrator/__Orchestrator__.html +++ b/Wiki/RUS_Guide/html/_modules/pyOpenRPA/Orchestrator/__Orchestrator__.html @@ -95,8 +95,14 @@

                              МОДУЛЬ СТУДИЯ

                                diff --git a/Wiki/RUS_Guide/html/_modules/pyOpenRPA/Robot/UIDesktop.html b/Wiki/RUS_Guide/html/_modules/pyOpenRPA/Robot/UIDesktop.html index d56f6103..dc2547f4 100644 --- a/Wiki/RUS_Guide/html/_modules/pyOpenRPA/Robot/UIDesktop.html +++ b/Wiki/RUS_Guide/html/_modules/pyOpenRPA/Robot/UIDesktop.html @@ -95,8 +95,14 @@

                                МОДУЛЬ СТУДИЯ

                                  @@ -291,7 +297,7 @@ #inElement - Входной элемент - показатель, что не требуется выполнять коннект к процессу #inFlagRaiseException - Флаг True - выкинуть ошибку в случае обнаружении пустого списка #old name - PywinautoExtElementsGet -
                                  [документация]def UIOSelector_Get_UIOList (inSpecificationList,inElement=None,inFlagRaiseException=True): +
                                  [документация]def UIOSelector_Get_UIOList (inSpecificationList,inElement=None,inFlagRaiseException=True): ''' Get the UIO list by the selector @@ -428,7 +434,7 @@ #inElement - Входной элемент - показатель, что не требуется выполнять коннект к процессу #inFlagRaiseException - Флаг True - выкинуть ошибку в случае обнаружении пустого списка #old name - PywinautoExtElementGet -
                                  [документация]def UIOSelector_Get_UIO (inSpecificationList,inElement=None,inFlagRaiseException=True): +
                                  [документация]def UIOSelector_Get_UIO (inSpecificationList,inElement=None,inFlagRaiseException=True): ''' Get the pywinauto object by the UIO selector. @@ -451,7 +457,7 @@ #!!!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!! #UIOSelector #old name - - -
                                  [документация]def UIOSelector_Exist_Bool (inUIOSelector): +
                                  [документация]def UIOSelector_Exist_Bool (inUIOSelector): ''' Check if object is exist by the UIO selector. @@ -490,7 +496,7 @@ #old name - - #####Внимание##### ##Функция ожидания появления элементов (тк элементы могут быть недоступны, неизвестно в каком фреймворке каждый из них может появиться) -
                                  [документация]def UIOSelectorsSecs_WaitAppear_List (inSpecificationListList,inWaitSecs,inFlagWaitAllInMoment=False): +
                                  [документация]def UIOSelectorsSecs_WaitAppear_List (inSpecificationListList,inWaitSecs,inFlagWaitAllInMoment=False): ''' Wait for many UI object will appear in GUI for inWaitSecs seconds. @@ -541,7 +547,7 @@ #old name - - #####Внимание##### ##Функция ожидания пропажи элементов (тк элементы могут быть недоступны, неизвестно в каком фреймворке каждый из них может появиться) -
                                  [документация]def UIOSelectorsSecs_WaitDisappear_List (inSpecificationListList,inWaitSecs,inFlagWaitAllInMoment=False): +
                                  [документация]def UIOSelectorsSecs_WaitDisappear_List (inSpecificationListList,inWaitSecs,inFlagWaitAllInMoment=False): ''' Wait for many UI object will disappear in GUI for inWaitSecs seconds. @@ -590,7 +596,7 @@ #inWaitSecs - Время ожидания объекта в секундах #return: Bool - True - UIO is appear #old name - - -
                                  [документация]def UIOSelectorSecs_WaitAppear_Bool (inSpecificationList,inWaitSecs): +
                                  [документация]def UIOSelectorSecs_WaitAppear_Bool (inSpecificationList,inWaitSecs): ''' Wait for UI object will appear in GUI for inWaitSecs seconds. @@ -609,7 +615,7 @@ #inWaitSecs - Время ожидания пропажи объекта в секундах #return: Bool - True - UIO is Disappear #old name - - -
                                  [документация]def UIOSelectorSecs_WaitDisappear_Bool (inSpecificationList,inWaitSecs): +
                                  [документация]def UIOSelectorSecs_WaitDisappear_Bool (inSpecificationList,inWaitSecs): ''' Wait for UI object will disappear in GUI for inWaitSecs seconds. @@ -628,7 +634,7 @@ #inSpecificationList - UIOSelector #old name - None #return None (if Process not found), int 32, or int 64 -
                                  [документация]def UIOSelector_Get_BitnessInt (inSpecificationList): +
                                  [документация]def UIOSelector_Get_BitnessInt (inSpecificationList): ''' Detect process bitness by the UI Object UIO Selector. @@ -649,7 +655,7 @@ #inSpecificationList - UIOSelector #old name - None #return None (if Process not found), int 32, or int 64 -
                                  [документация]def UIOSelector_Get_BitnessStr (inSpecificationList): +
                                  [документация]def UIOSelector_Get_BitnessStr (inSpecificationList): ''' Detect process bitness by the UI Object UIO Selector. @@ -669,7 +675,7 @@ #Get OS bitness (32 or 64) #old name - None #return int 32, or int 64 -
                                  [документация]def Get_OSBitnessInt (): +
                                  [документация]def Get_OSBitnessInt (): ''' Detect OS bitness. @@ -680,7 +686,7 @@ lResult=64 return lResult
                                  ################################################################################################# -
                                  [документация]def UIOSelector_SafeOtherGet_Process(inUIOSelector): +
                                  [документация]def UIOSelector_SafeOtherGet_Process(inUIOSelector): ''' Safe get other process or None if destination app is the other/same bitness @@ -697,7 +703,7 @@ lResult = Utils.ProcessBitness.OtherProcessGet() return lResult
                                  ################################################################################################## -
                                  [документация]def PWASpecification_Get_UIO(inControlSpecificationArray): +
                                  [документация]def PWASpecification_Get_UIO(inControlSpecificationArray): ''' #Backend def selection - attribute "backend" ("win32" || "uia") in 1-st list element #old name - GetControl @@ -751,7 +757,7 @@ lResultList.append(lTempObject) return lResultList
                                  ################################################################################################## -
                                  [документация]def PWASpecification_Get_PWAApplication(inControlSpecificationArray): +
                                  [документация]def PWASpecification_Get_PWAApplication(inControlSpecificationArray): ''' #Backend selection - attribute "backend" ("win32" || "uia") in 1-st list element @@ -789,7 +795,7 @@ return lTempObject
                                  ########################################################################################################### -
                                  [документация]def UIOSelector_SearchChildByMouse_UIO(inElementSpecification): +
                                  [документация]def UIOSelector_SearchChildByMouse_UIO(inElementSpecification): ''' UIOSelector (see description on the top of the document) #old name - AutomationSearchMouseElement @@ -836,7 +842,7 @@ #################################################################################################### #old name - AutomationSearchMouseElementHierarchy -
                                  [документация]def UIOSelector_SearchChildByMouse_UIOTree(inUIOSelector): +
                                  [документация]def UIOSelector_SearchChildByMouse_UIOTree(inUIOSelector): ''' !!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!! @@ -970,7 +976,7 @@ #(особенность uia backend - он не может прицепиться к окну, если оно свернуто) #inSpecificationList - UIOSelector #old name - PywinautoExtTryToRestore -
                                  [документация]def UIOSelector_TryRestore_Dict(inSpecificationList): +
                                  [документация]def UIOSelector_TryRestore_Dict(inSpecificationList): """ Try to restore (maximize) window, if it's minimized. (!IMPORTANT! When use UIA framework minimized windows doesn't appear by the UIOSelector. You need to try restore windows and after that try to get UIO) @@ -994,7 +1000,7 @@ #!!!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!! #inControlSpecificationArray - UIOSelector #old name - ElementActionGetList -
                                  [документация]def UIOSelector_Get_UIOActivityList (inUIOSelector): +
                                  [документация]def UIOSelector_Get_UIOActivityList (inUIOSelector): """ Get the list of the UI object activities @@ -1038,7 +1044,7 @@ #inUIOSelector #inActionName - UIOActivity (name) from Pywinauto #old name - ElementRunAction -
                                  [документация]def UIOSelectorUIOActivity_Run_Dict(inUIOSelector, inActionName, inArgumentList=None, inkwArgumentObject=None): +
                                  [документация]def UIOSelectorUIOActivity_Run_Dict(inUIOSelector, inActionName, inArgumentList=None, inkwArgumentObject=None): """ Run the activity in UIO (UI Object) @@ -1096,7 +1102,7 @@ #Get the UIO dict of the attributes #!!!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!! #old name - ElementGetInfo -
                                  [документация]def UIOSelector_Get_UIOInfo(inUIOSelector): +
                                  [документация]def UIOSelector_Get_UIOInfo(inUIOSelector): """ Get the UIO dict of the attributes @@ -1227,7 +1233,7 @@ #!!!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!! #inControlSpecificationArray- UIOSelector #old name - ElementGetChildElementList -
                                  [документация]def UIOSelector_GetChildList_UIOList(inUIOSelector=None, inBackend=mDefaultPywinautoBackend): +
                                  [документация]def UIOSelector_GetChildList_UIOList(inUIOSelector=None, inBackend=mDefaultPywinautoBackend): """ Get list of child UIO's by the parent UIOSelector @@ -1525,7 +1531,7 @@ #Highlight the UI object #!!!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!! #old name - ElementDrawOutlineNew -
                                  [документация]def UIOSelector_Highlight(inUIOSelector): +
                                  [документация]def UIOSelector_Highlight(inUIOSelector): """ Highlight (draw outline) the element (in app) by the UIO selector. @@ -1556,7 +1562,7 @@ #inSpecificationArray - UIOSelector #!!!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!! #old name - ElementDrawOutlineNewFocus -
                                  [документация]def UIOSelector_FocusHighlight(inUIOSelector): +
                                  [документация]def UIOSelector_FocusHighlight(inUIOSelector): """ Set focus and highlight (draw outline) the element (in app) by the UIO selector. diff --git a/Wiki/RUS_Guide/html/_modules/pyOpenRPA/Tools/Debugger.html b/Wiki/RUS_Guide/html/_modules/pyOpenRPA/Tools/Debugger.html index 0eb2ed8d..45e1952f 100644 --- a/Wiki/RUS_Guide/html/_modules/pyOpenRPA/Tools/Debugger.html +++ b/Wiki/RUS_Guide/html/_modules/pyOpenRPA/Tools/Debugger.html @@ -95,8 +95,14 @@

                                  МОДУЛЬ СТУДИЯ

                                    diff --git a/Wiki/RUS_Guide/html/_modules/pyOpenRPA/Tools/StopSafe.html b/Wiki/RUS_Guide/html/_modules/pyOpenRPA/Tools/StopSafe.html index d5402266..6de95eb5 100644 --- a/Wiki/RUS_Guide/html/_modules/pyOpenRPA/Tools/StopSafe.html +++ b/Wiki/RUS_Guide/html/_modules/pyOpenRPA/Tools/StopSafe.html @@ -95,8 +95,14 @@

                                    МОДУЛЬ СТУДИЯ

                                      diff --git a/Wiki/RUS_Guide/html/_sources/03_Copyrights_Contacts.rst.txt b/Wiki/RUS_Guide/html/_sources/03_Copyrights_Contacts.rst.txt index 2f4cdffb..7540ce47 100644 --- a/Wiki/RUS_Guide/html/_sources/03_Copyrights_Contacts.rst.txt +++ b/Wiki/RUS_Guide/html/_sources/03_Copyrights_Contacts.rst.txt @@ -19,24 +19,43 @@ If you will find some issue in pyOpenRPA - write about it to me via e-mail/skype Thank you! ************************************************** -Ivan Maslov (CEO & FOUNDER) +Центр поддержки клиентов ************************************************** -Our contacts: -- E-mail: Ivan.Maslov@pyOpenRPA.ru -- Skype: MegaFinder -- Web: https://pyopenrpa.ru/ -- Telegram: https://t.me/pyopenrpa -- WhatsApp | Telegram: +7 906 722 39 25 | @IvanMaslov +У вас остались вопросы? Мы вам поможем! +- Телефон/WhatsApp: +7 (995) 233-45-31 +- Почта: Support@pyOpenRPA.ru +- Телеграм: @pyOpenRPA_support +- Портал: https://pyopenrpa.ru/ +- Телеграм канал: @pyOpenRPA_support ************************************************** -3-rd party components license dependencies +Иван Маслов (Основатель & генеральный директор) ************************************************** -- WinPython 3.7.1 32-bit & 64-bit, license MIT (https://github.com/winpython/winpython) -- Selenium v..., license Apache 2.0 -- pywinauto 0.6.5, license BSD 3-Clause (https://github.com/pywinauto/pywinauto) -- Semantic UI ..., license MIT (https://github.com/Semantic-Org/Semantic-UI) -- PyAutoGUI ..., license BSD 3-Clause (https://github.com/asweigart/pyautogui) -- keyboard ..., license MIT (https://github.com/boppreh/keyboard) -- pywin32 ..., Python Software Foundation License (PSF) (https://github.com/mhammond/pywin32) \ No newline at end of file + +- Телефон/WhatsApp: +7 (906) 722-39-25 +- Почта: Ivan.Maslov@pyOpenRPA.ru +- Телеграм: @IvanMaslov +- Портал: https://pyopenrpa.ru/ +- Телеграм канал: @pyOpenRPA_support + + +************************************************** +Используемые сторонние компоненты (лицензионная чистота) +************************************************** + +- WinPython, v3.7.1 32-bit & 64-bit, лицензия MIT (https://github.com/winpython/winpython) +- Selenium, v..., лицензия Apache 2.0 (https://github.com/SeleniumHQ/selenium/blob/trunk/LICENSE) +- pywinauto, v0.6.5, лицензия BSD 3-Clause (https://github.com/pywinauto/pywinauto) +- Semantic UI, v..., лицензия MIT (https://github.com/Semantic-Org/Semantic-UI) +- PyAutoGUI, v..., лицензия BSD 3-Clause (https://github.com/asweigart/pyautogui) +- keyboard, v..., лицензия MIT (https://github.com/boppreh/keyboard) +- pywin32 (win32api), v..., Python Software Foundation лицензия (PSF) (https://github.com/mhammond/pywin32) +- WMI, v..., лицензия MIT, (http://www.opensource.org/licenses/mit-license.php) +- psutil, v..., лицензия BSD 3-Clause (https://github.com/giampaolo/psutil/blob/master/LICENSE) +- Pillow PIL, v..., лицензия HPND (https://github.com/python-pillow/Pillow/blob/main/LICENSE) +- requests, v..., лицензия Apache 2.0 (https://github.com/psf/requests/blob/main/LICENSE) +- JsRender, v..., лицензия MIT (https://github.com/BorisMoore/jsrender/blob/master/MIT-LICENSE.txt) +- Handlebars, v..., лицензия MIT, (https://github.com/handlebars-lang/handlebars.js/blob/master/LICENSE) +- jinja2, v..., лицензия BSD 3-Clause, (https://github.com/pallets/jinja/blob/main/LICENSE.rst) \ No newline at end of file diff --git a/Wiki/RUS_Guide/html/_sources/Robot/01_Robot.rst.txt b/Wiki/RUS_Guide/html/_sources/Robot/01_Robot.rst.txt index c2c929eb..301b1c1f 100644 --- a/Wiki/RUS_Guide/html/_sources/Robot/01_Robot.rst.txt +++ b/Wiki/RUS_Guide/html/_sources/Robot/01_Robot.rst.txt @@ -1,22 +1,113 @@ +.. _module.robot.description: + ************************ 1. Описание ************************ -pyOpenRPA Robot is the python package which allow you to create best RPA program. +Модуль обеспечивает всю необходимую функциональность для создания любого программного робота RPA. Модуль робота поставляется в качестве библиотеки Python, что позволяет с легкостью интегрировать его в другие проекты перспективных технологий. + +**Содержит** + +- Уровень доступа к элементам локального приложения (win32, UI automation), и веб приложения + + - UIDesktop: инструменты взаимодействия с элементами локального приложения (взаимодействие с ОС через протоколы win32, UI automation). Перейти к описанию функций: :ref:`module.robot.uidesktop` + - UIWeb: инструменты взаимодействия с элементами веб приложения. Перейти к описанию функций: :ref:`module.robot.uiweb` + +- Уровень доступа к текстовым каналам передачи данных (клавиатура, буфер обмена) + + - Keyboard: инструменты взаимодействия с клавиатурой. Перейти к описанию функций: :ref:`module.robot.keyboard` + - Clipboard: инструменты взаимодействия с буфером обмена. Перейти к описанию функций: :ref:`module.robot.clipboard` + +- Уровень доступа к графическим каналам передачи данных (мышь, экран) + + - Mouse: инструменты взаимодействия с мышью. Перейти к описанию функций: :ref:`module.robot.mouse` + - Image: инструменты взаимодействия с эраном рабочего стола. Перейти к описанию функций: :ref:`module.robot.image` -The description of the functions you can find page 'Defs' (see menu) -Here is the example of the pyOpenRPA usage. +Ниже преставлен пример использования инструментов робота. .. code-block:: python - # EXAMPLE 1 - from pyOpenRPA.Robot import UIDesktop + import time + from pyOpenRPA.Robot import UIDesktop + + # UIDesktop: Работа с 1С + lDemoBaseSelector = [{"title":"Запуск 1С:Предприятия","class_name":"V8TopLevelFrameTaxiStarter","backend":"uia"},{"title":"DEMO", "depth_start": 5, "depth_end": 5}] + lDemoBase = UIDesktop.UIOSelector_Get_UIO(lDemoBaseSelector) + lDemoBase.draw_outline() + time.sleep(2.0) + lRunBaseSelector = [{"title":"Запуск 1С:Предприятия","class_name":"V8TopLevelFrameTaxiStarter","backend":"uia"},{"title":"1С:Предприятие", "depth_start": 4, "depth_end": 4}] + lRunBase = UIDesktop.UIOSelector_Get_UIO(lRunBaseSelector) + lRunBase.draw_outline() + time.sleep(2.0) + lRunBase.click_input() + + # ОТКРЫТЬ ЗАКАЗЫ ПОКУПАТЕЛЕЙ + lOrderNumberSelector = [{"title":"Управление нашей фирмой, редакция 1.6","class_name":"V8TopLevelFrameSDI","backend":"uia"},{"title":"АСФР-000036 Номер", "depth_start": 13, "depth_end": 13}] + UIDesktop.UIOSelector_Get_UIO(lOrderNumberSelector).draw_outline() + UIDesktop.UIOSelector_Get_UIO(lOrderNumberSelector).double_click_input() + + time.sleep(1.0) + lCommentSelector = [{"title":"Управление нашей фирмой, редакция 1.6","class_name":"V8TopLevelFrameSDI","backend":"uia"},{"control_type":"Pane"},{"control_type":"Pane"},{"control_type":"Pane"},{"control_type":"Pane"},{"control_type":"Pane"},{"control_type":"Pane"},{"control_type":"Pane"},{"title":"","control_type":"Edit", "depth_start": 1, "depth_end": 10}] + UIDesktop.UIOSelector_Get_UIO(lCommentSelector).draw_outline() + UIDesktop.UIOSelector_Get_UIO(lCommentSelector).set_edit_text("Заказ исполнен роботом") + + # UIWeb: Работа с браузером + # WIKI TO DO + + # Keyboard: Взаимодействие с клавиатурой + import ctypes # An included library with Python install. + from pyOpenRPA.Robot import Keyboard + from pyOpenRPA.Robot import Clipboard + Keyboard.send("win+r") + time.sleep(0.3) + Keyboard.write("cmd") + time.sleep(0.3) + Keyboard.send("enter") + time.sleep(0.6) + Keyboard.write("echo %time%") + time.sleep(0.3) + Keyboard.send("enter") + time.sleep(0.3) + Keyboard.send("ctrl+a") + time.sleep(0.6) + Clipboard.ClipboardSet("") + Keyboard.send("ctrl+c") + time.sleep(0.6) + lTextRaw = Clipboard.ClipboardGet() + lTimeStr = lTextRaw.split("\n")[-3] + + def msg_box(title, text, style): + return ctypes.windll.user32.MessageBoxW(0, text, title, style) + msg_box('Робот на клавиатуре', f'Робот извлек время из консоли: {lTimeStr}', 0) + + # Mouse: Взаимодействие с мышью + from pyOpenRPA.Robot import Mouse + # Нарисовать букву Я + x = -50 + y = 150 + Mouse.mouseDown(x+100,y+0) + Mouse.moveTo(x+100,y+100) + Mouse.moveTo(x+100,y+50) + Mouse.moveTo(x+80,y+30) + Mouse.moveTo(x+100,y+0) + Mouse.moveTo(x+100,y+50) + Mouse.moveTo(x+80,y+100) + Mouse.mouseUp() + + time.sleep(0.5) + # Нарисовать :) + x = 230 + y = 150 + Mouse.mouseDown(x+0,y+0) + Mouse.moveTo(x+0,y+75) + Mouse.mouseUp() - lNotepadOKButton = UIDesktop.UIOSelector_Get_UIO( - inSpecificationList=[ - {"title":"notepad.exe"},{"title":"OK"}], - inElement=None, - inFlagRaiseException=True) + Mouse.mouseDown(x+75,y+0) + Mouse.moveTo(x+75,y+75) + Mouse.mouseUp() - lNotepadOKButton.click() + Mouse.mouseDown(x-30,y+90) + Mouse.moveTo(x+40,y+130) + Mouse.moveTo(x+105,y+90) + Mouse.mouseUp() \ No newline at end of file diff --git a/Wiki/RUS_Guide/html/_sources/Robot/02_uidesktop.rst.txt b/Wiki/RUS_Guide/html/_sources/Robot/02_uidesktop.rst.txt new file mode 100644 index 00000000..2ad32908 --- /dev/null +++ b/Wiki/RUS_Guide/html/_sources/Robot/02_uidesktop.rst.txt @@ -0,0 +1,38 @@ +.. _module.robot.uidesktop: + +#################################### +2. UIDesktop +#################################### + +Here you can find the functions description for interaction with desktop GUI applications + +How to use both x32 and x64 python processes (it can be helpfully, if another app GUI is on another bitness than your app) + +.. code-block:: python + + from pyOpenRPA.Robot import UIDesktop + #Section for robot init + lPyOpenRPA_SettingsDict = { + "Python32FullPath": "..\\Resources\\WPy32-3720\\python-3.7.2\\python.exe", #Set from user: "..\\Resources\\WPy32-3720\\python-3.7.2\\OpenRPARobotGUIx32.exe" + "Python64FullPath": "..\\Resources\\WPy64-3720\\python-3.7.2.amd64\\python.exe", #Set from user + "Python32ProcessName": "pyOpenRPA_UIDesktopX32.exe", #Config set once + "Python64ProcessName": "pyOpenRPA_UIDesktopX64.exe" #Config set once + } + # Init the pyOpenRPA configuration + UIDesktop.Utils.ProcessBitness.SettingsInit(lPyOpenRPA_SettingsDict) + # Now you can use pyOpenRPA with both bitness. + + +.. automodule:: pyOpenRPA.Robot.UIDesktop + :members: + :autosummary: + + +********** +References +********** + +`reStructuredText`_ + +.. target-notes:: +.. _`reStructuredText`: http://docutils.sourceforge.net/rst.html diff --git a/Wiki/RUS_Guide/html/_sources/Robot/03_uiweb.rst.txt b/Wiki/RUS_Guide/html/_sources/Robot/03_uiweb.rst.txt new file mode 100644 index 00000000..80946577 --- /dev/null +++ b/Wiki/RUS_Guide/html/_sources/Robot/03_uiweb.rst.txt @@ -0,0 +1,38 @@ +.. _module.robot.uiweb: + +#################################### +3. UIWeb +#################################### + +Here you can find the functions description for interaction with desktop GUI applications + +How to use both x32 and x64 python processes (it can be helpfully, if another app GUI is on another bitness than your app) + +.. code-block:: python + + from pyOpenRPA.Robot import UIDesktop + #Section for robot init + lPyOpenRPA_SettingsDict = { + "Python32FullPath": "..\\Resources\\WPy32-3720\\python-3.7.2\\python.exe", #Set from user: "..\\Resources\\WPy32-3720\\python-3.7.2\\OpenRPARobotGUIx32.exe" + "Python64FullPath": "..\\Resources\\WPy64-3720\\python-3.7.2.amd64\\python.exe", #Set from user + "Python32ProcessName": "pyOpenRPA_UIDesktopX32.exe", #Config set once + "Python64ProcessName": "pyOpenRPA_UIDesktopX64.exe" #Config set once + } + # Init the pyOpenRPA configuration + UIDesktop.Utils.ProcessBitness.SettingsInit(lPyOpenRPA_SettingsDict) + # Now you can use pyOpenRPA with both bitness. + + +.. automodule:: pyOpenRPA.Robot.UIDesktop + :members: + :autosummary: + + +********** +References +********** + +`reStructuredText`_ + +.. target-notes:: +.. _`reStructuredText`: http://docutils.sourceforge.net/rst.html diff --git a/Wiki/RUS_Guide/html/_sources/Robot/04_keyboard.rst.txt b/Wiki/RUS_Guide/html/_sources/Robot/04_keyboard.rst.txt new file mode 100644 index 00000000..b3f0f318 --- /dev/null +++ b/Wiki/RUS_Guide/html/_sources/Robot/04_keyboard.rst.txt @@ -0,0 +1,38 @@ +.. _module.robot.keyboard: + +#################################### +4. Keyboard +#################################### + +Here you can find the functions description for interaction with desktop GUI applications + +How to use both x32 and x64 python processes (it can be helpfully, if another app GUI is on another bitness than your app) + +.. code-block:: python + + from pyOpenRPA.Robot import UIDesktop + #Section for robot init + lPyOpenRPA_SettingsDict = { + "Python32FullPath": "..\\Resources\\WPy32-3720\\python-3.7.2\\python.exe", #Set from user: "..\\Resources\\WPy32-3720\\python-3.7.2\\OpenRPARobotGUIx32.exe" + "Python64FullPath": "..\\Resources\\WPy64-3720\\python-3.7.2.amd64\\python.exe", #Set from user + "Python32ProcessName": "pyOpenRPA_UIDesktopX32.exe", #Config set once + "Python64ProcessName": "pyOpenRPA_UIDesktopX64.exe" #Config set once + } + # Init the pyOpenRPA configuration + UIDesktop.Utils.ProcessBitness.SettingsInit(lPyOpenRPA_SettingsDict) + # Now you can use pyOpenRPA with both bitness. + + +.. automodule:: pyOpenRPA.Robot.UIDesktop + :members: + :autosummary: + + +********** +References +********** + +`reStructuredText`_ + +.. target-notes:: +.. _`reStructuredText`: http://docutils.sourceforge.net/rst.html diff --git a/Wiki/RUS_Guide/html/_sources/Robot/05_clipboard.rst.txt b/Wiki/RUS_Guide/html/_sources/Robot/05_clipboard.rst.txt new file mode 100644 index 00000000..d733784a --- /dev/null +++ b/Wiki/RUS_Guide/html/_sources/Robot/05_clipboard.rst.txt @@ -0,0 +1,38 @@ +.. _module.robot.clipboard: + +#################################### +5. Clipboard +#################################### + +Here you can find the functions description for interaction with desktop GUI applications + +How to use both x32 and x64 python processes (it can be helpfully, if another app GUI is on another bitness than your app) + +.. code-block:: python + + from pyOpenRPA.Robot import UIDesktop + #Section for robot init + lPyOpenRPA_SettingsDict = { + "Python32FullPath": "..\\Resources\\WPy32-3720\\python-3.7.2\\python.exe", #Set from user: "..\\Resources\\WPy32-3720\\python-3.7.2\\OpenRPARobotGUIx32.exe" + "Python64FullPath": "..\\Resources\\WPy64-3720\\python-3.7.2.amd64\\python.exe", #Set from user + "Python32ProcessName": "pyOpenRPA_UIDesktopX32.exe", #Config set once + "Python64ProcessName": "pyOpenRPA_UIDesktopX64.exe" #Config set once + } + # Init the pyOpenRPA configuration + UIDesktop.Utils.ProcessBitness.SettingsInit(lPyOpenRPA_SettingsDict) + # Now you can use pyOpenRPA with both bitness. + + +.. automodule:: pyOpenRPA.Robot.UIDesktop + :members: + :autosummary: + + +********** +References +********** + +`reStructuredText`_ + +.. target-notes:: +.. _`reStructuredText`: http://docutils.sourceforge.net/rst.html diff --git a/Wiki/RUS_Guide/html/_sources/Robot/06_mouse.rst.txt b/Wiki/RUS_Guide/html/_sources/Robot/06_mouse.rst.txt new file mode 100644 index 00000000..ca52389d --- /dev/null +++ b/Wiki/RUS_Guide/html/_sources/Robot/06_mouse.rst.txt @@ -0,0 +1,38 @@ +.. _module.robot.mouse: + +#################################### +6. Mouse +#################################### + +Here you can find the functions description for interaction with desktop GUI applications + +How to use both x32 and x64 python processes (it can be helpfully, if another app GUI is on another bitness than your app) + +.. code-block:: python + + from pyOpenRPA.Robot import UIDesktop + #Section for robot init + lPyOpenRPA_SettingsDict = { + "Python32FullPath": "..\\Resources\\WPy32-3720\\python-3.7.2\\python.exe", #Set from user: "..\\Resources\\WPy32-3720\\python-3.7.2\\OpenRPARobotGUIx32.exe" + "Python64FullPath": "..\\Resources\\WPy64-3720\\python-3.7.2.amd64\\python.exe", #Set from user + "Python32ProcessName": "pyOpenRPA_UIDesktopX32.exe", #Config set once + "Python64ProcessName": "pyOpenRPA_UIDesktopX64.exe" #Config set once + } + # Init the pyOpenRPA configuration + UIDesktop.Utils.ProcessBitness.SettingsInit(lPyOpenRPA_SettingsDict) + # Now you can use pyOpenRPA with both bitness. + + +.. automodule:: pyOpenRPA.Robot.UIDesktop + :members: + :autosummary: + + +********** +References +********** + +`reStructuredText`_ + +.. target-notes:: +.. _`reStructuredText`: http://docutils.sourceforge.net/rst.html diff --git a/Wiki/RUS_Guide/html/_sources/Robot/07_image.rst.txt b/Wiki/RUS_Guide/html/_sources/Robot/07_image.rst.txt new file mode 100644 index 00000000..3a0959e7 --- /dev/null +++ b/Wiki/RUS_Guide/html/_sources/Robot/07_image.rst.txt @@ -0,0 +1,38 @@ +.. _module.robot.image: + +#################################### +7. Image +#################################### + +Here you can find the functions description for interaction with desktop GUI applications + +How to use both x32 and x64 python processes (it can be helpfully, if another app GUI is on another bitness than your app) + +.. code-block:: python + + from pyOpenRPA.Robot import UIDesktop + #Section for robot init + lPyOpenRPA_SettingsDict = { + "Python32FullPath": "..\\Resources\\WPy32-3720\\python-3.7.2\\python.exe", #Set from user: "..\\Resources\\WPy32-3720\\python-3.7.2\\OpenRPARobotGUIx32.exe" + "Python64FullPath": "..\\Resources\\WPy64-3720\\python-3.7.2.amd64\\python.exe", #Set from user + "Python32ProcessName": "pyOpenRPA_UIDesktopX32.exe", #Config set once + "Python64ProcessName": "pyOpenRPA_UIDesktopX64.exe" #Config set once + } + # Init the pyOpenRPA configuration + UIDesktop.Utils.ProcessBitness.SettingsInit(lPyOpenRPA_SettingsDict) + # Now you can use pyOpenRPA with both bitness. + + +.. automodule:: pyOpenRPA.Robot.UIDesktop + :members: + :autosummary: + + +********** +References +********** + +`reStructuredText`_ + +.. target-notes:: +.. _`reStructuredText`: http://docutils.sourceforge.net/rst.html diff --git a/Wiki/RUS_Guide/html/_sources/Robot/03_HowToUse.rst.txt b/Wiki/RUS_Guide/html/_sources/Robot/08_HowToUse.rst.txt similarity index 99% rename from Wiki/RUS_Guide/html/_sources/Robot/03_HowToUse.rst.txt rename to Wiki/RUS_Guide/html/_sources/Robot/08_HowToUse.rst.txt index a771a294..5259e73b 100644 --- a/Wiki/RUS_Guide/html/_sources/Robot/03_HowToUse.rst.txt +++ b/Wiki/RUS_Guide/html/_sources/Robot/08_HowToUse.rst.txt @@ -1,5 +1,5 @@ #################################### -3. Как использовать? +8. Как использовать? #################################### The Robot tool is the main module for production process automation. It has no graphic/console interface. All low-level actions to OS are perfoming by the Robot tool in pyOpenRPA. diff --git a/Sources/GuideSphinx/Robot/04_Dependencies.rst b/Wiki/RUS_Guide/html/_sources/Robot/09_Dependencies.rst.txt similarity index 92% rename from Sources/GuideSphinx/Robot/04_Dependencies.rst rename to Wiki/RUS_Guide/html/_sources/Robot/09_Dependencies.rst.txt index f81546d8..ce74f304 100644 --- a/Sources/GuideSphinx/Robot/04_Dependencies.rst +++ b/Wiki/RUS_Guide/html/_sources/Robot/09_Dependencies.rst.txt @@ -1,5 +1,5 @@ #################################### -4. Зависимости +9. Зависимости #################################### Python 3 x32 [psutil, pywinauto, wmi, PIL, keyboard, pyautogui, win32api (pywin32), selenium, openCV, tesseract, requests, lxml, PyMuPDF] diff --git a/Wiki/RUS_Guide/html/_sources/Studio/01_Studio.rst.txt b/Wiki/RUS_Guide/html/_sources/Studio/01_Studio.rst.txt index 85c02381..45c773bb 100644 --- a/Wiki/RUS_Guide/html/_sources/Studio/01_Studio.rst.txt +++ b/Wiki/RUS_Guide/html/_sources/Studio/01_Studio.rst.txt @@ -1,3 +1,5 @@ +.. _module.studio.description: + ************************ 1. Описание ************************ diff --git a/Wiki/RUS_Guide/html/_sources/index.rst.txt b/Wiki/RUS_Guide/html/_sources/index.rst.txt index 7b45c969..5e7e861b 100644 --- a/Wiki/RUS_Guide/html/_sources/index.rst.txt +++ b/Wiki/RUS_Guide/html/_sources/index.rst.txt @@ -15,7 +15,7 @@ ************************************************** Добро пожаловать на портал документации pyOpenRPA. -pyOpenRPA - это самое прогрессивное и технологичное RPA решение на рынке роботизации. Наших роботов невозможно отключить принудительно - управлять ими будете только вы! +pyOpenRPA - это самое прогрессивное и технологичное RPA решение на рынке роботизации (открытый код). Наших роботов невозможно отключить принудительно - управлять ими будете только вы! Вместе с pyOpenRPA стало возможно сочетать в рамках одного проекта все перспективные технологии, такие как: * распознавание, @@ -31,87 +31,60 @@ pyOpenRPA - это самое прогрессивное и технологич Наша открытость и ряд стратегических инициатив позволяют с легкостью привлекать сотни новых специалистов и клиентов. Быть предельно прозрачными перед всеми участниками рынка. Предлагать индивидуальный набор услуг, нацеленный именно на решение проблем клиента. -С презентацией pyOpenRPA вы можете ознакомиться по ссылке: `[СМОТРЕТЬ PDF] `_ Если возникнут вопросы, то вы всегда можете обратиться к нам! +С презентацией pyOpenRPA вы можете ознакомиться по ссылке: `[СМОТРЕТЬ PDF] `_ . Если возникнут вопросы, то вы всегда можете обратиться к нам (контакты см. в презентации). pyOpenRPA - роботы вам помогут! **Иван Маслов, основатель и генеральный директор pyOpenRPA LLC** - -ВЕРСИЯ |release| - -*by Ivan Maslov (Russia)* - see :ref:`3.-Copyrights-&-Contacts`. - -! ATTENTION ! pyOpenRPA works only on MS Windows 7+/Server 2008+. Guys from Unix/Mac - sorry. We will come to you soon :) - - ************************************************** -About +О портале ************************************************** -Dear RPA-tors. Let me congratulate you with great change in the RPA world. Since 2019 the first enterprise level open source RPA platform is here! - -pyOpenRPA is absolutely open source commercial project. Hosted by LLC PYOPENRPA (RUSSIA) -The pyOpenRPA - free, fast and reliable -Powerful OpenSource RPA tool for business (based on python 3). Best performance and absolutely free! +Портал состоит из следующих разделов: +############################################ +- ОБЩЕЕ +- МОДУЛЬ РОБОТ +- МОДУЛЬ СТУДИЯ +- МОДУЛЬ ОРКЕСТРАТОР +- МОДУЛЬ АГЕНТ +- ИНСТРУМЕНТЫ -The pyOpenRPA is based on Python and using well known OpenSource solutions such as Selenium, OpenCV, Win32, UI automation and others. Thanks to it we were able to create consolidated platform with all possible features. -The pyOpenRPA is distributed under the PYOPENRPA open license. -At the time of this writing the pyOpenRPA is successfully using in several big Russian companies. Companies in which it was decided to develop own RPA division with no dependencies on expensive licenses. -************************************************** -Repo structure -************************************************** +ОБЩЕЕ +###################### +В разделе описание общие положения, такие как: Описание структуры портала, инструкция по развертыванию и запуску pyOpenRPA, информация о правообладателе, контакты. -The description of the each folder in GitLab repo is going below: +МОДУЛЬ РОБОТ +###################### +Модуль обеспечивает всю необходимую функциональность для создания любого программного робота RPA. Модуль робота поставляется в качестве библиотеки Python, что позволяет с легкостью интегрировать его в другие проекты перспективных технологий. -- **Agent**: template build for the pyOpenRPA.Agent component -- **Orchestrator**: template build for the pyOpenRPA.Orchestrator component -- **Resources**: 3rd party resources which is needed to provide pyOpenRPA encapsulation from the Operating System (OS) dependencies. -- **Robot**: template build for the robot -- **Sources**: pyOpenRPA python package sources + sphinx sources -- **Studio**: build for the pyOpenRPA.Studio which support Desktop UI (support x32 and x64 desktop UI apps) -- **Utils**: many additional good tools for the python developer -- **Wiki**: compiled wiki documentation +**Содержит** -************************************************** -The pyOpenRPA structure -************************************************** +- Уровень доступа к элементам локального приложения (win32, UI automation), и веб приложения +- Уровень доступа к текстовым каналам передачи данных (клавиатура, буфер обмена) +- Уровень доступа к графическим каналам передачи данных (мышь, экран) -The pyOpenRPA has 4 main tools: -############################################ -- Studio -- Robot -- Orchestrator -- Agent +Подробное описание модуля: :ref:`module.robot.description`. -Studio +МОДУЛЬ СТУДИИ ###################### -The pyOpenRPA.Studio tool has been developed to help RPA-tors to create the robot algorythms. - -**Features** +Модуль является инструментом для отладки проектируемых узлов программного робота RPA. Запускается в качестве обособленного приложения в веб-браузере. -- Run actions -- Create visual algorythms of the robot -- Desktop app: Analyze desktop app ui tree -- Desktop app: Search desktop app ui by mouse -- Desktop app: Generate & edit the UIO Selector +**Основные возможности** -Robot -###################### -The pyOpenRPA.Robot package is the core of any action execution in the pyOpenRPA. All action from algorythms are perfoming by the Robot tool. It looks like a console process without graphic user interface. +- Поиск и запуск доступных действий над UI элементом +- Чтение и запись атрибутов UI элемента +- Визуальное прототипирование алгоритма +- Редактирование UI селекторов +- Поиск UI элементов по наведению мыши +- Поиск UI элементов в дереве UI объектов +- Автоматизированная генерация UI селекторов -**Features** +Подробное описание модуля: :ref:`module.studio.description`. -- Based on Python (killer feature) -- Support Win32 GUI framework (desktop app) -- Support UI automation framework (desktop app) -- Support Selenium (web app) -- Support PyAutoGUI (screen capture & mouse) -- Support OpenCV (computer vision) - -Orchestrator +МОДУЛЬ ОРКЕСТРАТОР ###################### The pyOpenRPA.Orchestrator package has been developed to maintain robot infrastructure (2+ robots algorythm). @@ -135,6 +108,47 @@ The pyOpenRPA.Agent tool has been developed to maintain robot infrastructure (2+ - Get screenshots from the RPA GUI session - Get the list of the running processes +************************************************** +Технические требования +************************************************** + +ВЕРСИЯ |release| + +*by Ivan Maslov (Russia)* - see + +! ATTENTION ! pyOpenRPA works only on MS Windows 7+/Server 2008+. Guys from Unix/Mac - sorry. We will come to you soon :) + + +************************************************** +About +************************************************** +Dear RPA-tors. Let me congratulate you with great change in the RPA world. Since 2019 the first enterprise level open source RPA platform is here! + +pyOpenRPA is absolutely open source commercial project. Hosted by LLC PYOPENRPA (RUSSIA) + +The pyOpenRPA - free, fast and reliable +Powerful OpenSource RPA tool for business (based on python 3). Best performance and absolutely free! + +The pyOpenRPA is based on Python and using well known OpenSource solutions such as Selenium, OpenCV, Win32, UI automation and others. Thanks to it we were able to create consolidated platform with all possible features. +The pyOpenRPA is distributed under the PYOPENRPA open license. +At the time of this writing the pyOpenRPA is successfully using in several big Russian companies. Companies in which it was decided to develop own RPA division with no dependencies on expensive licenses. + +************************************************** +Repo structure +************************************************** + +The description of the each folder in GitLab repo is going below: + +- **Agent**: template build for the pyOpenRPA.Agent component +- **Orchestrator**: template build for the pyOpenRPA.Orchestrator component +- **Resources**: 3rd party resources which is needed to provide pyOpenRPA encapsulation from the Operating System (OS) dependencies. +- **Robot**: template build for the robot +- **Sources**: pyOpenRPA python package sources + sphinx sources +- **Studio**: build for the pyOpenRPA.Studio which support Desktop UI (support x32 and x64 desktop UI apps) +- **Utils**: many additional good tools for the python developer +- **Wiki**: compiled wiki documentation + + ************************************************** Wiki structure ************************************************** @@ -149,6 +163,8 @@ In wiki you can use the following docs: - RUS Tutorial Web UI `[|OPEN HABR|] `_; `[|OPEN GITLAB|] `_ - RUS Leaflet pyOpenRPA v4.pdf `[|OPEN GITLAB|] `_ +:ref:`3.-Copyrights-&-Contacts`. + ************************************************** Guide content ************************************************** diff --git a/Wiki/RUS_Guide/html/genindex.html b/Wiki/RUS_Guide/html/genindex.html index fac521e5..4c9ab4e5 100644 --- a/Wiki/RUS_Guide/html/genindex.html +++ b/Wiki/RUS_Guide/html/genindex.html @@ -95,8 +95,14 @@

                                      МОДУЛЬ СТУДИЯ

                                  -
                                  -

                                  Orchestrator

                                  +
                                  +

                                  МОДУЛЬ ОРКЕСТРАТОР

                                  The pyOpenRPA.Orchestrator package has been developed to maintain robot infrastructure (2+ robots algorythm).

                                  Features

                                    @@ -297,6 +283,36 @@ At the time of this writing the pyOpenRPA is successfully using in several big R
                                  +
                                  +

                                  Технические требования

                                  +

                                  ВЕРСИЯ v1.2.12

                                  +

                                  by Ivan Maslov (Russia) - see

                                  +

                                  ! ATTENTION ! pyOpenRPA works only on MS Windows 7+/Server 2008+. Guys from Unix/Mac - sorry. We will come to you soon :)

                                  +
                                  +
                                  +

                                  About

                                  +

                                  Dear RPA-tors. Let me congratulate you with great change in the RPA world. Since 2019 the first enterprise level open source RPA platform is here!

                                  +

                                  pyOpenRPA is absolutely open source commercial project. Hosted by LLC PYOPENRPA (RUSSIA)

                                  +

                                  The pyOpenRPA - free, fast and reliable +Powerful OpenSource RPA tool for business (based on python 3). Best performance and absolutely free!

                                  +

                                  The pyOpenRPA is based on Python and using well known OpenSource solutions such as Selenium, OpenCV, Win32, UI automation and others. Thanks to it we were able to create consolidated platform with all possible features. +The pyOpenRPA is distributed under the PYOPENRPA open license. +At the time of this writing the pyOpenRPA is successfully using in several big Russian companies. Companies in which it was decided to develop own RPA division with no dependencies on expensive licenses.

                                  +
                                  +
                                  +

                                  Repo structure

                                  +

                                  The description of the each folder in GitLab repo is going below:

                                  +
                                    +
                                  • Agent: template build for the pyOpenRPA.Agent component

                                  • +
                                  • Orchestrator: template build for the pyOpenRPA.Orchestrator component

                                  • +
                                  • Resources: 3rd party resources which is needed to provide pyOpenRPA encapsulation from the Operating System (OS) dependencies.

                                  • +
                                  • Robot: template build for the robot

                                  • +
                                  • Sources: pyOpenRPA python package sources + sphinx sources

                                  • +
                                  • Studio: build for the pyOpenRPA.Studio which support Desktop UI (support x32 and x64 desktop UI apps)

                                  • +
                                  • Utils: many additional good tools for the python developer

                                  • +
                                  • Wiki: compiled wiki documentation

                                  • +
                                  +

                                  Wiki structure

                                  In wiki you can use the following docs:

                                  @@ -309,6 +325,7 @@ At the time of this writing the pyOpenRPA is successfully using in several big R
                                • RUS Tutorial Web UI [|OPEN HABR|]; [|OPEN GITLAB|]

                                • RUS Leaflet pyOpenRPA v4.pdf [|OPEN GITLAB|]

                                +

                                2. Права & Контакты.

                Guide content

                @@ -322,8 +339,9 @@ At the time of this writing the pyOpenRPA is successfully using in several big R
            • 2. Права & Контакты
            @@ -336,15 +354,39 @@ At the time of this writing the pyOpenRPA is successfully using in several big R
          • References
        • -
        • 3. Как использовать?
          @@ -427,7 +469,7 @@ At the time of this writing the pyOpenRPA is successfully using in several big R

        .. v1.2.12 replace:: v1.2.12 - .. |author| replace:: Ivan Maslov <ivan.maslov@unicodelabs.ru>

        + .. |author| replace:: Ivan Maslov <ivan.maslov@unicodelabs.ru>

        diff --git a/Wiki/RUS_Guide/html/objects.inv b/Wiki/RUS_Guide/html/objects.inv index 399ce10b8806ae2b5815ef2e567611db639ebddc..3877d6b419a2bb3e5106bdfe8003f838eae55881 100644 GIT binary patch delta 2631 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 D93Y(6 diff --git a/Wiki/RUS_Guide/html/py-modindex.html b/Wiki/RUS_Guide/html/py-modindex.html index aafede0f..f3be4905 100644 --- a/Wiki/RUS_Guide/html/py-modindex.html +++ b/Wiki/RUS_Guide/html/py-modindex.html @@ -98,8 +98,14 @@

        МОДУЛЬ СТУДИЯ

          @@ -230,7 +236,7 @@     - pyOpenRPA.Robot.UIDesktop + pyOpenRPA.Robot.UIDesktop diff --git a/Wiki/RUS_Guide/html/search.html b/Wiki/RUS_Guide/html/search.html index 6f48d8d9..358e43e0 100644 --- a/Wiki/RUS_Guide/html/search.html +++ b/Wiki/RUS_Guide/html/search.html @@ -98,8 +98,14 @@

          МОДУЛЬ СТУДИЯ

            diff --git a/Wiki/RUS_Guide/html/searchindex.js b/Wiki/RUS_Guide/html/searchindex.js index d05ac5fa..f45b2569 100644 --- a/Wiki/RUS_Guide/html/searchindex.js +++ b/Wiki/RUS_Guide/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["01_HowToInstall","03_Copyrights_Contacts","Agent/02_Defs","Orchestrator/01_Orchestrator","Orchestrator/02_Defs","Orchestrator/03_gSettingsTemplate","Orchestrator/04_HowToUse","Orchestrator/05_UAC","Orchestrator/06_Defs Managers","Robot/01_Robot","Robot/02_Defs","Robot/03_HowToUse","Robot/04_Dependencies","Studio/01_Studio","Studio/02_HowToUse","Tools/02_Defs","index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,"sphinx.ext.todo":2,"sphinx.ext.viewcode":1,sphinx:56},filenames:["01_HowToInstall.rst","03_Copyrights_Contacts.rst","Agent\\02_Defs.rst","Orchestrator\\01_Orchestrator.rst","Orchestrator\\02_Defs.rst","Orchestrator\\03_gSettingsTemplate.rst","Orchestrator\\04_HowToUse.rst","Orchestrator\\05_UAC.rst","Orchestrator\\06_Defs Managers.rst","Robot\\01_Robot.rst","Robot\\02_Defs.rst","Robot\\03_HowToUse.rst","Robot\\04_Dependencies.rst","Studio\\01_Studio.rst","Studio\\02_HowToUse.rst","Tools\\02_Defs.rst","index.rst"],objects:{"pyOpenRPA.Agent":{__Agent__:[2,0,0,"-"]},"pyOpenRPA.Agent.__Agent__":{OSCMD:[2,1,1,""],OSFileBinaryDataBase64StrAppend:[2,1,1,""],OSFileBinaryDataBase64StrCreate:[2,1,1,""],OSFileBinaryDataBase64StrReceive:[2,1,1,""],OSFileMTimeGet:[2,1,1,""],OSFileTextDataStrCreate:[2,1,1,""],OSFileTextDataStrReceive:[2,1,1,""],ProcessWOExeUpperUserListGet:[2,1,1,""]},"pyOpenRPA.Orchestrator":{__Orchestrator__:[4,0,0,"-"]},"pyOpenRPA.Orchestrator.Managers":{ControlPanel:[8,0,0,"module-1"],Process:[8,0,0,"module-0"]},"pyOpenRPA.Orchestrator.Managers.ControlPanel":{ControlPanel:[8,2,1,"id37"]},"pyOpenRPA.Orchestrator.Managers.ControlPanel.ControlPanel":{DataDictGenerate:[8,3,1,"id38"],InitJSJinja2StrGenerate:[8,3,1,"id39"],InitJSJinja2TemplatePathSet:[8,3,1,"id40"],Jinja2DataUpdateDictSet:[8,3,1,"id41"],OnInitJSDataDict:[8,3,1,"id42"],OnInitJSStr:[8,3,1,"id43"],OnRefreshHTMLDataDict:[8,3,1,"id44"],OnRefreshHTMLHashStr:[8,3,1,"id45"],OnRefreshHTMLStr:[8,3,1,"id46"],OnRefreshJSONDict:[8,3,1,"id47"],RefreshHTMLJinja2StrGenerate:[8,3,1,"id48"],RefreshHTMLJinja2TemplatePathSet:[8,3,1,"id49"]},"pyOpenRPA.Orchestrator.Managers.Process":{Process:[8,2,1,"id0"],ProcessExists:[8,1,1,"id23"],ProcessGet:[8,1,1,"id24"],ProcessInitSafe:[8,1,1,"id25"],ProcessManual2Auto:[8,1,1,"id26"],ProcessManualStopListClear:[8,1,1,"id27"],ProcessManualStopTriggerSet:[8,1,1,"id28"],ProcessScheduleStatusCheckEverySeconds:[8,1,1,"id29"],ProcessStart:[8,1,1,"id30"],ProcessStatusCheck:[8,1,1,"id31"],ProcessStatusRestore:[8,1,1,"id32"],ProcessStatusSave:[8,1,1,"id33"],ProcessStatusStrGet:[8,1,1,"id34"],ProcessStopForce:[8,1,1,"id35"],ProcessStopSafe:[8,1,1,"id36"]},"pyOpenRPA.Orchestrator.Managers.Process.Process":{KeyTurpleGet:[8,3,1,"id1"],Manual2Auto:[8,3,1,"id2"],ManualStopListClear:[8,3,1,"id3"],ManualStopTriggerNewStart:[8,3,1,"id4"],ManualStopTriggerSet:[8,3,1,"id5"],MuteWait:[8,3,1,"id6"],RestartForce:[8,3,1,"id7"],RestartSafe:[8,3,1,"id8"],Start:[8,3,1,"id9"],StartCheck:[8,3,1,"id10"],StatusChangeLog:[8,3,1,"id11"],StatusCheck:[8,3,1,"id12"],StatusCheckIntervalRestore:[8,3,1,"id13"],StatusCheckStart:[8,3,1,"id14"],StatusCheckStopForce:[8,3,1,"id15"],StatusCheckStopSafe:[8,3,1,"id16"],StatusRestore:[8,3,1,"id17"],StatusSave:[8,3,1,"id18"],StopForce:[8,3,1,"id19"],StopForceCheck:[8,3,1,"id20"],StopSafe:[8,3,1,"id21"],StopSafeCheck:[8,3,1,"id22"]},"pyOpenRPA.Orchestrator.Web":{Basic:[4,0,0,"-"]},"pyOpenRPA.Orchestrator.Web.Basic":{JSActivityListExecute:[4,1,1,""],JSProcessorActivityListAdd:[4,1,1,""]},"pyOpenRPA.Orchestrator.__Orchestrator__":{ActivityItemCreate:[4,1,1,""],ActivityItemDefAliasCreate:[4,1,1,""],ActivityItemDefAliasModulesLoad:[4,1,1,""],ActivityItemDefAliasUpdate:[4,1,1,""],ActivityItemHelperDefAutofill:[4,1,1,""],ActivityItemHelperDefList:[4,1,1,""],AgentActivityItemAdd:[4,1,1,""],AgentActivityItemExists:[4,1,1,""],AgentActivityItemReturnExists:[4,1,1,""],AgentActivityItemReturnGet:[4,1,1,""],AgentOSCMD:[4,1,1,""],AgentOSFileBinaryDataBase64StrAppend:[4,1,1,""],AgentOSFileBinaryDataBase64StrCreate:[4,1,1,""],AgentOSFileBinaryDataBase64StrReceive:[4,1,1,""],AgentOSFileBinaryDataBytesCreate:[4,1,1,""],AgentOSFileBinaryDataReceive:[4,1,1,""],AgentOSFileSend:[4,1,1,""],AgentOSFileTextDataStrCreate:[4,1,1,""],AgentOSFileTextDataStrReceive:[4,1,1,""],AgentOSLogoff:[4,1,1,""],AgentProcessWOExeUpperUserListGet:[4,1,1,""],GSettingsAutocleaner:[4,1,1,""],GSettingsGet:[4,1,1,""],GSettingsKeyListValueAppend:[4,1,1,""],GSettingsKeyListValueGet:[4,1,1,""],GSettingsKeyListValueOperatorPlus:[4,1,1,""],GSettingsKeyListValueSet:[4,1,1,""],OSCMD:[4,1,1,""],OSCredentialsVerify:[4,1,1,""],OSLogoff:[4,1,1,""],OSRemotePCRestart:[4,1,1,""],Orchestrator:[4,1,1,""],OrchestratorInitWait:[4,1,1,""],OrchestratorIsAdmin:[4,1,1,""],OrchestratorIsInited:[4,1,1,""],OrchestratorLoggerGet:[4,1,1,""],OrchestratorPySearchInit:[4,1,1,""],OrchestratorRerunAsAdmin:[4,1,1,""],OrchestratorRestart:[4,1,1,""],OrchestratorScheduleGet:[4,1,1,""],OrchestratorSessionRestore:[4,1,1,""],OrchestratorSessionSave:[4,1,1,""],OrchestratorThreadStart:[4,1,1,""],ProcessDefIntervalCall:[4,1,1,""],ProcessIsStarted:[4,1,1,""],ProcessListGet:[4,1,1,""],ProcessStart:[4,1,1,""],ProcessStop:[4,1,1,""],ProcessorActivityItemAppend:[4,1,1,""],ProcessorActivityItemCreate:[4,1,1,""],ProcessorAliasDefCreate:[4,1,1,""],ProcessorAliasDefUpdate:[4,1,1,""],PythonStart:[4,1,1,""],RDPSessionCMDRun:[4,1,1,""],RDPSessionConnect:[4,1,1,""],RDPSessionDisconnect:[4,1,1,""],RDPSessionDublicatesResolve:[4,1,1,""],RDPSessionFileStoredRecieve:[4,1,1,""],RDPSessionFileStoredSend:[4,1,1,""],RDPSessionLogoff:[4,1,1,""],RDPSessionMonitorStop:[4,1,1,""],RDPSessionProcessStartIfNotRunning:[4,1,1,""],RDPSessionProcessStop:[4,1,1,""],RDPSessionReconnect:[4,1,1,""],RDPSessionResponsibilityCheck:[4,1,1,""],RDPTemplateCreate:[4,1,1,""],SchedulerActivityTimeAddWeekly:[4,1,1,""],Start:[4,1,1,""],StorageRobotExists:[4,1,1,""],StorageRobotGet:[4,1,1,""],UACKeyListCheck:[4,1,1,""],UACSuperTokenUpdate:[4,1,1,""],UACUpdate:[4,1,1,""],UACUserDictGet:[4,1,1,""],WebAuditMessageCreate:[4,1,1,""],WebCPUpdate:[4,1,1,""],WebListenCreate:[4,1,1,""],WebRequestGet:[4,1,1,""],WebRequestParseBodyBytes:[4,1,1,""],WebRequestParseBodyJSON:[4,1,1,""],WebRequestParseBodyStr:[4,1,1,""],WebRequestParseFile:[4,1,1,""],WebRequestParsePath:[4,1,1,""],WebRequestResponseSend:[4,1,1,""],WebURLConnectDef:[4,1,1,""],WebURLConnectFile:[4,1,1,""],WebURLConnectFolder:[4,1,1,""],WebURLIndexChange:[4,1,1,""],WebUserInfoGet:[4,1,1,""],WebUserIsSuperToken:[4,1,1,""],WebUserUACHierarchyGet:[4,1,1,""]},"pyOpenRPA.Robot":{UIDesktop:[10,0,0,"-"]},"pyOpenRPA.Robot.UIDesktop":{Get_OSBitnessInt:[10,1,1,""],PWASpecification_Get_PWAApplication:[10,1,1,""],PWASpecification_Get_UIO:[10,1,1,""],UIOSelectorSecs_WaitAppear_Bool:[10,1,1,""],UIOSelectorSecs_WaitDisappear_Bool:[10,1,1,""],UIOSelectorUIOActivity_Run_Dict:[10,1,1,""],UIOSelector_Exist_Bool:[10,1,1,""],UIOSelector_FocusHighlight:[10,1,1,""],UIOSelector_GetChildList_UIOList:[10,1,1,""],UIOSelector_Get_BitnessInt:[10,1,1,""],UIOSelector_Get_BitnessStr:[10,1,1,""],UIOSelector_Get_UIO:[10,1,1,""],UIOSelector_Get_UIOActivityList:[10,1,1,""],UIOSelector_Get_UIOInfo:[10,1,1,""],UIOSelector_Get_UIOList:[10,1,1,""],UIOSelector_Highlight:[10,1,1,""],UIOSelector_SafeOtherGet_Process:[10,1,1,""],UIOSelector_SearchChildByMouse_UIO:[10,1,1,""],UIOSelector_SearchChildByMouse_UIOTree:[10,1,1,""],UIOSelector_TryRestore_Dict:[10,1,1,""],UIOSelectorsSecs_WaitAppear_List:[10,1,1,""],UIOSelectorsSecs_WaitDisappear_List:[10,1,1,""]},"pyOpenRPA.Tools":{Debugger:[15,0,0,"-"],StopSafe:[15,0,0,"-"]},"pyOpenRPA.Tools.Debugger":{LiveDebugCheckThread:[15,1,1,""]},"pyOpenRPA.Tools.StopSafe":{Init:[15,1,1,""],IsStopSafe:[15,1,1,""]}},objnames:{"0":["py","module","Python \u043c\u043e\u0434\u0443\u043b\u044c"],"1":["py","function","Python \u0444\u0443\u043d\u043a\u0446\u0438\u044f"],"2":["py","class","Python \u043a\u043b\u0430\u0441\u0441"],"3":["py","method","Python \u043c\u0435\u0442\u043e\u0434"]},objtypes:{"0":"py:module","1":"py:function","2":"py:class","3":"py:method"},terms:{"0643":6,"0_stopped":8,"100":5,"101":4,"1050":[4,5],"120":[5,8],"1200":5,"121":4,"123":4,"127":4,"1680":[4,5],"1680x1050":[4,5],"1992":6,"1_stopped_manual":8,"2008":[0,16],"2012":0,"2019":16,"222":[3,5],"2999226":0,"2_stop_safe":8,"300":[5,8],"3389":[4,5],"3600":5,"3720":[0,4,10,11],"3720python":11,"3_stop_safe_manual":8,"3rd":16,"412":4,"443":4,"4_started":8,"50000000":5,"5_started_manual":8,"600":5,"640x480":[4,5],"722":1,"77767775":4,"77777sdfsdf77777dsfdfsf77777777":4,"8081":5,"906":1,"\u0430":16,"\u0430\u0433\u0435\u043d\u0442":16,"\u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a":16,"\u0431\u043e\u043b\u044c\u0448":16,"\u0431\u043e\u0442":16,"\u0431\u0443\u0434\u0435\u0442":16,"\u0431\u044b\u0442":16,"\u0432":[10,16],"\u0432\u0430\u043c":16,"\u0432\u0430\u0441":16,"\u0432\u0435\u043d\u0434\u043e\u0440":16,"\u0432\u0435\u0440\u0441":16,"\u0432\u043c\u0435\u0441\u0442":16,"\u0432\u043e\u0437\u043c\u043e\u0436\u043d":16,"\u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442":16,"\u0432\u043e\u043f\u0440\u043e\u0441":16,"\u0432\u0441\u0435":16,"\u0432\u0441\u0435\u0433\u0434":16,"\u0432\u0441\u0435\u043c":16,"\u0432\u0445\u043e\u0434\u043d":10,"\u0432\u044b":16,"\u0432\u044b\u0431\u0440\u0430":16,"\u0432\u044b\u043a\u0438\u043d\u0443\u0442":10,"\u0432\u044b\u043f\u043e\u043b\u043d\u044f":10,"\u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d":16,"\u0433\u0435\u043d\u0435\u0440\u0430\u043b\u044c\u043d":16,"\u0433\u043e\u043b\u043e\u0441\u043e\u0432":16,"\u0434\u0430\u043d":16,"\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440":16,"\u0434\u043b\u044f":16,"\u0434\u043e\u0431\u0440":16,"\u0435\u0441\u043b":16,"\u0436\u0435\u043b\u0435\u0437":16,"\u0437\u0430\u0432\u0438\u0441\u0438\u043c":16,"\u0437\u0430\u0434\u0430\u0447":16,"\u0437\u0430\u043a\u043b\u044e\u0447\u0430":16,"\u0437\u0430\u043f\u0443\u0441\u043a":16,"\u0437\u043d\u0430":16,"\u0437\u0440\u0435\u043d":16,"\u0438":16,"\u0438\u0432\u0430":16,"\u0438\u0437":16,"\u0438\u043c":16,"\u0438\u043c\u0435\u043d":16,"\u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d":16,"\u0438\u043d\u0438\u0446\u0438\u0430\u0442":16,"\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442":16,"\u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442":16,"\u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d":16,"\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430":16,"\u0438\u0441\u0445\u043e\u0434\u043d":[2,4,8,10,15],"\u043a":[10,16],"\u043a\u0430\u0436\u0434":16,"\u043a\u0430\u043a":16,"\u043a\u043b\u0438\u0435\u043d\u0442":16,"\u043a\u043e\u0434":[2,4,8,10,15],"\u043a\u043e\u043c\u043f\u0430\u043d":16,"\u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d":16,"\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442":16,"\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d":16,"\u043a\u043e\u043d\u043d\u0435\u043a\u0442":10,"\u043a\u043e\u043d\u0442\u0430\u043a\u0442":16,"\u043b\u0435\u0433\u043a\u043e\u0441\u0442":16,"\u043b\u0438\u0448":16,"\u043b\u043e\u0433\u0433\u0435\u0440":5,"\u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d":5,"\u043b\u044e\u0434":16,"\u043c\u0430\u0441\u043b":16,"\u043c\u0430\u0448\u0438\u043d":16,"\u043c\u043e\u0434\u0443\u043b":16,"\u043c\u043e\u0436\u0435\u0442":16,"\u043c\u043e\u0449\u043d\u043e\u0441\u0442":16,"\u043c\u044b":16,"\u043d\u0430":16,"\u043d\u0430\u0431\u043e\u0440":16,"\u043d\u0430\u043c":16,"\u043d\u0430\u0446\u0435\u043b\u0435\u043d":16,"\u043d\u0430\u0448":16,"\u043d\u0435":[10,16],"\u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d":16,"\u043d\u043e\u0432":16,"\u043d\u0443\u0436\u043d":16,"\u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d":10,"\u043e\u0431\u0440\u0430\u0442":16,"\u043e\u0431\u0443\u0447\u0435\u043d":16,"\u043e\u0431\u0449":16,"\u043e\u0434\u043d":16,"\u043e\u0437\u043d\u0430\u043a\u043e\u043c":16,"\u043e\u043f\u0438\u0441\u0430\u043d":16,"\u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0442\u043e\u0440":16,"\u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b":16,"\u043e\u0441\u0442\u0430\u043b\u044c\u043d":16,"\u043e\u0442":16,"\u043e\u0442\u043a\u043b\u044e\u0447":16,"\u043e\u0442\u043a\u0440\u044b\u0442":16,"\u043e\u0448\u0438\u0431\u043a":10,"\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440":[2,4,8,10,15],"\u043f\u0435\u0440\u0432":16,"\u043f\u0435\u0440\u0435\u0434":16,"\u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d":16,"\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c":16,"\u043f\u043e":16,"\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a":5,"\u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430":16,"\u043f\u043e\u0437\u0432\u043e\u043b\u044f":16,"\u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b":10,"\u043f\u043e\u043a\u043e\u043b\u0435\u043d":16,"\u043f\u043e\u043c\u043e\u0433\u0443\u0442":16,"\u043f\u043e\u043c\u043e\u0436":16,"\u043f\u0440\u0430\u0432":16,"\u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d":16,"\u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430":16,"\u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446":16,"\u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430":16,"\u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d":16,"\u043f\u0440\u043e\u0431\u043b":16,"\u043f\u0440\u043e\u0431\u043b\u0435\u043c":16,"\u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d":16,"\u043f\u0440\u043e\u0435\u043a\u0442":16,"\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d":16,"\u043f\u0440\u043e\u0441\u0442":16,"\u043f\u0440\u043e\u0446\u0435\u0441\u0441":10,"\u043f\u0443\u0441\u0442":10,"\u0440\u0430\u043c\u043a":16,"\u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d":16,"\u0440\u0435\u0430\u043b\u044c\u043d":16,"\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442":[2,4,8,10,15],"\u0440\u0435\u0447\u0435\u0432":16,"\u0440\u0435\u0448\u0430":16,"\u0440\u0435\u0448\u0435\u043d":16,"\u0440\u043e\u0431\u043e\u0442":16,"\u0440\u043e\u0431\u043e\u0442\u0438\u0437\u0430\u0446":16,"\u0440\u044b\u043d\u043a":16,"\u0440\u044f\u0434":16,"\u0441":16,"\u0441\u0430\u043c":16,"\u0441\u0438\u0441\u0442\u0435\u043c\u043d":16,"\u0441\u043b\u0443\u0447\u0430":10,"\u0441\u043c\u043e\u0442\u0440\u0435\u0442":16,"\u0441\u043e\u0437\u0434\u0430":[5,16],"\u0441\u043e\u0442\u043d":16,"\u0441\u043e\u0444\u0442":16,"\u0441\u043e\u0447\u0435\u0442\u0430":16,"\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442":16,"\u0441\u043f\u0438\u0441\u043a":10,"\u0441\u0441\u044b\u043b\u043a":16,"\u0441\u0442\u0430\u043b":16,"\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442":16,"\u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0447\u0435\u0441\u043a":16,"\u0441\u0442\u0443\u0434":16,"\u0442\u0430\u043a":16,"\u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433":16,"\u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u043d":16,"\u0442\u0438\u043f":4,"\u0442\u043e":16,"\u0442\u043e\u043b\u044c\u043a":16,"\u0442\u0440\u0435\u0431":10,"\u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d":16,"\u0443\u043f\u0440\u0430\u0432\u043b\u044f":16,"\u0443\u0441\u043b\u0443\u0433":16,"\u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a":16,"\u0444\u0430\u0439\u043b":5,"\u0444\u043b\u0430\u0433":10,"\u0444\u0443\u043d\u043a\u0446":16,"\u0446\u0435\u043d\u043d\u043e\u0441\u0442":16,"\u0447\u0430\u0442":16,"\u0447\u0442\u043e":[10,16],"\u044d\u043b\u0435\u043c\u0435\u043d\u0442":10,"\u044d\u0442":16,"case":[2,4,5,8,10,11],"catch":[2,4,5],"class":[8,11],"continue":4,"debugger":15,"default":[2,4,5,8,11,14],"double":14,"else":[2,4,5,6,8,10],"false":[2,4,5,6,8,10],"float":[2,3,5,8,10],"for":[0,1,2,3,4,5,6,8,10,11,16],"function":[1,4,5,8],"import":[3,4,5,6,8,9,10,11,15],"int":[3,4,8,10,11],"interface":[3,4,6,11,16],"long":1,"new":[1,3,4,5,6,8],"package":[0,6,8,9,16],"private":4,"return":[2,4,5,8,10,11],"switch":[8,12],"this":[2,4,5,7,8,11,16],"true":[2,4,5,6,7,8,9,10,11,15],"try":[4,10],"var":4,"while":[4,8],"with":[3,4,5,6,7,8,10,11,16],__agent__:16,__agentactivityreturndictitemcreate__:5,__agentdictitemcreate__:5,__create__:5,__init__:4,__main__:6,__name__:6,__orchestrator__:[8,16],__statisticsdict__:5,__uacclientadmincreate__:[5,6],_sessiolast:4,_sessionlast_gsettings:4,_sessionlast_rdplist:4,_sessionlast_storagedict:4,a2o:4,ability:11,able:16,about:[1,3,4,5,8,15],above:4,abs:[2,4,5],absolute:[4,5,8],absolutely:[2,4,16],abspath:[4,6],access:[4,5,6,16],accessusers:5,action:[4,16],actions:[4,11,16],activate:5,activation:4,active:[3,4,5,8],activities:[4,5,8,10],activity:[3,4,5,7,8,10,11,14],activitydict:[5,7],activityitem:[2,4],activityitemcreate:4,activityitemdefaliascreate:4,activityitemdefaliasmodulesload:4,activityitemdefaliasupdate:4,activityitemdict:4,activityitemhelperdefautofill:4,activityitemhelperdeflist:4,activityitemnowdict:5,activitylist:5,activitylistappendprocessorqueuebool:[5,7],activitylistexecute:4,activitylistexecutebool:[5,7],activityname:11,activitytimelist:5,actual:4,add:[4,5,6,8,11],addhandler:5,additional:[4,16],address:[4,5],addressstr:5,admin:[4,7],admindict:[5,7],administrator:[4,6],after:[3,4,5,6,8,10,14,15],agent:[5,8],agentactivityitemadd:4,agentactivityitemexists:4,agentactivityitemreturnexists:4,agentactivityitemreturnget:4,agentactivitylifetimesecfloat:5,agentactivityreturndict:5,agentactivityreturnlifetimesecfloat:5,agentconnectionlifetimesecfloat:5,agentdict:[4,5],agentfilechunkbytessizeint:5,agentfilechunkcheckintervalsecfloat:5,agentkeydict:[5,7],agentkeystr:[5,7],agentlimitlogsizebytesint:5,agentloopsleepsecfloat:5,agentoscmd:4,agentosfilebinarydatabase64strappend:4,agentosfilebinarydatabase64strcreate:4,agentosfilebinarydatabase64strreceive:4,agentosfilebinarydatabytescreate:4,agentosfilebinarydatareceive:4,agentosfilesend:4,agentosfiletextdatastrcreate:4,agentosfiletextdatastrreceive:4,agentoslogoff:4,agentprocesswoexeupperuserlistget:4,algorithm:16,algorithms:3,algorythm:16,algorythms:[3,5,16],alias:[3,4,5],aliasdefdict:[3,4,5],alive:8,all:[3,4,5,6,7,8,10,11,16],allow:[4,6,7,8,9],allowed:[4,5],allows:11,already:[4,11],also:4,amd64:[0,4,10,11],analyze:16,and:[1,2,3,4,5,7,8,10,16],another:[4,10,14],anr:4,ant:8,any:[0,3,4,8,11,14,16],apache:1,app:[2,4,10,16],appear:[4,10,15],appeared:10,append:[3,4,5,7,11],appended:[4,8],applicable:[3,5,8,11],application:[4,10],applications:10,applied:8,apply:[3,5,8],approach:11,apps:[4,11,16],architecture:16,archive:[0,4,5],are:[0,4,8,11,16],arg:[3,4],argdict:[3,4,5],arggsettings:[3,4,5],arglist:[3,4,5],arglogger:[3,4,5],args:[3,4,5],argument:4,arguments:4,argvaluestr:4,article:16,artificial:11,asctime:5,ask:[4,5],assert:11,associated:4,asweigart:1,async:[3,4],asynchonus:3,attention:[2,3,4,5,7,11,14,16],attribute:[3,5,10,11],attributes:[10,11],audit:4,authentication:5,authentificated:4,author:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16],authtoken:5,authtokensdict:5,auto:[4,8],autocleaner:[3,5],autodetect:4,autoinit:[4,6],automate:8,automatically:[5,14],automation:[12,16],automationsearchmouseelement:10,automatized:3,available:[4,5,6,11],b4ff:6,b64decode:2,backend:[10,11],backward:[4,8],base64:[2,4],base:4,base_wrapper:11,based:[3,4,16],basehttprequesthandler:[4,8],basic:[3,5,6,16],beautiful:[2,4],because:[3,4,8,11],been:[0,4,5,11,16],before:[4,5],beginwith:[4,5],below:[3,4,14,16],best:[9,16],between:[3,4,5,6],big:[4,11,16],binary:[2,4],bit:[1,11],bitness:[4,10],block:[4,8],blocked:[5,8],body:[4,5],bool:[3,4,5,8,11],boppreh:1,both:[4,10,11],box:6,branch:0,browser:[5,14],bsd:1,bugs:1,build:[1,16],built:0,business:[3,4,11,16],but:8,button:[5,7],bytes:4,cabinetwclass:11,cache:[4,5],calcframe:11,call:[3,4,5,6,8,10],callable:4,called:4,can:[1,2,3,4,5,6,7,8,9,10,11,15,16],cancel:10,cant:3,capture:16,cases:3,catched:8,catchperiodsecfloat:5,centralized:3,ceo:16,certfilepempathstr:5,certificate:4,change:[4,8,16],changed:5,changes:8,check:[4,5,8,10,11,15,16],checkintervalsecfloat:5,child:[10,11],children:11,choose:10,chrome:11,chunk:5,class_name:11,class_name_re:11,classes:8,classification:11,clause:1,cleaner:4,clear:[4,5,8,11],click:[9,11],client:[4,5,8],clientrequesthandler:5,clipboard:4,close:[4,5,11,15],cmd:[2,4,5,7,8,14,16],cmdinputbool:[5,7],code:[3,4,5,8,11],collecting:5,com:[0,1,11,12],come:[2,4,15,16],comma:3,command:[2,4,11],commands:[4,5],commercial:16,common:11,communication:4,compact:1,companies:[1,16],company:[1,4],compatibility:[4,8,11],compexity:3,compiled:16,completed:[0,5],completion:5,complex:3,component:16,components:[3,16],computer:[11,16],concept:16,condition:[10,11],config:[6,10],configuration:[3,4,5,6,10],configurations:6,configure:[5,16],congratulate:16,connect:[4,5],connection:[4,5],connectioncountint:5,connectionfirstqueueitemcountint:5,consist:3,console:[5,11,14,16],consolidated:[3,16],contact:1,contacts:1,container:8,contains:[4,5,10,11,14],content:[2,4,5],context:8,control:[3,4,5,6,8,16],control_type:11,control_type_re:11,controlpanel:[4,5,6,16],controlpanelcp_:4,controlpaneldict:5,controlpanelinstance:8,controlpanelkeyallowedlist:5,controlpanelrefreshintervalsecfloat:5,controls:[4,5,7],convention:11,cookie:5,copy:11,core:[3,16],cost:16,count:8,counts:8,coverage:8,cp1251:[2,4],cp866:[2,4],cp_:[4,6],cp_versioncheck:4,cpkey:5,cpkeydict:[5,7],cpkeystr:[5,7],create:[1,2,3,4,5,6,8,9,15,16],created:[1,4,5],creating:5,credentials:4,criteria:8,crosscheck:4,css:12,ctrl_index:11,current:[2,3,4,5,7,8,11],custom:11,customization:3,customize:7,customized:3,cv2:11,daemon:4,daemonic:2,dashboard:4,data:[2,4,5,8],datadictgenerate:8,datasetlast:5,datetime:[5,6],day:4,deadlines:1,dear:16,debugging:[4,5],decentralized:3,decided:16,decode:2,def:[3,4,5,6,8,10,15],defaliastest:[3,5],defaults:4,defhelper:4,defnamestr:5,defs:[3,7,9,16],defsettingsupdatepathlist:5,dependencies:16,deployed:4,deprecated:4,depth:11,depth_end:11,depth_start:11,depth_stop:11,depthbit:[4,5],desciption:11,description:[9,10,11,16],desktop:[3,4,5,8,10,16],desktopuser:4,destination:[4,10],details:[3,4,16],detect:[4,5,8,10,11],determine:4,determined:8,dev:4,develop:16,developed:[11,16],developer:16,developing:4,dict:[2,4,5,8,10,11,16],dictionary:[3,5],different:3,directory:[4,8,11,15],disappear:10,disappeared:10,disc:4,disconnect:[4,5],distributed:16,division:16,dll:11,dlls:16,docs:[11,16],document:10,documentation:16,docutils:[2,4,10,15],dodict:5,doens:4,does:[4,14],doesn:10,domain:5,domainadstr:5,domainupperstr:4,domainuser:4,don:[2,4,5,7,8],dont:[4,5,7,8],dos:[2,4],download:0,dp0:11,draw:10,drive:4,driver:11,drives:[4,5],dsd:[3,5],dumo:4,dump:[5,6,8],dumploglist:5,dumploglistcountint:5,dumploglisthashstr:5,dumploglistrefreshintervalsecfloat:5,duplicates:4,duration:5,dynamically:11,each:[4,5,11,16],early:[2,4],edit:16,editor:14,elem:11,element:[10,11],empty:[4,5,7],enabled:[4,11],encapsulated:[2,4],encapsulation:16,encode:[2,4],encoding:[2,4],end:[3,4],eng:16,enjoy:4,enterprise:16,enumerate:8,enumeratedef:8,env:[5,8],enviroment:11,environment:4,equal:[4,5],equalcase:[4,5],etc:4,even:4,event:8,events:8,ever:4,every:[4,5,8],everyday:4,exact:11,example:[2,3,4,7,8,9,10],examples:[4,5,11],except:4,exception:[4,8],exceptions:[0,4],exe:[0,2,4,8,9,10,11,15],executable:[3,4,13],execute:[2,3,4,5,7,8,16],executebool:5,executed:4,executing:5,execution:[2,3,4,5,8,11,16],exist:[2,4,5,10,11],existing:8,exists:[4,5,8],expensive:16,expires:4,explorer:[11,14],expression:11,extension:[4,8,11],extra:4,extract:[4,16],extraction:11,facebook:1,fails:8,fast:[1,16],feature:[3,4,5,7,16],features:[3,16],feel:1,field:[4,5],file:[2,4,5,8,15],filebodybytes:4,filehandler:5,filemanager:5,filemode:5,filenamestr:4,files:[4,5],fileurl:5,fileurlfilepathdict:5,fileurlfilepathdict_help:5,fill:[4,5],filled:5,fills:5,filter:4,find:[1,3,9,10,11],find_element_by_name:11,find_window:11,find_windows:10,firefox:11,first:[6,11,16],flag:[2,4,5,8],flagaccess:5,flagaccessdefrequestglobalauthenticate:5,flagcredentialsask:5,flagdonotexpire:5,flagsessionisactive:[4,5],flaguseallmonitors:[4,5],flase:[2,4],flexibility:3,focus:10,folder:[4,6,11,16],following:[0,7,8,14,16],force:[4,8,16],forget:5,format:[2,4,8],formatter:5,found:11,foundation:1,founder:16,framework:[10,12,16],frameworks:11,free:[1,16],friday:4,friendly_class_name:11,friendly_class_name_re:11,fro:4,from:[0,2,3,4,5,6,8,9,10,15,16],front:4,full:[4,5],fullscreen:[4,5],fullscreenbool:[5,7],fullscreenrdpsessionkeystr:5,fully:11,functionality:11,functionallity:6,functions:[2,4,8,9,10,11,15],further:4,futher:8,garbage:4,general:[5,16],generate:[4,8,16],generated:4,generation:8,generator:4,get:[4,5,8,10,11,16],get_osbitnessint:10,getcontrol:10,getlogger:5,git:[0,4,5,7],github:1,gitlab:[0,1,11,16],give:[4,5,7],given:4,glob:4,global:[2,4,16],goes:[3,8],going:16,good:[3,16],graphic:[11,16],great:16,group:[7,16],gsettings:[3,6,8,16],gsettingsautocleaner:4,gsettingsdict:4,gsettingsget:[4,6],gsettingskeylistvalueappend:4,gsettingskeylistvalueget:4,gsettingskeylistvalueoperatorplus:4,gsettingskeylistvalueset:4,gui:[2,3,4,10,11,12,16],guid:[4,5],guidstr:[4,5],gurbage:5,guys:16,habr:16,handle:5,handlebars:12,handler:[4,5,8],handlers:5,hard:[4,5,7],has:[0,1,3,4,5,7,8,11,15],hash:8,have:4,height:[4,5],help:[0,1,4,16],helpfully:10,here:[4,6,9,10,11,16],hex:[4,5,11],hidden:4,hiddenisorchestratorinitialized:5,hierarchy:[4,11,14],highlight:[10,11,14],hightlight:14,homepage:1,host:[4,5],hosted:[1,16],hostname:[4,8],hostnameupperstr:5,how:[8,10,15,16],html:[2,4,5,8,10,11,15,16],http:[2,3,4,5,8,10,11,15],https:[0,1,4,5,11,12],human:4,identification:[4,11],identify:[8,11],ignore:[4,5],ignorebool:[5,7],ignored:4,image:16,imaslov:6,implement:11,implemented:11,important:[4,10],imported:4,importing:4,inactionname:10,inactivityitemdict:4,inactivitylist:4,inaddressstr:4,inadisdefaultbool:[4,6],inadloginstr:[4,6],inadstr:[4,6],inagentfilepathstr:4,inagenthostnamestr:8,inagentusernamestr:8,inaliasstr:4,inarg1str:4,inargdict:4,inarggsettings:4,inarggsettingsstr:4,inarglist:4,inargloggerstr:4,inargument:11,inargumentlist:10,inasyncinitbool:[4,6],inbackend:10,inbreaktriggerprocesswoexelist:4,incapturebool:[2,4],incertfilepempathstr:4,incheckintervalsecfloat:4,incloseforcebool:4,included:10,incmdencodingstr:[2,4],incmdstr:[2,4],incontenttypestr:4,incontrolpanelnamestr:8,incontrolspecificationarray:10,incpkeystr:4,indatadict:8,indef:4,indefargdict:4,indefarggsettingsnamestr:4,indefarglist:4,indefargloggernamestr:4,indefargnamegsettingsstr:[4,6],indefnamestr:4,indefquerystr:4,indefstr:[4,6],indepthbitint:4,index:[3,4,5,10,11],indict:5,indomainstr:4,indumprestorebool:[4,6],inelement:[9,10,11],inelementspecification:10,inencodingstr:[2,4],inexecuteinnewthreadbool:4,infiledatabase64str:[2,4],infiledatabytes:4,infiledatastr:[2,4],infilepathstr:[2,4],infinite:4,inflagforceclosebool:4,inflaggetabspathbool:4,inflagraiseexception:[9,10,11],inflagwaitallinmoment:10,info:[4,5,6,11],infolderpathstr:4,inforcebool:4,information:[3,4,8],infrastructure:16,inglobpatternstr:[4,6],ingsettings:[2,3,4,6],ingsettingsclientdict:5,inguidremovebool:4,inguidstr:4,inhashkeystr:5,inheightpxint:4,inherited:11,inhostfilepathstr:4,inhostnamestr:4,inhoststr:[4,5],inhtmlrenderdef:4,inintervalasyncbool:4,inintervalsecfloat:4,inintervalsecondsint:8,inismanualbool:8,init:[3,4,5,6,8,10,15],init_debug:15,initdatetime:5,inited:[4,5],initial:4,initialization:4,initialized:[4,5,8],initiate:4,initjsjinja2strgenerate:8,initjsjinja2templatepathset:8,injinja2dataupdatedict:8,injinja2templatepathstr:8,injinja2templaterefreshbool:8,injsinitgeneratordef:4,injsongeneratordef:4,inkeyfilepathstr:4,inkeylist:4,inkeystr:5,inkwargs:15,inkwargumentobject:10,inlogger:[4,5,15],inloggerlevel:5,inloginstr:[4,5],inmatchtypestr:4,inmessagestr:4,inmethodstr:4,inmodestr:[3,4,5,6],inmodulepathstr:4,inmstdnint:8,inmstdtsecfloat:8,inmuteignorebool:8,inoperationcodestr:4,inorchestratorfilepathstr:4,inpasswordstr:[4,5],inpathstr:4,inportint:4,inportstr:[4,5],inprocessnamewexestr:4,inprocessnamewoexelist:[2,4],inprocessnamewoexestr:[4,8],inrdpfilepathstr:4,inrdpsessionkeystr:[4,5],inrdptemplatedict:4,inredirectclipboardbool:4,inrefreshhtmljinja2templatepathstr:8,inrequest:[4,8],inresponestr:4,inreturn:5,inrobotnamestr:[4,8],inrolehierarchyalloweddict:[4,6],inrolekeylist:4,inrowcountint:5,inrunasadministratorbool:4,inrunasyncbool:[2,4],insendoutputtoorchestratorlogsbool:[2,4],insert:[4,6],inserverkeystr:4,inshareddrivelist:4,inspecificationlist:[9,10,11],inspecificationlistlist:10,install:0,installation:16,installed:0,instance:[3,4,5,8,10,11],instartargdict:8,instartcmdstr:8,instartpathstr:8,instatuscheckintervalsecfloat:8,instopprocessnamewoexestr:4,instopsafetimeoutsecfloat:8,insupertokenstr:[4,6],intelligence:11,interaction:[3,4,10],interested:4,internal:8,internet:14,interpretated:3,interval:[4,5,8],intervalsecfloat:5,inthreadbool:4,intimehhmmstr:4,into:4,inuacbool:4,inuioselector:10,inurlindexstr:4,inurllist:[4,6],inurlstr:4,inusebothmonitorbool:4,inusecachebool:4,inusernamestr:4,inuserstr:4,invalue:4,inwaitsecs:10,inweekdaylist:4,inwidthpxint:4,is_enabled:11,is_visible:11,islistenbool:5,isresponsiblebool:4,issafestop:15,isstopsafe:15,issue:1,it4busines:1,it4business:1,item:[3,4,5,11],items:[4,10,11],iteration:4,iterations:5,ivan:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16],ivanmaslov:1,java:8,javascript:4,jinja2:8,jinja2dataupdatedictset:8,jinja:8,join:[4,6],jsactivitylistexecute:4,json:[2,3,4,5,8],jsprocessoractivitylistadd:4,jsrender:12,jsviews:12,just:[8,11],kb2999226:0,keep:3,key:[4,5,8,11],keyboard:[1,12,16],keyfilepathstr:5,keys:[4,11],keyturpleget:8,kill:4,killer:16,know:[3,8],known:16,kwargs:3,lactivityitem:4,laliasstr:4,last:[5,8],later:4,latest:11,launch:4,lcp:8,lcpmanager:8,leaflet:16,left:3,len:5,less:16,let:16,level:[11,16],levelname:5,lib:[4,11],libraries:11,library:11,license:16,licenses:16,life:5,lifetime:5,lifetimerequestsecfloat:5,lifetimesecfloat:5,light:3,like:[3,16],line:11,lines:11,link:[3,4,5],list:[2,3,4,5,8,10,11,16],listed:14,listen:4,listendict:5,listread:5,lists:4,litem:11,little:7,livedebugcheckthread:15,llc:[1,16],llogger:4,lnotepadokbutton:9,load:[4,8],loaded:5,local:4,localhost:5,locally:4,location:4,locations:4,lof:8,log:[4,5,7,8,15],logger:[4,5,15],loggerdumploghandleradd:5,loggerhandlerdumploglist:5,logging:[4,5,6],login:[4,5,6],logoff:[4,5],logout:16,logs:[2,4,5,7,16],logviewerbool:[5,7],lol:14,look:[3,4,5,7,14],lookmachinescreenshots:5,looks:16,loop:[4,11],loops:5,low:11,lowercase:5,lprocess:8,lprocessisstartedbool:4,lprocesslist:4,lpymodules:6,lpyopenrpa_settingsdict:10,lpyopenrpasourcefolderpathstr:6,lrdpitemdict:4,lrdptemplatedict:4,lrequest:4,lresult:5,lresultdict:[4,5],luacclientdict:6,lwebauditmessagestr:4,lxml:12,mabspathupperstr:5,mac:16,machina:5,machine:[0,4,5,16],magenthostnamestr:5,magentusernamestr:5,mail:1,main:[3,4,5,6,8,11],maintain:16,make:11,makedirs:5,manage:[4,8],manager:8,managers:[5,16],managersgitdict:5,managersprocessdict:5,manipulate:[4,7],manipulation:16,manual2auto:8,manual:8,manualstop:8,manualstoplistclear:8,manualstoptrigger:8,manualstoptriggernewstart:8,manualstoptriggerset:8,many:[1,3,4,10,16],mark:8,markdown:16,maslov:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16],master:0,match:11,matchtype:5,math:8,mathmodule:8,max:5,maximize:10,maximum:11,maybe:4,mechanism:3,mega:[3,7],megafinder:1,memory:4,menu:9,merge:4,merged:4,message:[4,5],messages:15,method:[5,11],methodmatchurl:5,methodmatchurlbeforelist:5,methodology:1,methods:8,mhammond:1,mhandlerdumploglist:5,microsoft:[0,11],minimized:10,minutes:5,missing:11,mit:1,mmstr:5,mode:14,model:11,models:1,modification:2,modify:8,module:[3,4,5,6,15],modulenamestr:4,modules:[3,4,11],moduletocall:4,monday:4,monitoring:4,monitors:4,more:[3,5,6,8,11],mouse:16,mprocessnamewoexestr:5,mrobotlogger:5,mrobotloggerfh:5,mrobotloggerformatter:5,mrobotnamestr:8,mst:8,mstatusstr:8,mstopsafetimeoutsecfloat:8,must:[4,5],mute:8,mutewait:8,name:[3,4,5,8,10],named:4,names:[3,4],namewoexestr:4,namewoexeupperstr:4,naming:11,need:[0,1,2,3,4,6,7,8,10,11],needed:[5,16],nested:4,net:[2,4,10,15],never:4,newkeydict:4,newkeylist:4,newvalue:4,next:[4,8,11],none:[2,3,4,5,8,9,10,11,15],not:[2,3,4,5,6,8,11,14],notation:[10,11],notepad:[2,4,8,9,10,11],nothing:4,nothingbool:[5,7],now:[4,5,8,10],nul:11,object:[3,4,5,10,11,16],objects:[8,10,11],occupied:4,ocr:11,octet:4,off:[5,7],old:[4,5,10],once:[8,10],one:[5,7],oninitjs:8,oninitjsdatadict:8,oninitjsstr:8,only:[0,2,4,5,7,8,10,11,16],onrefreshhtml:8,onrefreshhtmldatadict:8,onrefreshhtmlhashstr:8,onrefreshhtmlstr:8,onrefreshjson:8,onrefreshjsondict:8,op_code_1:4,open:[4,5,14,16],opencv:[0,12,16],openrpa52zzz:6,openrpa:[0,5],openrpa_32:14,openrpa_64:14,openrpaorchestrator:11,openrparesourceswpy32:11,openrparesourceswpy64:11,openrparobotguix32:10,opensource:16,opera:11,operating:16,operation:[4,8],operations:[0,6,8],operator:8,operatormodule:8,optimize:8,option:[5,7,11],optional:4,orc:[4,5,7,8],orch:5,orchestrator:[2,5,6,8],orchestratorinitwait:4,orchestratorisadmin:[4,6],orchestratorisinited:4,orchestratorloggerget:[4,6],orchestratormain:11,orchestratormodule:8,orchestratorpysearchinit:[4,6],orchestratorrerunasadmin:[4,6],orchestratorrestart:4,orchestratorscheduleget:[4,8],orchestratorsessionrestore:[4,6],orchestratorsessionsave:4,orchestratorstart:5,orchestratorthreadstart:4,order:[3,11,14],org:[1,11],oscmd:[2,4],oscredentialsverify:4,osfilebinarydatabase64strappend:2,osfilebinarydatabase64strcreate:2,osfilebinarydatabase64strreceive:2,osfilemtimeget:2,osfiletextdatastrcreate:2,osfiletextdatastrreceive:2,oslogoff:4,osremotepcrestart:[4,5],other:[10,11],others:16,our:[1,11],out:4,outargument:11,outline:10,output:[2,4,5,8],outstr:4,over:8,override:8,overwrite:5,own:[3,6,8,11,16],packages:4,page:[4,5,7,8,9],page_source:11,paid:16,panel:[4,5,7,8,14],panels:[4,5,6],parallel:4,param:[4,8],parameters:3,params:8,parent:[10,11,14],parse:4,party:16,pass:[4,5,8],password:[4,5],path:[2,4,5,6,8,11],pause:11,pay:[3,5],pdb:5,pdf:16,pem:4,perfoming:[11,16],performance:16,period:[5,8],periodic:4,periodically:[4,5],periods:8,perios:8,permanent:4,phone:3,pickle:[4,8],pid:4,pil:12,pixels:[4,5],planned:4,platform:16,please:4,plus:4,port:[4,5],portable:[0,11],portint:5,possible:16,post:[4,5],postfix:4,power:4,powerful:16,powershell:[4,5],practice:[7,16],prefer:1,prepare:[4,8],previous:[4,8],print:[6,11],procedure:4,process:[2,3,5,6,10,11,13,16],processbitness:10,processdefintervalcall:4,processdetaillist:4,processed:[4,8],processes:[4,10,16],processexists:8,processget:8,processinitsafe:8,processisstarted:4,processlistget:4,processmanual2auto:8,processmanualstoplistclear:8,processmanualstoptriggerset:8,processname:4,processor:[2,5,7,16],processoractivityitemappend:4,processoractivityitemcreate:4,processoraliasdefcreate:4,processoraliasdefupdate:4,processordict:5,processschedulestatuscheckeveryseconds:8,processstart:[4,8],processstatuscheck:8,processstatusrestore:8,processstatussave:8,processstatusstrget:8,processstop:4,processstopforce:8,processstopsafe:8,processwoexelist:4,processwoexeupperlist:4,processwoexeupperuserlistget:2,production:11,program:[4,5,8,9],programs:5,project:[3,16],properties:[7,8,16],protocol:3,prototype:5,provide:[11,16],psf:1,psutil:[6,12],pull:[5,7],purpose:1,push:5,pwa:11,pwaspecification:11,pwaspecification_get_pwaapplication:10,pwaspecification_get_uio:10,pyautogui:[1,11,12,16],pycon:11,pymupdf:12,pyopenrpa:[0,1,3,5,6,7,8,9,10,11,13,15],pyopenrpa_uidesktopx32:10,pyopenrpa_uidesktopx64:10,pyopenrpadict:[5,7],pypathstr:4,python32fullpath:10,python32processname:10,python64fullpath:10,python64processname:10,python:[0,1,3,9,10,12,14,16],pythonstart:4,pywin32:[1,12],pywinauto:[1,10,11,12],query:4,queue:[3,4,5,7],queuelist:5,r01:5,r01_integrationorderout:5,r01_orchestratortorobot:5,raised:4,rdp:[3,4,5,7],rdpactive:5,rdpkey:4,rdpkeydict:[5,7],rdpkeystr:[5,7],rdplist:[4,5],rdpsession:16,rdpsessioncmdrun:4,rdpsessionconnect:[4,5],rdpsessiondisconnect:[4,5],rdpsessiondublicatesresolve:4,rdpsessionfilestoredrecieve:4,rdpsessionfilestoredsend:4,rdpsessionkey:5,rdpsessionkeystr:5,rdpsessionlogoff:4,rdpsessionmonitorstop:4,rdpsessionprocessstartifnotrunning:4,rdpsessionprocessstop:4,rdpsessionreconnect:[4,5],rdpsessionresponsibilitycheck:4,rdptemplatecreate:4,read:[2,4,5],readthedocs:[4,5,11],ready:0,received:4,recieve:[4,5],recieved:[4,5],recognition:16,reconnect:[4,5],reconnectbool:[5,7],recoverydict:5,recursive:11,redirectclipboardbool:4,reestr_otgruzok:5,references:16,refresh:[5,8],refreshhtmljinja2strgenerate:8,refreshhtmljinja2templatepathset:8,regenerated:4,regular:11,reinit:8,relative:[4,5,8],reliable:[1,16],reload:8,remember:[5,7],remote:[4,5,16],remove:[4,8],rendering:[8,14],replace:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16],report:5,reports:5,reqired:3,request:[4,5,8],requesting:5,requestinstance:8,requests:[5,12],requesttimeoutsecfloat:5,required:[4,8],requirements:16,rerun:4,resolution:[4,5],resources:[0,4,10,11,16],response:4,responsecontenttype:5,responsedefrequestglobal:5,responsefilepath:5,responsefolderpath:5,responsibility:[4,5],responsibilitycheckintervalsec:5,responsible:[4,5],restart:[4,5,7,8],restarted:8,restartforce:8,restartorchestrator:5,restartorchestratorbool:[5,7],restartorchestratorgitpullbool:[5,7],restartpcbool:[5,7],restartsafe:8,restore:[4,6,8,10],restored:8,restructuredtext:[2,4,10,15],result:[4,5,7,8,10],results:11,retart:4,returnbool:5,returned:4,returnedbydatetime:5,rich_text:11,rich_text_re:11,right:4,rights:16,robot:[3,4,5,7,8,9,10,15],robot_r01:5,robot_r01_help:5,robotrdpactive:[4,5],robots:[3,4,6,16],rolehierarchyalloweddict:5,root:[4,5],row:5,rpa01:4,rpa:[4,5,9,16],rpa_99:4,rpatestdirtest:4,rst:[2,4,10,15],ruledomainuserdict:5,rulemethodmatchurlbeforelist:5,rules:8,run:[0,4,5,6,8,10,16],running:[2,4,14,16],runs:[4,5],rus:16,russia:[1,16],russian:16,safe:[2,4,8,10,16],safety:4,same:10,save:[4,8],saved:8,schedule:[4,5,8],scheduler:[3,8,16],scheduleractivitytimeaddweekly:4,schedulerdict:5,scheduling:[3,4,8],scopesrcul:[4,5],screen:[4,5,16],screened:5,screenshot:[0,16],screenshots:[5,7,14,16],screenshotviewerbool:[5,7],script:[3,8,16],search:[4,16],sec:[4,5],second:8,seconds:[4,5,8,10,11],section:[4,10],security:4,see:[0,4,5,6,8,9,10,16],selection:10,selector:[10,11,14,16],selectors:11,selenium:[1,12,16],self:8,semantic:[1,12],send:[2,4,5,7,8,16],send_keys:11,sensitive:4,sent:[4,5],sequence:4,sequency:3,server:[0,2,3,4,5,7,8,14,16],serverdict:5,serverinstance:5,serversettings:[5,8],serverthread:5,sesion:[4,5],session:[2,4,5,8,16],sessionguidstr:5,sessionhex:[4,5],sessionisignoredbool:[4,5],sessioniswindowexistbool:[4,5],sessioniswindowresponsiblebool:[4,5],sessions:4,set:[2,4,5,7,8,10],set_trace:5,setformatter:5,setlevel:[5,6],settings:[2,4,5,6,8,16],settingsinit:10,settingstemplate:[3,5,6],settingsupdate:[4,6],setup:5,several:[3,11,16],share:4,shared:4,shareddrivelist:[4,5],shell:[4,16],should:[5,8],show:[5,7],side:[4,5,7,8,15],signal:[4,8,15],simplify:11,since:[5,16],single:3,singleton:[2,4],site:4,size:5,skype:1,sleep:[5,11],socket:3,software:1,solution:[0,11],solutions:16,some:[1,3,4,5,7,8],someprocess:15,something:8,soon:16,sorry:16,sorted:4,source:[3,16],sourceforge:[2,4,10,15],sources:[3,6,16],space:3,spaces:3,special:[4,5],specialists:1,specification:11,specified:8,specify:[4,8],sphinx:[3,16],ssl:4,stable:[4,5],standart:5,start:[0,2,4,6,8,11,14,16],startcheck:8,started:[0,4,8],starts:[4,5,6,11],state:8,status:[4,8],statuschangelog:8,statuscheck:8,statuscheckintervalrestore:8,statuscheckstart:8,statuscheckstopforce:8,statuscheckstopsafe:8,statuscheckstorforce:8,statuses:8,statusrestore:8,statussave:8,stdout:5,stop:[4,8,11,15,16],stop_safe:8,stopforce:8,stopforcecheck:8,stopped:8,stopsafe:[8,16],stopsafecheck:8,storage:[5,16],storagedict:5,storagerobotdict:8,storagerobotexists:4,storagerobotget:[4,8],stored:5,str:[2,3,4,5,8,10,11],stream:4,streamhandler:5,strftime:5,string:[2,4,10],struct:5,structure:[3,4,5],studio:[3,13,14],subprocess:11,success:4,successful:4,successfully:[0,4,5,11,16],such:[3,16],sunday:4,supertoken:[4,6],superuser:[4,6],supetoken:4,supplement:11,support:[0,3,8,11,14,16],symbol:3,symbolic:3,sync:[3,4],synchronious:4,synchroniously:4,sys:[4,5,6,11],system:16,tablet:3,taskkill:15,tasks:1,technical:[3,5],technicalsessionguidcache:5,telegram:1,template:[8,16],term:8,terminate:8,terminated:8,termination:8,terminology:11,tesseract:12,test2:5,test:[2,4,5,6,8],testcontrolpanel:8,testdef:4,testdefalias:4,testdir:4,testdirtest:4,testrdp:5,testttt:8,text:[2,4,11,14],than:[3,5,10],thank:1,thanks:16,that:[3,4,8,10,11,15],the:[0,1,2,3,4,5,6,7,8,9,10,13,15],then:[3,4,8],theory:16,there:[4,5],thing:8,thought:4,thread:[3,4,5,7,15],threaded:5,threadidint:5,threading:4,threads:[3,4],thursday:4,thx:11,time:[2,4,5,8,11,16],timehh:5,times:5,timestamp:2,title:[9,10,11],title_re:11,todo:[4,8],token:4,tokendatetime:5,too:[4,5,7],tool:[3,5,11,14,16],tools:15,top:10,tors:16,track:4,transmission:4,transmit:[2,3,4,8],transmition:[2,3,4,5],transmitted:4,tree:16,tries:8,trigger:[4,5,8],triggercountint:5,ttt:[3,5],turn:[5,7],turple:[3,8],tutorial:16,txt:4,type:[4,5,8],types:[4,8],uac:16,uacbool:5,uacclientcheck:8,uackeylistcheck:4,uacsupertokenupdate:[4,6],uacupdate:[4,6],uacuserdictget:[4,8],uia:[10,11],uidesktop:[9,10],uio:[10,14,16],uioactivity:[10,11],uioei:11,uioinfo:11,uioselector:10,uioselector_exist_bool:10,uioselector_focushighlight:[10,11],uioselector_get_bitnessint:10,uioselector_get_bitnessstr:10,uioselector_get_uio:[9,10,11],uioselector_get_uioactivitylist:10,uioselector_get_uioinfo:10,uioselector_get_uiolist:10,uioselector_getchildlist_uiolist:10,uioselector_highlight:10,uioselector_safeotherget_process:10,uioselector_searchchildbymouse_uio:10,uioselector_searchchildbymouse_uiotree:10,uioselector_tryrestore_dict:10,uioselectorsecs_waitappear_bool:10,uioselectorsecs_waitdisappear_bool:10,uioselectorssecs_waitappear_list:10,uioselectorssecs_waitdisappear_list:10,uioselectoruioactivity_run_dict:10,uiotree:11,under:16,understand:7,unicodelabs:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16],universal:3,unix:16,unzip:0,update:4,updated:[4,5],updates:5,upper:[2,4,5,8],url:[4,5],urlindexstr:5,urllist:5,urls:5,usage:[4,8,9,11],use:[0,2,3,4,5,7,8,10,15,16],used:4,useful:[4,11],user:[2,3,4,5,6,8,10,11,16],user_99:4,user_pass_here:4,useradstr:5,userinfodict:8,username:4,usernameupperstr:4,userrpa:4,users:[3,4,7],useruaccheckdef:8,useruacdict:8,userupperstr:5,using:[4,11,16],utf:[2,4],utils:[5,10,16],value:[4,5,8,10],values:4,variants:4,ver:[4,11],verify:4,version:[4,11,14],versions:[8,11],versionstr:5,very:[1,4],via:[1,4,8],video:11,viewer:[5,7,16],virtual:5,visible:11,vision:[11,16],vista:0,visual:16,vms:4,wait:[2,4,8,10,11,14,15],want:[3,4,5,7,8,14],warning:5,warningexecutionmorethansecfloat:5,was:[0,2,4,5,16],way:[4,6],ways:11,web:[1,3,5,8,16],webaudit:4,webauditmessagecreate:4,webcpupdate:4,webdriver:11,weblistencreate:[4,6],webrequestget:4,webrequestparsebodybytes:4,webrequestparsebodyjson:4,webrequestparsebodystr:4,webrequestparsefile:4,webrequestparsepath:4,webrequestresponsesend:4,weburlconnectdef:4,weburlconnectfile:4,weburlconnectfolder:4,weburlindexchange:4,webuserinfoget:[4,8],webuserissupertoken:4,webuseruachierarchyget:4,wednesday:4,week:4,weekday:[4,5],weekdaylist:5,well:16,were:[4,16],whatsapp:1,when:[3,4,5,8,10,14],where:[2,4,11,14],which:[1,3,4,5,8,9,10,11,16],who:5,why:3,width:[4,5],wikis:11,will:[1,2,4,5,6,8,10,11,16],win32:[10,16],win32api:12,win:4,window:[2,4,5,10],windows:[0,2,4,10,12,16],winpython:1,without:[0,2,4,5,8,16],wm_close:15,wmi:12,work:[4,7,8,11],working:[4,8,15],workingdirectorypathstr:5,works:[4,5,16],world:16,wpy32:[0,10,11],wpy64:[0,4,10,11],wrapper:10,write:[1,2,3,11],writing:16,www:[1,11,12],x32:[0,10,12,14,16],x64:[0,4,10,12,14,16],xlsx:5,you:[0,1,2,3,4,5,6,7,8,9,10,11,15,16],your:[0,1,5,8,10,11],zip:0},titles:["1. \u041f\u0435\u0440\u0432\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a","2. \u041f\u0440\u0430\u0432\u0430 & \u041a\u043e\u043d\u0442\u0430\u043a\u0442\u044b","2. Defs","1. Description","2. Defs","3. gSettings Template","4. How to use","5. UAC - User Access Control","6. Defs Managers","1. \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435","2. \u0424\u0443\u043d\u043a\u0446\u0438\u0438","3. \u041a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c?","4. \u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438","1. \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435","2. \u041a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c?","2. Defs StopSafe","\u041f\u043e\u0440\u0442\u0430\u043b \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 pyOpenRPA"],titleterms:{"\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446":16,"\u0434\u043e\u0440\u043e\u0433":16,"\u0437\u0430\u0432\u0438\u0441\u0438\u043c":12,"\u0437\u0430\u043f\u0443\u0441\u043a":0,"\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430":[11,14],"\u043a\u0430\u043a":[11,14],"\u043a\u043e\u043b\u043b\u0435\u0433":16,"\u043a\u043e\u043d\u0442\u0430\u043a\u0442":1,"\u043e\u043f\u0438\u0441\u0430\u043d":[9,13],"\u043f\u0435\u0440\u0432":0,"\u043f\u043e\u0440\u0442\u0430":16,"\u043f\u0440\u0430\u0432":1,"\u0444\u0443\u043d\u043a\u0446":10,"for":[7,14],__agent__:2,__orchestrator__:4,about:[7,11,16],access:[7,11],action:14,agent:[2,4,16],and:[11,14],app:11,architecture:3,are:14,automate:11,automation:11,basic:4,button:14,capture:11,ceo:1,check:0,choose:14,click:14,cmd:11,component:3,components:1,concept:3,configure:3,content:[14,16],control:7,controlpanel:8,create:11,ctrl:14,definitions:11,defs:[2,4,8,15],dependencies:1,description:[3,14],desktop:11,details:8,dict:[3,7],dlls:11,example:11,execute:11,expand:14,extract:14,file:11,founder:1,from:11,general:8,global:3,group:4,gsettings:[4,5],gui:14,guide:16,has:16,hold:14,hover:14,how:[0,3,6,11,14],image:11,installation:0,interested:14,ivan:1,key:14,keyboard:11,license:1,list:14,main:16,managers:8,manipulation:11,maslov:1,module:11,mouse:[11,14],object:14,openrpa:11,orchestrator:[3,4,7,16],party:1,practice:11,process:[4,8],processor:[3,4],properties:14,property:14,pyopenrpa:[2,4,16],python:[4,11],rdpsession:4,recognition:11,references:[2,3,4,10,15],repo:16,requirements:0,result:14,rights:7,robot:[11,16],rpa:11,run:14,scheduler:4,screen:11,screenshot:14,script:11,search:14,seconds:14,selected:14,selenium:11,settings:3,shown:14,stopsafe:15,storage:4,structure:[11,16],studio:[11,16],system:0,template:5,the:[11,14,16],theory:11,tools:16,tree:14,turn:14,uac:[4,7],uidesktop:11,uio:11,uioselector:11,use:[6,11],user:7,viewer:14,web:[4,7,11],what:11,wiki:16,will:14,win32:11,x32:11,x64:11,you:14}}) \ No newline at end of file +Search.setIndex({docnames:["01_HowToInstall","03_Copyrights_Contacts","Agent/02_Defs","Orchestrator/01_Orchestrator","Orchestrator/02_Defs","Orchestrator/03_gSettingsTemplate","Orchestrator/04_HowToUse","Orchestrator/05_UAC","Orchestrator/06_Defs Managers","Robot/01_Robot","Robot/02_Defs","Robot/02_uidesktop","Robot/03_uiweb","Robot/04_keyboard","Robot/05_clipboard","Robot/06_mouse","Robot/07_image","Robot/08_HowToUse","Robot/09_Dependencies","Studio/01_Studio","Studio/02_HowToUse","Tools/02_Defs","index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,"sphinx.ext.todo":2,"sphinx.ext.viewcode":1,sphinx:56},filenames:["01_HowToInstall.rst","03_Copyrights_Contacts.rst","Agent\\02_Defs.rst","Orchestrator\\01_Orchestrator.rst","Orchestrator\\02_Defs.rst","Orchestrator\\03_gSettingsTemplate.rst","Orchestrator\\04_HowToUse.rst","Orchestrator\\05_UAC.rst","Orchestrator\\06_Defs Managers.rst","Robot\\01_Robot.rst","Robot\\02_Defs.rst","Robot\\02_uidesktop.rst","Robot\\03_uiweb.rst","Robot\\04_keyboard.rst","Robot\\05_clipboard.rst","Robot\\06_mouse.rst","Robot\\07_image.rst","Robot\\08_HowToUse.rst","Robot\\09_Dependencies.rst","Studio\\01_Studio.rst","Studio\\02_HowToUse.rst","Tools\\02_Defs.rst","index.rst"],objects:{"pyOpenRPA.Agent":{__Agent__:[2,0,0,"-"]},"pyOpenRPA.Agent.__Agent__":{OSCMD:[2,1,1,""],OSFileBinaryDataBase64StrAppend:[2,1,1,""],OSFileBinaryDataBase64StrCreate:[2,1,1,""],OSFileBinaryDataBase64StrReceive:[2,1,1,""],OSFileMTimeGet:[2,1,1,""],OSFileTextDataStrCreate:[2,1,1,""],OSFileTextDataStrReceive:[2,1,1,""],ProcessWOExeUpperUserListGet:[2,1,1,""]},"pyOpenRPA.Orchestrator":{__Orchestrator__:[4,0,0,"-"]},"pyOpenRPA.Orchestrator.Managers":{ControlPanel:[8,0,0,"module-1"],Process:[8,0,0,"module-0"]},"pyOpenRPA.Orchestrator.Managers.ControlPanel":{ControlPanel:[8,2,1,"id37"]},"pyOpenRPA.Orchestrator.Managers.ControlPanel.ControlPanel":{DataDictGenerate:[8,3,1,"id38"],InitJSJinja2StrGenerate:[8,3,1,"id39"],InitJSJinja2TemplatePathSet:[8,3,1,"id40"],Jinja2DataUpdateDictSet:[8,3,1,"id41"],OnInitJSDataDict:[8,3,1,"id42"],OnInitJSStr:[8,3,1,"id43"],OnRefreshHTMLDataDict:[8,3,1,"id44"],OnRefreshHTMLHashStr:[8,3,1,"id45"],OnRefreshHTMLStr:[8,3,1,"id46"],OnRefreshJSONDict:[8,3,1,"id47"],RefreshHTMLJinja2StrGenerate:[8,3,1,"id48"],RefreshHTMLJinja2TemplatePathSet:[8,3,1,"id49"]},"pyOpenRPA.Orchestrator.Managers.Process":{Process:[8,2,1,"id0"],ProcessExists:[8,1,1,"id23"],ProcessGet:[8,1,1,"id24"],ProcessInitSafe:[8,1,1,"id25"],ProcessManual2Auto:[8,1,1,"id26"],ProcessManualStopListClear:[8,1,1,"id27"],ProcessManualStopTriggerSet:[8,1,1,"id28"],ProcessScheduleStatusCheckEverySeconds:[8,1,1,"id29"],ProcessStart:[8,1,1,"id30"],ProcessStatusCheck:[8,1,1,"id31"],ProcessStatusRestore:[8,1,1,"id32"],ProcessStatusSave:[8,1,1,"id33"],ProcessStatusStrGet:[8,1,1,"id34"],ProcessStopForce:[8,1,1,"id35"],ProcessStopSafe:[8,1,1,"id36"]},"pyOpenRPA.Orchestrator.Managers.Process.Process":{KeyTurpleGet:[8,3,1,"id1"],Manual2Auto:[8,3,1,"id2"],ManualStopListClear:[8,3,1,"id3"],ManualStopTriggerNewStart:[8,3,1,"id4"],ManualStopTriggerSet:[8,3,1,"id5"],MuteWait:[8,3,1,"id6"],RestartForce:[8,3,1,"id7"],RestartSafe:[8,3,1,"id8"],Start:[8,3,1,"id9"],StartCheck:[8,3,1,"id10"],StatusChangeLog:[8,3,1,"id11"],StatusCheck:[8,3,1,"id12"],StatusCheckIntervalRestore:[8,3,1,"id13"],StatusCheckStart:[8,3,1,"id14"],StatusCheckStopForce:[8,3,1,"id15"],StatusCheckStopSafe:[8,3,1,"id16"],StatusRestore:[8,3,1,"id17"],StatusSave:[8,3,1,"id18"],StopForce:[8,3,1,"id19"],StopForceCheck:[8,3,1,"id20"],StopSafe:[8,3,1,"id21"],StopSafeCheck:[8,3,1,"id22"]},"pyOpenRPA.Orchestrator.Web":{Basic:[4,0,0,"-"]},"pyOpenRPA.Orchestrator.Web.Basic":{JSActivityListExecute:[4,1,1,""],JSProcessorActivityListAdd:[4,1,1,""]},"pyOpenRPA.Orchestrator.__Orchestrator__":{ActivityItemCreate:[4,1,1,""],ActivityItemDefAliasCreate:[4,1,1,""],ActivityItemDefAliasModulesLoad:[4,1,1,""],ActivityItemDefAliasUpdate:[4,1,1,""],ActivityItemHelperDefAutofill:[4,1,1,""],ActivityItemHelperDefList:[4,1,1,""],AgentActivityItemAdd:[4,1,1,""],AgentActivityItemExists:[4,1,1,""],AgentActivityItemReturnExists:[4,1,1,""],AgentActivityItemReturnGet:[4,1,1,""],AgentOSCMD:[4,1,1,""],AgentOSFileBinaryDataBase64StrAppend:[4,1,1,""],AgentOSFileBinaryDataBase64StrCreate:[4,1,1,""],AgentOSFileBinaryDataBase64StrReceive:[4,1,1,""],AgentOSFileBinaryDataBytesCreate:[4,1,1,""],AgentOSFileBinaryDataReceive:[4,1,1,""],AgentOSFileSend:[4,1,1,""],AgentOSFileTextDataStrCreate:[4,1,1,""],AgentOSFileTextDataStrReceive:[4,1,1,""],AgentOSLogoff:[4,1,1,""],AgentProcessWOExeUpperUserListGet:[4,1,1,""],GSettingsAutocleaner:[4,1,1,""],GSettingsGet:[4,1,1,""],GSettingsKeyListValueAppend:[4,1,1,""],GSettingsKeyListValueGet:[4,1,1,""],GSettingsKeyListValueOperatorPlus:[4,1,1,""],GSettingsKeyListValueSet:[4,1,1,""],OSCMD:[4,1,1,""],OSCredentialsVerify:[4,1,1,""],OSLogoff:[4,1,1,""],OSRemotePCRestart:[4,1,1,""],Orchestrator:[4,1,1,""],OrchestratorInitWait:[4,1,1,""],OrchestratorIsAdmin:[4,1,1,""],OrchestratorIsInited:[4,1,1,""],OrchestratorLoggerGet:[4,1,1,""],OrchestratorPySearchInit:[4,1,1,""],OrchestratorRerunAsAdmin:[4,1,1,""],OrchestratorRestart:[4,1,1,""],OrchestratorScheduleGet:[4,1,1,""],OrchestratorSessionRestore:[4,1,1,""],OrchestratorSessionSave:[4,1,1,""],OrchestratorThreadStart:[4,1,1,""],ProcessDefIntervalCall:[4,1,1,""],ProcessIsStarted:[4,1,1,""],ProcessListGet:[4,1,1,""],ProcessStart:[4,1,1,""],ProcessStop:[4,1,1,""],ProcessorActivityItemAppend:[4,1,1,""],ProcessorActivityItemCreate:[4,1,1,""],ProcessorAliasDefCreate:[4,1,1,""],ProcessorAliasDefUpdate:[4,1,1,""],PythonStart:[4,1,1,""],RDPSessionCMDRun:[4,1,1,""],RDPSessionConnect:[4,1,1,""],RDPSessionDisconnect:[4,1,1,""],RDPSessionDublicatesResolve:[4,1,1,""],RDPSessionFileStoredRecieve:[4,1,1,""],RDPSessionFileStoredSend:[4,1,1,""],RDPSessionLogoff:[4,1,1,""],RDPSessionMonitorStop:[4,1,1,""],RDPSessionProcessStartIfNotRunning:[4,1,1,""],RDPSessionProcessStop:[4,1,1,""],RDPSessionReconnect:[4,1,1,""],RDPSessionResponsibilityCheck:[4,1,1,""],RDPTemplateCreate:[4,1,1,""],SchedulerActivityTimeAddWeekly:[4,1,1,""],Start:[4,1,1,""],StorageRobotExists:[4,1,1,""],StorageRobotGet:[4,1,1,""],UACKeyListCheck:[4,1,1,""],UACSuperTokenUpdate:[4,1,1,""],UACUpdate:[4,1,1,""],UACUserDictGet:[4,1,1,""],WebAuditMessageCreate:[4,1,1,""],WebCPUpdate:[4,1,1,""],WebListenCreate:[4,1,1,""],WebRequestGet:[4,1,1,""],WebRequestParseBodyBytes:[4,1,1,""],WebRequestParseBodyJSON:[4,1,1,""],WebRequestParseBodyStr:[4,1,1,""],WebRequestParseFile:[4,1,1,""],WebRequestParsePath:[4,1,1,""],WebRequestResponseSend:[4,1,1,""],WebURLConnectDef:[4,1,1,""],WebURLConnectFile:[4,1,1,""],WebURLConnectFolder:[4,1,1,""],WebURLIndexChange:[4,1,1,""],WebUserInfoGet:[4,1,1,""],WebUserIsSuperToken:[4,1,1,""],WebUserUACHierarchyGet:[4,1,1,""]},"pyOpenRPA.Robot":{UIDesktop:[16,0,0,"-"]},"pyOpenRPA.Robot.UIDesktop":{Get_OSBitnessInt:[16,1,1,""],PWASpecification_Get_PWAApplication:[16,1,1,""],PWASpecification_Get_UIO:[16,1,1,""],UIOSelectorSecs_WaitAppear_Bool:[16,1,1,""],UIOSelectorSecs_WaitDisappear_Bool:[16,1,1,""],UIOSelectorUIOActivity_Run_Dict:[16,1,1,""],UIOSelector_Exist_Bool:[16,1,1,""],UIOSelector_FocusHighlight:[16,1,1,""],UIOSelector_GetChildList_UIOList:[16,1,1,""],UIOSelector_Get_BitnessInt:[16,1,1,""],UIOSelector_Get_BitnessStr:[16,1,1,""],UIOSelector_Get_UIO:[16,1,1,""],UIOSelector_Get_UIOActivityList:[16,1,1,""],UIOSelector_Get_UIOInfo:[16,1,1,""],UIOSelector_Get_UIOList:[16,1,1,""],UIOSelector_Highlight:[16,1,1,""],UIOSelector_SafeOtherGet_Process:[16,1,1,""],UIOSelector_SearchChildByMouse_UIO:[16,1,1,""],UIOSelector_SearchChildByMouse_UIOTree:[16,1,1,""],UIOSelector_TryRestore_Dict:[16,1,1,""],UIOSelectorsSecs_WaitAppear_List:[16,1,1,""],UIOSelectorsSecs_WaitDisappear_List:[16,1,1,""]},"pyOpenRPA.Tools":{Debugger:[21,0,0,"-"],StopSafe:[21,0,0,"-"]},"pyOpenRPA.Tools.Debugger":{LiveDebugCheckThread:[21,1,1,""]},"pyOpenRPA.Tools.StopSafe":{Init:[21,1,1,""],IsStopSafe:[21,1,1,""]}},objnames:{"0":["py","module","Python \u043c\u043e\u0434\u0443\u043b\u044c"],"1":["py","function","Python \u0444\u0443\u043d\u043a\u0446\u0438\u044f"],"2":["py","class","Python \u043a\u043b\u0430\u0441\u0441"],"3":["py","method","Python \u043c\u0435\u0442\u043e\u0434"]},objtypes:{"0":"py:module","1":"py:function","2":"py:class","3":"py:method"},terms:{"000036":9,"0643":6,"0_stopped":8,"100":[5,9],"101":4,"105":9,"1050":[4,5],"120":[5,8],"1200":5,"121":4,"123":4,"127":4,"130":9,"150":9,"1680":[4,5],"1680x1050":[4,5],"1992":6,"1_stopped_manual":8,"2008":[0,22],"2012":0,"2019":22,"222":[3,5],"230":9,"233":1,"2999226":0,"2_stop_safe":8,"300":[5,8],"3389":[4,5],"3600":5,"3720":[0,4,10,11,12,13,14,15,16,17],"3720python":17,"3_stop_safe_manual":8,"3rd":22,"412":4,"443":4,"4_started":8,"50000000":5,"5_started_manual":8,"600":5,"640x480":[4,5],"722":1,"77767775":4,"77777sdfsdf77777dsfdfsf77777777":4,"8081":5,"906":1,"995":1,"\u0430":22,"\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430":22,"\u0430\u0433\u0435\u043d\u0442":22,"\u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c":22,"\u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a":22,"\u0430\u0441\u0444\u0440":9,"\u0430\u0442\u0440\u0438\u0431\u0443\u0442":22,"\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a":[9,22],"\u0431\u043e\u043b\u044c\u0448":22,"\u0431\u043e\u0442":22,"\u0431\u0440\u0430\u0443\u0437\u0435\u0440":[9,22],"\u0431\u0443\u0434\u0435\u0442":22,"\u0431\u0443\u043a\u0432":9,"\u0431\u0443\u0444\u0435\u0440":[9,22],"\u0431\u044b\u0442":22,"\u0432":[9,10,11,12,13,14,15,16,22],"\u0432\u0430\u043c":[1,22],"\u0432\u0430\u0441":[1,22],"\u0432\u0435\u0431":[9,22],"\u0432\u0435\u043d\u0434\u043e\u0440":22,"\u0432\u0435\u0440\u0441":22,"\u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432":9,"\u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d":22,"\u0432\u043c\u0435\u0441\u0442":22,"\u0432\u043e\u0437\u043c\u043e\u0436\u043d":22,"\u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442":22,"\u0432\u043e\u043f\u0440\u043e\u0441":[1,22],"\u0432\u0440\u0435\u043c":9,"\u0432\u0441\u0435":22,"\u0432\u0441\u0435\u0433\u0434":22,"\u0432\u0441\u0435\u043c":22,"\u0432\u0441\u044e":[9,22],"\u0432\u0445\u043e\u0434\u043d":[10,11,12,13,14,15,16],"\u0432\u044b":22,"\u0432\u044b\u0431\u0440\u0430":22,"\u0432\u044b\u043a\u0438\u043d\u0443\u0442":[10,11,12,13,14,15,16],"\u0432\u044b\u043f\u043e\u043b\u043d\u044f":[10,11,12,13,14,15,16],"\u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d":22,"\u0433\u0435\u043d\u0435\u0440\u0430\u043b\u044c\u043d":22,"\u0433\u0435\u043d\u0435\u0440\u0430\u0446":22,"\u0433\u043e\u043b\u043e\u0441\u043e\u0432":22,"\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a":[9,22],"\u0434\u0430\u043d":[9,22],"\u0434\u0435\u0439\u0441\u0442\u0432":22,"\u0434\u0435\u0440\u0435\u0432":22,"\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440":22,"\u0434\u043b\u044f":[9,22],"\u0434\u043e\u0431\u0440":22,"\u0434\u043e\u0441\u0442\u0443\u043f":[9,22],"\u0434\u043e\u0441\u0442\u0443\u043f\u043d":22,"\u0434\u0440\u0443\u0433":[9,22],"\u0435\u0433":[9,22],"\u0435\u0441\u043b":22,"\u0436\u0435\u043b\u0435\u0437":22,"\u0437\u0430\u0432\u0438\u0441\u0438\u043c":22,"\u0437\u0430\u0434\u0430\u0447":22,"\u0437\u0430\u043a\u0430\u0437":9,"\u0437\u0430\u043a\u043b\u044e\u0447\u0430":22,"\u0437\u0430\u043f":22,"\u0437\u0430\u043f\u0443\u0441\u043a":[9,22],"\u0437\u0430\u043f\u0443\u0441\u043a\u0430":22,"\u0437\u043d\u0430":22,"\u0437\u0440\u0435\u043d":22,"\u0438":[9,22],"\u0438\u0432\u0430":22,"\u0438\u0437":9,"\u0438\u0437\u0432\u043b\u0435\u043a":9,"\u0438\u043c":22,"\u0438\u043c\u0435\u043d":22,"\u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d":22,"\u0438\u043d\u0438\u0446\u0438\u0430\u0442":22,"\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446":22,"\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442":[9,22],"\u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430":[9,22],"\u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442":22,"\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446":22,"\u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d":22,"\u0438\u0441\u043f\u043e\u043b\u043d":9,"\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430":22,"\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d":9,"\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c":22,"\u0438\u0441\u0445\u043e\u0434\u043d":[2,4,8,10,11,12,13,14,15,16,21],"\u043a":[9,10,11,12,13,14,15,16,22],"\u043a\u0430\u0436\u0434":22,"\u043a\u0430\u043a":22,"\u043a\u0430\u043d\u0430":1,"\u043a\u0430\u043d\u0430\u043b":[9,22],"\u043a\u0430\u0447\u0435\u0441\u0442\u0432":[9,22],"\u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440":[9,22],"\u043a\u043b\u0438\u0435\u043d\u0442":22,"\u043a\u043e\u0434":[2,4,8,10,11,12,13,14,15,16,21,22],"\u043a\u043e\u043c\u043f\u0430\u043d":22,"\u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d":22,"\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442":22,"\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d":22,"\u043a\u043e\u043d\u043d\u0435\u043a\u0442":[10,11,12,13,14,15,16],"\u043a\u043e\u043d\u0441\u043e\u043b":9,"\u043a\u043e\u043d\u0442\u0430\u043a\u0442":22,"\u043b\u0435\u0433\u043a\u043e\u0441\u0442":[9,22],"\u043b\u0438\u0446\u0435\u043d\u0437":1,"\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u043e\u043d":22,"\u043b\u0438\u0448":22,"\u043b\u043e\u0433\u0433\u0435\u0440":5,"\u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d":5,"\u043b\u043e\u043a\u0430\u043b\u044c\u043d":[9,22],"\u043b\u044e\u0431":[9,22],"\u043b\u044e\u0434":22,"\u043c\u0430\u0441\u043b":22,"\u043c\u0430\u0448\u0438\u043d":22,"\u043c\u043e\u0434\u0443\u043b":9,"\u043c\u043e\u0436\u0435\u0442":22,"\u043c\u043e\u0449\u043d\u043e\u0441\u0442":22,"\u043c\u044b":[1,22],"\u043c\u044b\u0448":[9,22],"\u043d\u0430":[9,22],"\u043d\u0430\u0431\u043e\u0440":22,"\u043d\u0430\u0432\u0435\u0434\u0435\u043d":22,"\u043d\u0430\u0434":22,"\u043d\u0430\u043c":22,"\u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430":9,"\u043d\u0430\u0446\u0435\u043b\u0435\u043d":22,"\u043d\u0430\u0448":[9,22],"\u043d\u0435":[10,11,12,13,14,15,16,22],"\u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d":22,"\u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c":[9,22],"\u043d\u0438\u0436":9,"\u043d\u043e\u0432":22,"\u043d\u043e\u043c\u0435\u0440":9,"\u043d\u0443\u0436\u043d":22,"\u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430":[9,22],"\u043e\u0431\u043c":[9,22],"\u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d":[10,11,12,13,14,15,16],"\u043e\u0431\u043e\u0441\u043e\u0431\u043b\u0435\u043d":22,"\u043e\u0431\u0440\u0430\u0442":22,"\u043e\u0431\u0443\u0447\u0435\u043d":22,"\u043e\u0431\u044a\u0435\u043a\u0442":22,"\u043e\u0434\u043d":22,"\u043e\u0437\u043d\u0430\u043a\u043e\u043c":22,"\u043e\u043f\u0438\u0441\u0430\u043d":22,"\u043e\u0441":9,"\u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b":22,"\u043e\u0441\u043d\u043e\u0432\u043d":22,"\u043e\u0441\u0442\u0430":1,"\u043e\u0441\u0442\u0430\u043b\u044c\u043d":22,"\u043e\u0442":22,"\u043e\u0442\u043a\u043b\u044e\u0447":22,"\u043e\u0442\u043a\u0440":9,"\u043e\u0442\u043a\u0440\u044b\u0442":22,"\u043e\u0442\u043b\u0430\u0434\u043a":22,"\u043e\u0448\u0438\u0431\u043a":[10,11,12,13,14,15,16],"\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440":[2,4,8,10,11,12,13,14,15,16,21],"\u043f\u0435\u0440\u0432":22,"\u043f\u0435\u0440\u0435\u0434":22,"\u043f\u0435\u0440\u0435\u0434\u0430\u0447":[9,22],"\u043f\u0435\u0440\u0435\u0439\u0442":9,"\u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d":[9,22],"\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c":22,"\u043f\u043e":22,"\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a":5,"\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a":22,"\u043f\u043e\u0434\u0440\u043e\u0431\u043d":22,"\u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430":22,"\u043f\u043e\u0437\u0432\u043e\u043b\u044f":[9,22],"\u043f\u043e\u0438\u0441\u043a":22,"\u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b":[10,11,12,13,14,15,16],"\u043f\u043e\u043a\u043e\u043b\u0435\u043d":22,"\u043f\u043e\u043a\u0443\u043f\u0430\u0442\u0435\u043b":9,"\u043f\u043e\u043b\u043e\u0436\u0435\u043d":22,"\u043f\u043e\u043c\u043e\u0433\u0443\u0442":22,"\u043f\u043e\u043c\u043e\u0436":[1,22],"\u043f\u043e\u0440\u0442\u0430":1,"\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f":[9,22],"\u043f\u043e\u0447\u0442":1,"\u043f\u0440\u0430\u0432":22,"\u043f\u0440\u0430\u0432\u043e\u043e\u0431\u043b\u0430\u0434\u0430\u0442\u0435\u043b":22,"\u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d":22,"\u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430":22,"\u043f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442":9,"\u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446":22,"\u043f\u0440\u0435\u0441\u0442\u0430\u0432\u043b":9,"\u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430":22,"\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d":[9,22],"\u043f\u0440\u0438\u043c\u0435\u0440":9,"\u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d":22,"\u043f\u0440\u043e\u0431\u043b":22,"\u043f\u0440\u043e\u0431\u043b\u0435\u043c":22,"\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d":[9,22],"\u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d":22,"\u043f\u0440\u043e\u0435\u043a\u0442":[9,22],"\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u043c":22,"\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d":22,"\u043f\u0440\u043e\u0441\u0442":22,"\u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b":9,"\u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0438\u0440\u043e\u0432\u0430\u043d":22,"\u043f\u0440\u043e\u0446\u0435\u0441\u0441":[10,11,12,13,14,15,16],"\u043f\u0443\u0441\u0442":[10,11,12,13,14,15,16],"\u0440\u0430\u0431\u043e\u0442":9,"\u0440\u0430\u0431\u043e\u0447":9,"\u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d":22,"\u0440\u0430\u043c\u043a":22,"\u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d":22,"\u0440\u0435\u0430\u043b\u044c\u043d":22,"\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d":22,"\u0440\u0435\u0434\u0430\u043a\u0446":9,"\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442":[2,4,8,10,11,12,13,14,15,16,21],"\u0440\u0435\u0447\u0435\u0432":22,"\u0440\u0435\u0448\u0430":22,"\u0440\u0435\u0448\u0435\u043d":22,"\u0440\u043e\u0431\u043e\u0442":9,"\u0440\u043e\u0431\u043e\u0442\u0438\u0437\u0430\u0446":22,"\u0440\u044b\u043d\u043a":22,"\u0440\u044f\u0434":22,"\u0441":[9,22],"\u0441\u0430\u043c":22,"\u0441\u0435\u043b\u0435\u043a\u0442\u043e\u0440":22,"\u0441\u0438\u0441\u0442\u0435\u043c\u043d":22,"\u0441\u043b\u0443\u0447\u0430":[10,11,12,13,14,15,16],"\u0441\u043c":22,"\u0441\u043c\u043e\u0442\u0440\u0435\u0442":22,"\u0441\u043e\u0434\u0435\u0440\u0436":[9,22],"\u0441\u043e\u0437\u0434\u0430":[5,22],"\u0441\u043e\u0437\u0434\u0430\u043d":[9,22],"\u0441\u043e\u0442\u043d":22,"\u0441\u043e\u0444\u0442":22,"\u0441\u043e\u0447\u0435\u0442\u0430":22,"\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442":22,"\u0441\u043f\u0438\u0441\u043a":[10,11,12,13,14,15,16],"\u0441\u0441\u044b\u043b\u043a":22,"\u0441\u0442\u0430\u043b":22,"\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442":22,"\u0441\u0442\u043e\u043b":9,"\u0441\u0442\u043e\u0440\u043e\u043d":22,"\u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0447\u0435\u0441\u043a":22,"\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440":22,"\u0442\u0430\u043a":22,"\u0442\u0435\u043a\u0441\u0442\u043e\u0432":[9,22],"\u0442\u0435\u043b\u0435\u0433\u0440":1,"\u0442\u0435\u043b\u0435\u0444\u043e\u043d":1,"\u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433":[9,22],"\u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u043d":22,"\u0442\u0438\u043f":4,"\u0442\u043e":22,"\u0442\u043e\u043b\u044c\u043a":22,"\u0442\u0440\u0435\u0431":[10,11,12,13,14,15,16],"\u0443":1,"\u0443\u0437\u043b":22,"\u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d":22,"\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d":9,"\u0443\u043f\u0440\u0430\u0432\u043b\u044f":22,"\u0443\u0440\u043e\u0432\u0435\u043d":[9,22],"\u0443\u0441\u043b\u0443\u0433":22,"\u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a":22,"\u0444\u0430\u0439\u043b":5,"\u0444\u0438\u0440\u043c":9,"\u0444\u043b\u0430\u0433":[10,11,12,13,14,15,16],"\u0444\u0443\u043d\u043a\u0446":[9,22],"\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d":[9,22],"\u0446\u0435\u043d\u043d\u043e\u0441\u0442":22,"\u0446\u0435\u043d\u0442\u0440":22,"\u0447\u0430\u0442":22,"\u0447\u0435\u0440\u0435\u0437":9,"\u0447\u0438\u0441\u0442\u043e\u0442":22,"\u0447\u0442\u0435\u043d":22,"\u0447\u0442\u043e":[9,10,11,12,13,14,15,16,22],"\u044d\u043a\u0440\u0430":[9,22],"\u044d\u043b\u0435\u043c\u0435\u043d\u0442":[9,10,11,12,13,14,15,16,22],"\u044d\u0440\u0430\u043d":9,"\u044d\u0442":22,"\u044f":9,"\u044f\u0432\u043b\u044f":22,"case":[2,4,5,8,10,11,12,13,14,15,16,17],"catch":[2,4,5],"class":[8,17],"continue":4,"debugger":21,"default":[2,4,5,8,17,20],"double":20,"else":[2,4,5,6,8,10,11,12,13,14,15,16],"false":[2,4,5,6,8,10,11,12,13,14,15,16],"float":[2,3,5,8,10,11,12,13,14,15,16],"for":[0,1,2,3,4,5,6,8,10,11,12,13,14,15,16,17,22],"function":[1,4,5,8],"import":[3,4,5,6,8,9,10,11,12,13,14,15,16,17,21],"int":[3,4,8,10,11,12,13,14,15,16,17],"interface":[3,4,6,17],"long":1,"new":[1,3,4,5,6,8],"package":[0,6,8,22],"private":4,"return":[2,4,5,8,9,10,11,12,13,14,15,16,17],"switch":[8,18],"this":[2,4,5,7,8,17,22],"true":[2,4,5,6,7,8,10,11,12,13,14,15,16,17,21],"try":[4,10,11,12,13,14,15,16],"var":4,"while":[4,8],"with":[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,22],__agent__:22,__agentactivityreturndictitemcreate__:5,__agentdictitemcreate__:5,__create__:5,__init__:4,__main__:6,__name__:6,__orchestrator__:[8,22],__statisticsdict__:5,__uacclientadmincreate__:[5,6],_sessiolast:4,_sessionlast_gsettings:4,_sessionlast_rdplist:4,_sessionlast_storagedict:4,a2o:4,ability:17,able:22,about:[1,3,4,5,8,21],above:4,abs:[2,4,5],absolute:[4,5,8],absolutely:[2,4,22],abspath:[4,6],access:[4,5,6,22],accessusers:5,action:4,actions:[4,17],activate:5,activation:4,active:[3,4,5,8],activities:[4,5,8,10,11,12,13,14,15,16],activity:[3,4,5,7,8,10,11,12,13,14,15,16,17,20],activitydict:[5,7],activityitem:[2,4],activityitemcreate:4,activityitemdefaliascreate:4,activityitemdefaliasmodulesload:4,activityitemdefaliasupdate:4,activityitemdict:4,activityitemhelperdefautofill:4,activityitemhelperdeflist:4,activityitemnowdict:5,activitylist:5,activitylistappendprocessorqueuebool:[5,7],activitylistexecute:4,activitylistexecutebool:[5,7],activityname:17,activitytimelist:5,actual:4,add:[4,5,6,8,17],addhandler:5,additional:[4,22],address:[4,5],addressstr:5,admin:[4,7],admindict:[5,7],administrator:[4,6],after:[3,4,5,6,8,10,11,12,13,14,15,16,20,21],agent:[5,8],agentactivityitemadd:4,agentactivityitemexists:4,agentactivityitemreturnexists:4,agentactivityitemreturnget:4,agentactivitylifetimesecfloat:5,agentactivityreturndict:5,agentactivityreturnlifetimesecfloat:5,agentconnectionlifetimesecfloat:5,agentdict:[4,5],agentfilechunkbytessizeint:5,agentfilechunkcheckintervalsecfloat:5,agentkeydict:[5,7],agentkeystr:[5,7],agentlimitlogsizebytesint:5,agentloopsleepsecfloat:5,agentoscmd:4,agentosfilebinarydatabase64strappend:4,agentosfilebinarydatabase64strcreate:4,agentosfilebinarydatabase64strreceive:4,agentosfilebinarydatabytescreate:4,agentosfilebinarydatareceive:4,agentosfilesend:4,agentosfiletextdatastrcreate:4,agentosfiletextdatastrreceive:4,agentoslogoff:4,agentprocesswoexeupperuserlistget:4,algorithm:22,algorithms:3,algorythm:22,algorythms:[3,5],alias:[3,4,5],aliasdefdict:[3,4,5],alive:8,all:[3,4,5,6,7,8,10,11,12,13,14,15,16,17,22],allow:[4,6,7,8],allowed:[4,5],allows:17,already:[4,17],also:4,amd64:[0,4,10,11,12,13,14,15,16,17],and:[1,2,3,4,5,7,8,10,11,12,13,14,15,16,22],another:[4,10,11,12,13,14,15,16,20],anr:4,ant:8,any:[0,3,4,8,17,20],apache:1,app:[2,4,10,11,12,13,14,15,16,22],appear:[4,10,11,12,13,14,15,16,21],appeared:[10,11,12,13,14,15,16],append:[3,4,5,7,17],appended:[4,8],applicable:[3,5,8,17],application:[4,10,11,12,13,14,15,16],applications:[10,11,12,13,14,15,16],applied:8,apply:[3,5,8],approach:17,apps:[4,17,22],architecture:22,archive:[0,4,5],are:[0,4,8,17],arg:[3,4],argdict:[3,4,5],arggsettings:[3,4,5],arglist:[3,4,5],arglogger:[3,4,5],args:[3,4,5],argument:4,arguments:4,argvaluestr:4,article:22,artificial:17,asctime:5,ask:[4,5],assert:17,associated:4,asweigart:1,async:[3,4],asynchonus:3,attention:[2,3,4,5,7,17,20,22],attribute:[3,5,10,11,12,13,14,15,16,17],attributes:[10,11,12,13,14,15,16,17],audit:4,authentication:5,authentificated:4,author:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22],authtoken:5,authtokensdict:5,auto:[4,8],autocleaner:[3,5],autodetect:4,autoinit:[4,6],automate:8,automatically:[5,20],automation:[9,18,22],automationsearchmouseelement:[10,11,12,13,14,15,16],automatized:3,available:[4,5,6,17],b4ff:6,b64decode:2,backend:[9,10,11,12,13,14,15,16,17],backward:[4,8],base64:[2,4],base:4,base_wrapper:17,based:[3,4,22],basehttprequesthandler:[4,8],basic:[3,5,6,22],beautiful:[2,4],because:[3,4,8,17],been:[0,4,5,17,22],before:[4,5],beginwith:[4,5],below:[3,4,20,22],best:22,between:[3,4,5,6],big:[4,17,22],binary:[2,4],bit:[1,17],bitness:[4,10,11,12,13,14,15,16],blob:1,block:[4,8],blocked:[5,8],body:[4,5],bool:[3,4,5,8,17],boppreh:1,borismoore:1,both:[4,10,11,12,13,14,15,16,17],box:6,branch:0,browser:[5,20],bsd:1,bugs:1,build:[1,22],built:0,business:[3,4,17,22],but:8,button:[5,7],bytes:4,cabinetwclass:17,cache:[4,5],calcframe:17,call:[3,4,5,6,8,10,11,12,13,14,15,16],callable:4,called:4,can:[1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,17,21,22],cancel:[10,11,12,13,14,15,16],cant:3,capture:22,cases:3,catched:8,catchperiodsecfloat:5,centralized:3,certfilepempathstr:5,certificate:4,change:[4,8,22],changed:5,changes:8,check:[4,5,8,10,11,12,13,14,15,16,17,21,22],checkintervalsecfloat:5,child:[10,11,12,13,14,15,16,17],children:17,choose:[10,11,12,13,14,15,16],chrome:17,chunk:5,class_name:[9,17],class_name_re:17,classes:8,classification:17,clause:1,cleaner:4,clear:[4,5,8,17],click:17,click_input:9,client:[4,5,8],clientrequesthandler:5,clipboard:[4,9,22],clipboardget:9,clipboardset:9,close:[4,5,17,21],cmd:[2,4,5,7,8,9,20,22],cmdinputbool:[5,7],code:[3,4,5,8,17],collecting:5,com:[0,1,17,18],come:[2,4,21,22],comma:3,command:[2,4,17],commands:[4,5],commercial:22,common:17,communication:4,compact:1,companies:[1,22],company:[1,4],compatibility:[4,8,17],compexity:3,compiled:22,completed:[0,5],completion:5,complex:3,component:22,components:3,computer:17,concept:22,condition:[10,11,12,13,14,15,16,17],config:[6,10,11,12,13,14,15,16],configuration:[3,4,5,6,10,11,12,13,14,15,16],configurations:6,configure:[5,22],congratulate:22,connect:[4,5],connection:[4,5],connectioncountint:5,connectionfirstqueueitemcountint:5,consist:3,console:[5,17,20],consolidated:[3,22],contact:1,container:8,contains:[4,5,10,11,12,13,14,15,16,17,20],content:[2,4,5],context:8,control:[3,4,5,6,8,22],control_type:[9,17],control_type_re:17,controlpanel:[4,5,6,22],controlpanelcp_:4,controlpaneldict:5,controlpanelinstance:8,controlpanelkeyallowedlist:5,controlpanelrefreshintervalsecfloat:5,controls:[4,5,7],convention:17,cookie:5,copy:17,core:3,cost:22,count:8,counts:8,coverage:8,cp1251:[2,4],cp866:[2,4],cp_:[4,6],cp_versioncheck:4,cpkey:5,cpkeydict:[5,7],cpkeystr:[5,7],create:[1,2,3,4,5,6,8,21,22],created:[1,4,5],creating:5,credentials:4,criteria:8,crosscheck:4,css:18,ctrl:9,ctrl_index:17,ctypes:9,current:[2,3,4,5,7,8,17],custom:17,customization:3,customize:7,customized:3,cv2:17,daemon:4,daemonic:2,dashboard:4,data:[2,4,5,8],datadictgenerate:8,datasetlast:5,datetime:[5,6],day:4,deadlines:1,dear:22,debugging:[4,5],decentralized:3,decided:22,decode:2,def:[3,4,5,6,8,9,10,11,12,13,14,15,16,21],defaliastest:[3,5],defaults:4,defhelper:4,defnamestr:5,defs:[3,7,22],defsettingsupdatepathlist:5,demo:9,dependencies:22,deployed:4,deprecated:4,depth:17,depth_end:[9,17],depth_start:[9,17],depth_stop:17,depthbit:[4,5],desciption:17,description:[10,11,12,13,14,15,16,17,22],desktop:[3,4,5,8,10,11,12,13,14,15,16,22],desktopuser:4,destination:[4,10,11,12,13,14,15,16],details:[3,4,22],detect:[4,5,8,10,11,12,13,14,15,16,17],determine:4,determined:8,dev:4,develop:22,developed:[17,22],developer:22,developing:4,dict:[2,4,5,8,10,11,12,13,14,15,16,17,22],dictionary:[3,5],different:3,directory:[4,8,17,21],disappear:[10,11,12,13,14,15,16],disappeared:[10,11,12,13,14,15,16],disc:4,disconnect:[4,5],distributed:22,division:22,dll:17,dlls:22,docs:[17,22],document:[10,11,12,13,14,15,16],documentation:22,docutils:[2,4,10,11,12,13,14,15,16,21],dodict:5,doens:4,does:[4,20],doesn:[10,11,12,13,14,15,16],domain:5,domainadstr:5,domainupperstr:4,domainuser:4,don:[2,4,5,7,8],dont:[4,5,7,8],dos:[2,4],double_click_input:9,download:0,dp0:17,draw:[10,11,12,13,14,15,16],draw_outline:9,drive:4,driver:17,drives:[4,5],dsd:[3,5],dumo:4,dump:[5,6,8],dumploglist:5,dumploglistcountint:5,dumploglisthashstr:5,dumploglistrefreshintervalsecfloat:5,duplicates:4,duration:5,dynamically:17,each:[4,5,17,22],early:[2,4],echo:9,edit:9,editor:20,elem:17,element:[10,11,12,13,14,15,16,17],empty:[4,5,7],enabled:[4,17],encapsulated:[2,4],encapsulation:22,encode:[2,4],encoding:[2,4],end:[3,4],eng:22,enjoy:4,enter:9,enterprise:22,enumerate:8,enumeratedef:8,env:[5,8],enviroment:17,environment:4,equal:[4,5],equalcase:[4,5],etc:4,even:4,event:8,events:8,ever:4,every:[4,5,8],everyday:4,exact:17,example:[2,3,4,7,8,10,11,12,13,14,15,16],examples:[4,5,17],except:4,exception:[4,8],exceptions:[0,4],exe:[0,2,4,8,10,11,12,13,14,15,16,17,21],executable:[3,4,19],execute:[2,3,4,5,7,8,22],executebool:5,executed:4,executing:5,execution:[2,3,4,5,8,17],exist:[2,4,5,10,11,12,13,14,15,16,17],existing:8,exists:[4,5,8],expensive:22,expires:4,explorer:[17,20],expression:17,extension:[4,8,17],extra:4,extract:[4,22],extraction:17,facebook:1,fails:8,fast:[1,22],feature:[3,4,5,7],features:[3,22],feel:1,field:[4,5],file:[2,4,5,8,21],filebodybytes:4,filehandler:5,filemanager:5,filemode:5,filenamestr:4,files:[4,5],fileurl:5,fileurlfilepathdict:5,fileurlfilepathdict_help:5,fill:[4,5],filled:5,fills:5,filter:4,find:[1,3,10,11,12,13,14,15,16,17],find_element_by_name:17,find_window:17,find_windows:[10,11,12,13,14,15,16],firefox:17,first:[6,17,22],flag:[2,4,5,8],flagaccess:5,flagaccessdefrequestglobalauthenticate:5,flagcredentialsask:5,flagdonotexpire:5,flagsessionisactive:[4,5],flaguseallmonitors:[4,5],flase:[2,4],flexibility:3,focus:[10,11,12,13,14,15,16],folder:[4,6,17,22],following:[0,7,8,20,22],force:[4,8,22],forget:5,format:[2,4,8],formatter:5,found:17,foundation:1,framework:[10,11,12,13,14,15,16,18],frameworks:17,free:[1,22],friday:4,friendly_class_name:17,friendly_class_name_re:17,fro:4,from:[0,2,3,4,5,6,8,9,10,11,12,13,14,15,16,21,22],front:4,full:[4,5],fullscreen:[4,5],fullscreenbool:[5,7],fullscreenrdpsessionkeystr:5,fully:17,functionality:17,functionallity:6,functions:[2,4,8,10,11,12,13,14,15,16,17,21],further:4,futher:8,garbage:4,general:[5,22],generate:[4,8],generated:4,generation:8,generator:4,get:[4,5,8,10,11,12,13,14,15,16,17,22],get_osbitnessint:[10,11,12,13,14,15,16],getcontrol:[10,11,12,13,14,15,16],getlogger:5,giampaolo:1,git:[0,4,5,7],github:1,gitlab:[0,1,17,22],give:[4,5,7],given:4,glob:4,global:[2,4,22],goes:[3,8],going:22,good:[3,22],graphic:17,great:22,group:[7,22],gsettings:[3,6,8,22],gsettingsautocleaner:4,gsettingsdict:4,gsettingsget:[4,6],gsettingskeylistvalueappend:4,gsettingskeylistvalueget:4,gsettingskeylistvalueoperatorplus:4,gsettingskeylistvalueset:4,gui:[2,3,4,10,11,12,13,14,15,16,17,18,22],guid:[4,5],guidstr:[4,5],gurbage:5,guys:22,habr:22,handle:5,handlebars:[1,18],handler:[4,5,8],handlers:5,hard:[4,5,7],has:[0,1,3,4,5,7,8,17,21,22],hash:8,have:4,height:[4,5],help:[0,1,4],helpfully:[10,11,12,13,14,15,16],here:[4,6,10,11,12,13,14,15,16,17,22],hex:[4,5,17],hidden:4,hiddenisorchestratorinitialized:5,hierarchy:[4,17,20],highlight:[10,11,12,13,14,15,16,17,20],hightlight:20,homepage:1,host:[4,5],hosted:[1,22],hostname:[4,8],hostnameupperstr:5,how:[8,10,11,12,13,14,15,16,21,22],hpnd:1,html:[2,4,5,8,10,11,12,13,14,15,16,17,21,22],http:[1,2,3,4,5,8,10,11,12,13,14,15,16,17,21],https:[0,1,4,5,17,18],human:4,identification:[4,17],identify:[8,17],ignore:[4,5],ignorebool:[5,7],ignored:4,image:[9,22],imaslov:6,implement:17,implemented:17,important:[4,10,11,12,13,14,15,16],imported:4,importing:4,inactionname:[10,11,12,13,14,15,16],inactivityitemdict:4,inactivitylist:4,inaddressstr:4,inadisdefaultbool:[4,6],inadloginstr:[4,6],inadstr:[4,6],inagentfilepathstr:4,inagenthostnamestr:8,inagentusernamestr:8,inaliasstr:4,inarg1str:4,inargdict:4,inarggsettings:4,inarggsettingsstr:4,inarglist:4,inargloggerstr:4,inargument:17,inargumentlist:[10,11,12,13,14,15,16],inasyncinitbool:[4,6],inbackend:[10,11,12,13,14,15,16],inbreaktriggerprocesswoexelist:4,incapturebool:[2,4],incertfilepempathstr:4,incheckintervalsecfloat:4,incloseforcebool:4,included:[9,10,11,12,13,14,15,16],incmdencodingstr:[2,4],incmdstr:[2,4],incontenttypestr:4,incontrolpanelnamestr:8,incontrolspecificationarray:[10,11,12,13,14,15,16],incpkeystr:4,indatadict:8,indef:4,indefargdict:4,indefarggsettingsnamestr:4,indefarglist:4,indefargloggernamestr:4,indefargnamegsettingsstr:[4,6],indefnamestr:4,indefquerystr:4,indefstr:[4,6],indepthbitint:4,index:[3,4,5,10,11,12,13,14,15,16,17],indict:5,indomainstr:4,indumprestorebool:[4,6],inelement:[10,11,12,13,14,15,16,17],inelementspecification:[10,11,12,13,14,15,16],inencodingstr:[2,4],inexecuteinnewthreadbool:4,infiledatabase64str:[2,4],infiledatabytes:4,infiledatastr:[2,4],infilepathstr:[2,4],infinite:4,inflagforceclosebool:4,inflaggetabspathbool:4,inflagraiseexception:[10,11,12,13,14,15,16,17],inflagwaitallinmoment:[10,11,12,13,14,15,16],info:[4,5,6,17],infolderpathstr:4,inforcebool:4,information:[3,4,8],infrastructure:22,inglobpatternstr:[4,6],ingsettings:[2,3,4,6],ingsettingsclientdict:5,inguidremovebool:4,inguidstr:4,inhashkeystr:5,inheightpxint:4,inherited:17,inhostfilepathstr:4,inhostnamestr:4,inhoststr:[4,5],inhtmlrenderdef:4,inintervalasyncbool:4,inintervalsecfloat:4,inintervalsecondsint:8,inismanualbool:8,init:[3,4,5,6,8,10,11,12,13,14,15,16,21],init_debug:21,initdatetime:5,inited:[4,5],initial:4,initialization:4,initialized:[4,5,8],initiate:4,initjsjinja2strgenerate:8,initjsjinja2templatepathset:8,injinja2dataupdatedict:8,injinja2templatepathstr:8,injinja2templaterefreshbool:8,injsinitgeneratordef:4,injsongeneratordef:4,inkeyfilepathstr:4,inkeylist:4,inkeystr:5,inkwargs:21,inkwargumentobject:[10,11,12,13,14,15,16],inlogger:[4,5,21],inloggerlevel:5,inloginstr:[4,5],inmatchtypestr:4,inmessagestr:4,inmethodstr:4,inmodestr:[3,4,5,6],inmodulepathstr:4,inmstdnint:8,inmstdtsecfloat:8,inmuteignorebool:8,inoperationcodestr:4,inorchestratorfilepathstr:4,inpasswordstr:[4,5],inpathstr:4,inportint:4,inportstr:[4,5],inprocessnamewexestr:4,inprocessnamewoexelist:[2,4],inprocessnamewoexestr:[4,8],inrdpfilepathstr:4,inrdpsessionkeystr:[4,5],inrdptemplatedict:4,inredirectclipboardbool:4,inrefreshhtmljinja2templatepathstr:8,inrequest:[4,8],inresponestr:4,inreturn:5,inrobotnamestr:[4,8],inrolehierarchyalloweddict:[4,6],inrolekeylist:4,inrowcountint:5,inrunasadministratorbool:4,inrunasyncbool:[2,4],insendoutputtoorchestratorlogsbool:[2,4],insert:[4,6],inserverkeystr:4,inshareddrivelist:4,inspecificationlist:[10,11,12,13,14,15,16,17],inspecificationlistlist:[10,11,12,13,14,15,16],install:[0,9],installation:22,installed:0,instance:[3,4,5,8,10,11,12,13,14,15,16,17],instartargdict:8,instartcmdstr:8,instartpathstr:8,instatuscheckintervalsecfloat:8,instopprocessnamewoexestr:4,instopsafetimeoutsecfloat:8,insupertokenstr:[4,6],intelligence:17,interaction:[3,4,10,11,12,13,14,15,16],interested:4,internal:8,internet:20,interpretated:3,interval:[4,5,8],intervalsecfloat:5,inthreadbool:4,intimehhmmstr:4,into:4,inuacbool:4,inuioselector:[10,11,12,13,14,15,16],inurlindexstr:4,inurllist:[4,6],inurlstr:4,inusebothmonitorbool:4,inusecachebool:4,inusernamestr:4,inuserstr:4,invalue:4,inwaitsecs:[10,11,12,13,14,15,16],inweekdaylist:4,inwidthpxint:4,is_enabled:17,is_visible:17,islistenbool:5,isresponsiblebool:4,issafestop:21,isstopsafe:21,issue:1,it4busines:1,it4business:1,item:[3,4,5,17],items:[4,10,11,12,13,14,15,16,17],iteration:4,iterations:5,ivan:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22],ivanmaslov:1,java:8,javascript:4,jinja2:[1,8],jinja2dataupdatedictset:8,jinja:[1,8],join:[4,6],jsactivitylistexecute:4,json:[2,3,4,5,8],jsprocessoractivitylistadd:4,jsrender:[1,18],jsviews:18,just:[8,17],kb2999226:0,keep:3,key:[4,5,8,17],keyboard:[1,9,18,22],keyfilepathstr:5,keys:[4,17],keyturpleget:8,kill:4,know:[3,8],known:22,kwargs:3,lactivityitem:4,laliasstr:4,lang:1,last:[5,8],later:4,latest:17,launch:4,lcommentselector:9,lcp:8,lcpmanager:8,ldemobase:9,ldemobaseselector:9,leaflet:22,left:3,len:5,less:22,let:22,level:[17,22],levelname:5,lib:[4,17],libraries:17,library:[9,17],license:[1,22],licenses:[1,22],life:5,lifetime:5,lifetimerequestsecfloat:5,lifetimesecfloat:5,light:3,like:3,line:17,lines:17,link:[3,4,5],list:[2,3,4,5,8,10,11,12,13,14,15,16,17,22],listed:20,listen:4,listendict:5,listread:5,lists:4,litem:17,little:7,livedebugcheckthread:21,llc:[1,22],llogger:4,load:[4,8],loaded:5,local:4,localhost:5,locally:4,location:4,locations:4,lof:8,log:[4,5,7,8,21],logger:[4,5,21],loggerdumploghandleradd:5,loggerhandlerdumploglist:5,logging:[4,5,6],login:[4,5,6],logoff:[4,5],logout:22,logs:[2,4,5,7,22],logviewerbool:[5,7],lol:20,look:[3,4,5,7,20],lookmachinescreenshots:5,loop:[4,17],loops:5,lordernumberselector:9,low:17,lowercase:5,lprocess:8,lprocessisstartedbool:4,lprocesslist:4,lpymodules:6,lpyopenrpa_settingsdict:[10,11,12,13,14,15,16],lpyopenrpasourcefolderpathstr:6,lrdpitemdict:4,lrdptemplatedict:4,lrequest:4,lresult:5,lresultdict:[4,5],lrunbase:9,lrunbaseselector:9,ltextraw:9,ltimestr:9,luacclientdict:6,lwebauditmessagestr:4,lxml:18,mabspathupperstr:5,mac:22,machina:5,machine:[0,4,5,22],magenthostnamestr:5,magentusernamestr:5,mail:1,main:[1,3,4,5,6,8,17],maintain:22,make:17,makedirs:5,manage:[4,8],manager:8,managers:[5,22],managersgitdict:5,managersprocessdict:5,manipulate:[4,7],manipulation:22,manual2auto:8,manual:8,manualstop:8,manualstoplistclear:8,manualstoptrigger:8,manualstoptriggernewstart:8,manualstoptriggerset:8,many:[1,3,4,10,11,12,13,14,15,16,22],mark:8,markdown:22,maslov:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22],master:[0,1],match:17,matchtype:5,math:8,mathmodule:8,max:5,maximize:[10,11,12,13,14,15,16],maximum:17,maybe:4,mechanism:3,mega:[3,7],memory:4,merge:4,merged:4,message:[4,5],messageboxw:9,messages:21,method:[5,17],methodmatchurl:5,methodmatchurlbeforelist:5,methodology:1,methods:8,mhammond:1,mhandlerdumploglist:5,microsoft:[0,17],minimized:[10,11,12,13,14,15,16],minutes:5,missing:17,mit:1,mmstr:5,mode:20,model:17,models:1,modification:2,modify:8,module:[3,4,5,6,21],modulenamestr:4,modules:[3,4,17],moduletocall:4,monday:4,monitoring:4,monitors:4,more:[3,5,6,8,17],mouse:[9,22],mousedown:9,mouseup:9,moveto:9,mprocessnamewoexestr:5,mrobotlogger:5,mrobotloggerfh:5,mrobotloggerformatter:5,mrobotnamestr:8,msg_box:9,mst:8,mstatusstr:8,mstopsafetimeoutsecfloat:8,must:[4,5],mute:8,mutewait:8,name:[3,4,5,8,10,11,12,13,14,15,16],named:4,names:[3,4],namewoexestr:4,namewoexeupperstr:4,naming:17,need:[0,1,2,3,4,6,7,8,10,11,12,13,14,15,16,17],needed:[5,22],nested:4,net:[2,4,10,11,12,13,14,15,16,21],never:4,newkeydict:4,newkeylist:4,newvalue:4,next:[4,8,17],none:[2,3,4,5,8,10,11,12,13,14,15,16,17,21],not:[2,3,4,5,6,8,17,20],notation:[10,11,12,13,14,15,16,17],notepad:[2,4,8,10,11,12,13,14,15,16,17],nothing:4,nothingbool:[5,7],now:[4,5,8,10,11,12,13,14,15,16],nul:17,object:[3,4,5,10,11,12,13,14,15,16,17,22],objects:[8,10,11,12,13,14,15,16,17],occupied:4,ocr:17,octet:4,off:[5,7],old:[4,5,10,11,12,13,14,15,16],once:[8,10,11,12,13,14,15,16],one:[5,7],oninitjs:8,oninitjsdatadict:8,oninitjsstr:8,only:[0,2,4,5,7,8,10,11,12,13,14,15,16,17,22],onrefreshhtml:8,onrefreshhtmldatadict:8,onrefreshhtmlhashstr:8,onrefreshhtmlstr:8,onrefreshjson:8,onrefreshjsondict:8,op_code_1:4,open:[4,5,20,22],opencv:[0,18,22],openrpa52zzz:6,openrpa:[0,5],openrpa_32:20,openrpa_64:20,openrpaorchestrator:17,openrparesourceswpy32:17,openrparesourceswpy64:17,openrparobotguix32:[10,11,12,13,14,15,16],opensource:[1,22],opera:17,operating:22,operation:[4,8],operations:[0,6,8],operator:8,operatormodule:8,optimize:8,option:[5,7,17],optional:4,orc:[4,5,7,8],orch:5,orchestrator:[2,5,6,8,22],orchestratorinitwait:4,orchestratorisadmin:[4,6],orchestratorisinited:4,orchestratorloggerget:[4,6],orchestratormain:17,orchestratormodule:8,orchestratorpysearchinit:[4,6],orchestratorrerunasadmin:[4,6],orchestratorrestart:4,orchestratorscheduleget:[4,8],orchestratorsessionrestore:[4,6],orchestratorsessionsave:4,orchestratorstart:5,orchestratorthreadstart:4,order:[3,17,20],org:[1,17],oscmd:[2,4],oscredentialsverify:4,osfilebinarydatabase64strappend:2,osfilebinarydatabase64strcreate:2,osfilebinarydatabase64strreceive:2,osfilemtimeget:2,osfiletextdatastrcreate:2,osfiletextdatastrreceive:2,oslogoff:4,osremotepcrestart:[4,5],other:[10,11,12,13,14,15,16,17],others:22,our:17,out:4,outargument:17,outline:[10,11,12,13,14,15,16],output:[2,4,5,8],outstr:4,over:8,override:8,overwrite:5,own:[3,6,8,17,22],packages:4,page:[4,5,7,8],page_source:17,paid:22,pallets:1,pane:9,panel:[4,5,7,8,20],panels:[4,5,6],parallel:4,param:[4,8],parameters:3,params:8,parent:[10,11,12,13,14,15,16,17,20],parse:4,party:22,pass:[4,5,8],password:[4,5],path:[2,4,5,6,8,17],pause:17,pay:[3,5],pdb:5,pdf:22,pem:4,perfoming:17,performance:22,period:[5,8],periodic:4,periodically:[4,5],periods:8,perios:8,permanent:4,phone:3,php:1,pickle:[4,8],pid:4,pil:[1,18],pillow:1,pixels:[4,5],planned:4,platform:22,please:4,plus:4,port:[4,5],portable:[0,17],portint:5,possible:22,post:[4,5],postfix:4,power:4,powerful:22,powershell:[4,5],practice:[7,22],prefer:1,prepare:[4,8],previous:[4,8],print:[6,17],procedure:4,process:[2,3,5,6,10,11,12,13,14,15,16,17,19,22],processbitness:[10,11,12,13,14,15,16],processdefintervalcall:4,processdetaillist:4,processed:[4,8],processes:[4,10,11,12,13,14,15,16,22],processexists:8,processget:8,processinitsafe:8,processisstarted:4,processlistget:4,processmanual2auto:8,processmanualstoplistclear:8,processmanualstoptriggerset:8,processname:4,processor:[2,5,7,22],processoractivityitemappend:4,processoractivityitemcreate:4,processoraliasdefcreate:4,processoraliasdefupdate:4,processordict:5,processschedulestatuscheckeveryseconds:8,processstart:[4,8],processstatuscheck:8,processstatusrestore:8,processstatussave:8,processstatusstrget:8,processstop:4,processstopforce:8,processstopsafe:8,processwoexelist:4,processwoexeupperlist:4,processwoexeupperuserlistget:2,production:17,program:[4,5,8],programs:5,project:[3,22],properties:[7,8,22],protocol:3,prototype:5,provide:[17,22],psf:1,psutil:[1,6,18],pull:[5,7],purpose:1,push:5,pwa:17,pwaspecification:17,pwaspecification_get_pwaapplication:[10,11,12,13,14,15,16],pwaspecification_get_uio:[10,11,12,13,14,15,16],pyautogui:[1,17,18],pycon:17,pymupdf:18,pyopenrpa:[0,1,3,5,6,7,8,9,10,11,12,13,14,15,16,17,19,21],pyopenrpa_support:1,pyopenrpa_uidesktopx32:[10,11,12,13,14,15,16],pyopenrpa_uidesktopx64:[10,11,12,13,14,15,16],pyopenrpadict:[5,7],pypathstr:4,python32fullpath:[10,11,12,13,14,15,16],python32processname:[10,11,12,13,14,15,16],python64fullpath:[10,11,12,13,14,15,16],python64processname:[10,11,12,13,14,15,16],python:[0,1,3,9,10,11,12,13,14,15,16,18,20,22],pythonstart:4,pywin32:[1,18],pywinauto:[1,10,11,12,13,14,15,16,17,18],query:4,queue:[3,4,5,7],queuelist:5,r01:5,r01_integrationorderout:5,r01_orchestratortorobot:5,raised:4,rdp:[3,4,5,7],rdpactive:5,rdpkey:4,rdpkeydict:[5,7],rdpkeystr:[5,7],rdplist:[4,5],rdpsession:22,rdpsessioncmdrun:4,rdpsessionconnect:[4,5],rdpsessiondisconnect:[4,5],rdpsessiondublicatesresolve:4,rdpsessionfilestoredrecieve:4,rdpsessionfilestoredsend:4,rdpsessionkey:5,rdpsessionkeystr:5,rdpsessionlogoff:4,rdpsessionmonitorstop:4,rdpsessionprocessstartifnotrunning:4,rdpsessionprocessstop:4,rdpsessionreconnect:[4,5],rdpsessionresponsibilitycheck:4,rdptemplatecreate:4,read:[2,4,5],readthedocs:[4,5,17],ready:0,received:4,recieve:[4,5],recieved:[4,5],recognition:22,reconnect:[4,5],reconnectbool:[5,7],recoverydict:5,recursive:17,redirectclipboardbool:4,reestr_otgruzok:5,references:22,refresh:[5,8],refreshhtmljinja2strgenerate:8,refreshhtmljinja2templatepathset:8,regenerated:4,regular:17,reinit:8,relative:[4,5,8],reliable:[1,22],reload:8,remember:[5,7],remote:[4,5,22],remove:[4,8],rendering:[8,20],replace:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22],report:5,reports:5,reqired:3,request:[4,5,8],requesting:5,requestinstance:8,requests:[1,5,18],requesttimeoutsecfloat:5,required:[4,8],requirements:22,rerun:4,resolution:[4,5],resources:[0,4,10,11,12,13,14,15,16,17,22],response:4,responsecontenttype:5,responsedefrequestglobal:5,responsefilepath:5,responsefolderpath:5,responsibility:[4,5],responsibilitycheckintervalsec:5,responsible:[4,5],restart:[4,5,7,8],restarted:8,restartforce:8,restartorchestrator:5,restartorchestratorbool:[5,7],restartorchestratorgitpullbool:[5,7],restartpcbool:[5,7],restartsafe:8,restore:[4,6,8,10,11,12,13,14,15,16],restored:8,restructuredtext:[2,4,10,11,12,13,14,15,16,21],result:[4,5,7,8,10,11,12,13,14,15,16],results:17,retart:4,returnbool:5,returned:4,returnedbydatetime:5,rich_text:17,rich_text_re:17,right:4,rights:22,robot:[3,4,5,7,8,9,10,11,12,13,14,15,16,21,22],robot_r01:5,robot_r01_help:5,robotrdpactive:[4,5],robots:[3,4,6,22],rolehierarchyalloweddict:5,root:[4,5],row:5,rpa01:4,rpa:[4,5,9,22],rpa_99:4,rpatestdirtest:4,rst:[1,2,4,10,11,12,13,14,15,16,21],ruledomainuserdict:5,rulemethodmatchurlbeforelist:5,rules:8,run:[0,4,5,6,8,10,11,12,13,14,15,16,22],running:[2,4,20,22],runs:[4,5],rus:22,russia:[1,22],russian:22,safe:[2,4,8,10,11,12,13,14,15,16,22],safety:4,same:[10,11,12,13,14,15,16],save:[4,8],saved:8,schedule:[4,5,8],scheduler:[3,8,22],scheduleractivitytimeaddweekly:4,schedulerdict:5,scheduling:[3,4,8],scopesrcul:[4,5],screen:[4,5,22],screened:5,screenshot:[0,22],screenshots:[5,7,20,22],screenshotviewerbool:[5,7],script:[3,8,22],search:4,sec:[4,5],second:8,seconds:[4,5,8,10,11,12,13,14,15,16,17],section:[4,10,11,12,13,14,15,16],security:4,see:[0,4,5,6,8,10,11,12,13,14,15,16,22],selection:[10,11,12,13,14,15,16],selector:[10,11,12,13,14,15,16,17,20],selectors:17,selenium:[1,18,22],seleniumhq:1,self:8,semantic:[1,18],send:[2,4,5,7,8,9,22],send_keys:17,sensitive:4,sent:[4,5],sequence:4,sequency:3,server:[0,2,3,4,5,7,8,20,22],serverdict:5,serverinstance:5,serversettings:[5,8],serverthread:5,sesion:[4,5],session:[2,4,5,8,22],sessionguidstr:5,sessionhex:[4,5],sessionisignoredbool:[4,5],sessioniswindowexistbool:[4,5],sessioniswindowresponsiblebool:[4,5],sessions:4,set:[2,4,5,7,8,10,11,12,13,14,15,16],set_edit_text:9,set_trace:5,setformatter:5,setlevel:[5,6],settings:[2,4,5,6,8,22],settingsinit:[10,11,12,13,14,15,16],settingstemplate:[3,5,6],settingsupdate:[4,6],setup:5,several:[3,17,22],share:4,shared:4,shareddrivelist:[4,5],shell:[4,22],should:[5,8],show:[5,7],side:[4,5,7,8,21],signal:[4,8,21],simplify:17,since:[5,22],single:3,singleton:[2,4],site:4,size:5,skype:1,sleep:[5,9,17],socket:3,software:1,solution:[0,17],solutions:22,some:[1,3,4,5,7,8],someprocess:21,something:8,soon:22,sorry:22,sorted:4,source:[3,22],sourceforge:[2,4,10,11,12,13,14,15,16,21],sources:[3,6,22],space:3,spaces:3,special:[4,5],specialists:1,specification:17,specified:8,specify:[4,8],sphinx:[3,22],split:9,ssl:4,stable:[4,5],standart:5,start:[0,2,4,6,8,17,20,22],startcheck:8,started:[0,4,8],starts:[4,5,6,17],state:8,status:[4,8],statuschangelog:8,statuscheck:8,statuscheckintervalrestore:8,statuscheckstart:8,statuscheckstopforce:8,statuscheckstopsafe:8,statuscheckstorforce:8,statuses:8,statusrestore:8,statussave:8,stdout:5,stop:[4,8,17,21,22],stop_safe:8,stopforce:8,stopforcecheck:8,stopped:8,stopsafe:[8,22],stopsafecheck:8,storage:[5,22],storagedict:5,storagerobotdict:8,storagerobotexists:4,storagerobotget:[4,8],stored:5,str:[2,3,4,5,8,10,11,12,13,14,15,16,17],stream:4,streamhandler:5,strftime:5,string:[2,4,10,11,12,13,14,15,16],struct:5,structure:[3,4,5],studio:[3,19,20,22],style:9,subprocess:17,success:4,successful:4,successfully:[0,4,5,17,22],such:[3,22],sunday:4,supertoken:[4,6],superuser:[4,6],supetoken:4,supplement:17,support:[0,1,3,8,17,20,22],symbol:3,symbolic:3,sync:[3,4],synchronious:4,synchroniously:4,sys:[4,5,6,17],system:22,tablet:3,taskkill:21,tasks:1,technical:[3,5],technicalsessionguidcache:5,template:[8,22],term:8,terminate:8,terminated:8,termination:8,terminology:17,tesseract:18,test2:5,test:[2,4,5,6,8],testcontrolpanel:8,testdef:4,testdefalias:4,testdir:4,testdirtest:4,testrdp:5,testttt:8,text:[2,4,9,17,20],than:[3,5,10,11,12,13,14,15,16],thank:1,thanks:22,that:[3,4,8,10,11,12,13,14,15,16,17,21],the:[0,1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,19,21,22],then:[3,4,8],theory:22,there:[4,5],thing:8,thought:4,thread:[3,4,5,7,21],threaded:5,threadidint:5,threading:4,threads:[3,4],thursday:4,thx:17,time:[2,4,5,8,9,17,22],timehh:5,times:5,timestamp:2,title:[9,10,11,12,13,14,15,16,17],title_re:17,todo:[4,8],token:4,tokendatetime:5,too:[4,5,7],tool:[3,5,17,20,22],tools:[21,22],top:[10,11,12,13,14,15,16],tors:22,track:4,transmission:4,transmit:[2,3,4,8],transmition:[2,3,4,5],transmitted:4,tree:22,tries:8,trigger:[4,5,8],triggercountint:5,trunk:1,ttt:[3,5],turn:[5,7],turple:[3,8],tutorial:22,txt:[1,4],type:[4,5,8],types:[4,8],uac:22,uacbool:5,uacclientcheck:8,uackeylistcheck:4,uacsupertokenupdate:[4,6],uacupdate:[4,6],uacuserdictget:[4,8],uia:[9,10,11,12,13,14,15,16,17],uidesktop:[9,10,12,13,14,15,16,22],uio:[10,11,12,13,14,15,16,20],uioactivity:[10,11,12,13,14,15,16,17],uioei:17,uioinfo:17,uioselector:[10,11,12,13,14,15,16],uioselector_exist_bool:[10,11,12,13,14,15,16],uioselector_focushighlight:[10,11,12,13,14,15,16,17],uioselector_get_bitnessint:[10,11,12,13,14,15,16],uioselector_get_bitnessstr:[10,11,12,13,14,15,16],uioselector_get_uio:[9,10,11,12,13,14,15,16,17],uioselector_get_uioactivitylist:[10,11,12,13,14,15,16],uioselector_get_uioinfo:[10,11,12,13,14,15,16],uioselector_get_uiolist:[10,11,12,13,14,15,16],uioselector_getchildlist_uiolist:[10,11,12,13,14,15,16],uioselector_highlight:[10,11,12,13,14,15,16],uioselector_safeotherget_process:[10,11,12,13,14,15,16],uioselector_searchchildbymouse_uio:[10,11,12,13,14,15,16],uioselector_searchchildbymouse_uiotree:[10,11,12,13,14,15,16],uioselector_tryrestore_dict:[10,11,12,13,14,15,16],uioselectorsecs_waitappear_bool:[10,11,12,13,14,15,16],uioselectorsecs_waitdisappear_bool:[10,11,12,13,14,15,16],uioselectorssecs_waitappear_list:[10,11,12,13,14,15,16],uioselectorssecs_waitdisappear_list:[10,11,12,13,14,15,16],uioselectoruioactivity_run_dict:[10,11,12,13,14,15,16],uiotree:17,uiweb:[9,22],under:22,understand:7,unicodelabs:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22],universal:3,unix:22,unzip:0,update:4,updated:[4,5],updates:5,upper:[2,4,5,8],url:[4,5],urlindexstr:5,urllist:5,urls:5,usage:[4,8,17],use:[0,2,3,4,5,7,8,10,11,12,13,14,15,16,21,22],used:4,useful:[4,17],user32:9,user:[2,3,4,5,6,8,10,11,12,13,14,15,16,17,22],user_99:4,user_pass_here:4,useradstr:5,userinfodict:8,username:4,usernameupperstr:4,userrpa:4,users:[3,4,7],useruaccheckdef:8,useruacdict:8,userupperstr:5,using:[4,17,22],utf:[2,4],utils:[5,10,11,12,13,14,15,16,22],v8toplevelframesdi:9,v8toplevelframetaxistarter:9,value:[4,5,8,10,11,12,13,14,15,16],values:4,variants:4,ver:[4,17],verify:4,version:[4,17,20],versions:[8,17],versionstr:5,very:[1,4],via:[1,4,8],video:17,viewer:[5,7,22],virtual:5,visible:17,vision:17,vista:0,vms:4,wait:[2,4,8,10,11,12,13,14,15,16,17,20,21],want:[3,4,5,7,8,20],warning:5,warningexecutionmorethansecfloat:5,was:[0,2,4,5,22],way:[4,6],ways:17,web:[3,5,8,22],webaudit:4,webauditmessagecreate:4,webcpupdate:4,webdriver:17,weblistencreate:[4,6],webrequestget:4,webrequestparsebodybytes:4,webrequestparsebodyjson:4,webrequestparsebodystr:4,webrequestparsefile:4,webrequestparsepath:4,webrequestresponsesend:4,weburlconnectdef:4,weburlconnectfile:4,weburlconnectfolder:4,weburlindexchange:4,webuserinfoget:[4,8],webuserissupertoken:4,webuseruachierarchyget:4,wednesday:4,week:4,weekday:[4,5],weekdaylist:5,well:22,were:[4,22],whatsapp:1,when:[3,4,5,8,10,11,12,13,14,15,16,20],where:[2,4,17,20],which:[1,3,4,5,8,10,11,12,13,14,15,16,17,22],who:5,why:3,width:[4,5],wiki:9,wikis:17,will:[1,2,4,5,6,8,10,11,12,13,14,15,16,17,22],win32:[9,10,11,12,13,14,15,16,22],win32api:[1,18],win:[4,9],windll:9,window:[2,4,5,10,11,12,13,14,15,16],windows:[0,2,4,10,11,12,13,14,15,16,18,22],winpython:1,without:[0,2,4,5,8],wm_close:21,wmi:[1,18],work:[4,7,8,17],working:[4,8,21],workingdirectorypathstr:5,works:[4,5,22],world:22,wpy32:[0,10,11,12,13,14,15,16,17],wpy64:[0,4,10,11,12,13,14,15,16,17],wrapper:[10,11,12,13,14,15,16],write:[1,2,3,9,17],writing:22,www:[1,17,18],x32:[0,10,11,12,13,14,15,16,18,20,22],x64:[0,4,10,11,12,13,14,15,16,18,20,22],xlsx:5,you:[0,1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,17,21,22],your:[0,1,5,8,10,11,12,13,14,15,16,17],zip:0},titles:["1. \u041f\u0435\u0440\u0432\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a","2. \u041f\u0440\u0430\u0432\u0430 & \u041a\u043e\u043d\u0442\u0430\u043a\u0442\u044b","2. Defs","1. Description","2. Defs","3. gSettings Template","4. How to use","5. UAC - User Access Control","6. Defs Managers","1. \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435","2. \u0424\u0443\u043d\u043a\u0446\u0438\u0438","2. UIDesktop","3. UIWeb","4. Keyboard","5. Clipboard","6. Mouse","7. Image","8. \u041a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c?","9. \u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438","1. \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435","2. \u041a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c?","2. Defs StopSafe","\u041f\u043e\u0440\u0442\u0430\u043b \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 pyOpenRPA"],titleterms:{"\u0433\u0435\u043d\u0435\u0440\u0430\u043b\u044c\u043d":1,"\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440":1,"\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446":22,"\u0434\u043e\u0440\u043e\u0433":22,"\u0437\u0430\u0432\u0438\u0441\u0438\u043c":18,"\u0437\u0430\u043f\u0443\u0441\u043a":0,"\u0438\u0432\u0430":1,"\u0438\u0437":22,"\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430":[17,20],"\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c":1,"\u043a\u0430\u043a":[17,20],"\u043a\u043b\u0438\u0435\u043d\u0442":1,"\u043a\u043e\u043b\u043b\u0435\u0433":22,"\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442":1,"\u043a\u043e\u043d\u0442\u0430\u043a\u0442":1,"\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u043e\u043d":1,"\u043c\u0430\u0441\u043b":1,"\u043c\u043e\u0434\u0443\u043b":22,"\u043e":22,"\u043e\u0431\u0449":22,"\u043e\u043f\u0438\u0441\u0430\u043d":[9,19],"\u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0442\u043e\u0440":22,"\u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b":1,"\u043f\u0435\u0440\u0432":0,"\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a":1,"\u043f\u043e\u0440\u0442\u0430":22,"\u043f\u043e\u0440\u0442\u0430\u043b":22,"\u043f\u0440\u0430\u0432":1,"\u0440\u0430\u0437\u0434\u0435\u043b":22,"\u0440\u043e\u0431\u043e\u0442":22,"\u0441\u043b\u0435\u0434":22,"\u0441\u043e\u0441\u0442\u043e":22,"\u0441\u0442\u043e\u0440\u043e\u043d":1,"\u0441\u0442\u0443\u0434":22,"\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a":22,"\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d":22,"\u0444\u0443\u043d\u043a\u0446":10,"\u0446\u0435\u043d\u0442\u0440":1,"\u0447\u0438\u0441\u0442\u043e\u0442":1,"for":[7,20],__agent__:2,__orchestrator__:4,about:[7,17,22],access:[7,17],action:20,agent:[2,4,22],and:[17,20],app:17,architecture:3,are:20,automate:17,automation:17,basic:4,button:20,capture:17,check:0,choose:20,click:20,clipboard:14,cmd:17,component:3,concept:3,configure:3,content:[20,22],control:7,controlpanel:8,create:17,ctrl:20,definitions:17,defs:[2,4,8,21],description:[3,20],desktop:17,details:8,dict:[3,7],dlls:17,example:17,execute:17,expand:20,extract:20,file:17,from:17,general:8,global:3,group:4,gsettings:[4,5],gui:20,guide:22,hold:20,hover:20,how:[0,3,6,17,20],image:[16,17],installation:0,interested:20,key:20,keyboard:[13,17],list:20,managers:8,manipulation:17,module:17,mouse:[15,17,20],object:20,openrpa:17,orchestrator:[3,4,7],practice:17,process:[4,8],processor:[3,4],properties:20,property:20,pyopenrpa:[2,4,22],python:[4,17],rdpsession:4,recognition:17,references:[2,3,4,10,11,12,13,14,15,16,21],repo:22,requirements:0,result:20,rights:7,robot:17,rpa:17,run:20,scheduler:4,screen:17,screenshot:20,script:17,search:20,seconds:20,selected:20,selenium:17,settings:3,shown:20,stopsafe:21,storage:4,structure:[17,22],studio:17,system:0,template:5,the:[17,20],theory:17,tree:20,turn:20,uac:[4,7],uidesktop:[11,17],uio:17,uioselector:17,uiweb:12,use:[6,17],user:7,viewer:20,web:[4,7,17],what:17,wiki:22,will:20,win32:17,x32:17,x64:17,you:20}}) \ No newline at end of file diff --git a/Wiki/RUS_Guide/markdown/03_Copyrights_Contacts.md b/Wiki/RUS_Guide/markdown/03_Copyrights_Contacts.md index ed04b03d..3fe55bba 100644 --- a/Wiki/RUS_Guide/markdown/03_Copyrights_Contacts.md +++ b/Wiki/RUS_Guide/markdown/03_Copyrights_Contacts.md @@ -14,47 +14,85 @@ If you will find some issue in pyOpenRPA - write about it to me via e-mail/skype Thank you! -## Ivan Maslov (CEO & FOUNDER) +## Центр поддержки клиентов -Our contacts: +У вас остались вопросы? Мы вам поможем! -* E-mail: [Ivan.Maslov@pyOpenRPA.ru](mailto:Ivan.Maslov@pyOpenRPA.ru) +* Телефон/WhatsApp: +7 (995) 233-45-31 -* Skype: MegaFinder +* Почта: [Support@pyOpenRPA.ru](mailto:Support@pyOpenRPA.ru) -* Web: [https://pyopenrpa.ru/](https://pyopenrpa.ru/) +* Телеграм: @pyOpenRPA_support -* Telegram: [https://t.me/pyopenrpa](https://t.me/pyopenrpa) +* Портал: [https://pyopenrpa.ru/](https://pyopenrpa.ru/) -* WhatsApp | Telegram: +7 906 722 39 25 | @IvanMaslov +* Телеграм канал: @pyOpenRPA_support -## 3-rd party components license dependencies +## Иван Маслов (Основатель & генеральный директор) -* WinPython 3.7.1 32-bit & 64-bit, license MIT ([https://github.com/winpython/winpython](https://github.com/winpython/winpython)) +* Телефон/WhatsApp: +7 (906) 722-39-25 -* Selenium v…, license Apache 2.0 +* Почта: [Ivan.Maslov@pyOpenRPA.ru](mailto:Ivan.Maslov@pyOpenRPA.ru) -* pywinauto 0.6.5, license BSD 3-Clause ([https://github.com/pywinauto/pywinauto](https://github.com/pywinauto/pywinauto)) +* Телеграм: @IvanMaslov -* Semantic UI …, license MIT ([https://github.com/Semantic-Org/Semantic-UI](https://github.com/Semantic-Org/Semantic-UI)) +* Портал: [https://pyopenrpa.ru/](https://pyopenrpa.ru/) -* PyAutoGUI …, license BSD 3-Clause ([https://github.com/asweigart/pyautogui](https://github.com/asweigart/pyautogui)) +* Телеграм канал: @pyOpenRPA_support +## Используемые сторонние компоненты (лицензионная чистота) -* keyboard …, license MIT ([https://github.com/boppreh/keyboard](https://github.com/boppreh/keyboard)) +* WinPython, v3.7.1 32-bit & 64-bit, лицензия MIT ([https://github.com/winpython/winpython](https://github.com/winpython/winpython)) -* pywin32 …, Python Software Foundation License (PSF) ([https://github.com/mhammond/pywin32](https://github.com/mhammond/pywin32)) + +* Selenium, v…, лицензия Apache 2.0 ([https://github.com/SeleniumHQ/selenium/blob/trunk/LICENSE](https://github.com/SeleniumHQ/selenium/blob/trunk/LICENSE)) + + +* pywinauto, v0.6.5, лицензия BSD 3-Clause ([https://github.com/pywinauto/pywinauto](https://github.com/pywinauto/pywinauto)) + + +* Semantic UI, v…, лицензия MIT ([https://github.com/Semantic-Org/Semantic-UI](https://github.com/Semantic-Org/Semantic-UI)) + + +* PyAutoGUI, v…, лицензия BSD 3-Clause ([https://github.com/asweigart/pyautogui](https://github.com/asweigart/pyautogui)) + + +* keyboard, v…, лицензия MIT ([https://github.com/boppreh/keyboard](https://github.com/boppreh/keyboard)) + + +* pywin32 (win32api), v…, Python Software Foundation лицензия (PSF) ([https://github.com/mhammond/pywin32](https://github.com/mhammond/pywin32)) + + +* WMI, v…, лицензия MIT, ([http://www.opensource.org/licenses/mit-license.php](http://www.opensource.org/licenses/mit-license.php)) + + +* psutil, v…, лицензия BSD 3-Clause ([https://github.com/giampaolo/psutil/blob/master/LICENSE](https://github.com/giampaolo/psutil/blob/master/LICENSE)) + + +* Pillow PIL, v…, лицензия HPND ([https://github.com/python-pillow/Pillow/blob/main/LICENSE](https://github.com/python-pillow/Pillow/blob/main/LICENSE)) + + +* requests, v…, лицензия Apache 2.0 ([https://github.com/psf/requests/blob/main/LICENSE](https://github.com/psf/requests/blob/main/LICENSE)) + + +* JsRender, v…, лицензия MIT ([https://github.com/BorisMoore/jsrender/blob/master/MIT-LICENSE.txt](https://github.com/BorisMoore/jsrender/blob/master/MIT-LICENSE.txt)) + + +* Handlebars, v…, лицензия MIT, ([https://github.com/handlebars-lang/handlebars.js/blob/master/LICENSE](https://github.com/handlebars-lang/handlebars.js/blob/master/LICENSE)) + + +* jinja2, v…, лицензия BSD 3-Clause, ([https://github.com/pallets/jinja/blob/main/LICENSE.rst](https://github.com/pallets/jinja/blob/main/LICENSE.rst)) .. v1.2.12 replace:: v1.2.12 .. diff --git a/Wiki/RUS_Guide/markdown/Robot/01_Robot.md b/Wiki/RUS_Guide/markdown/Robot/01_Robot.md index bead0e08..1d77f7c5 100644 --- a/Wiki/RUS_Guide/markdown/Robot/01_Robot.md +++ b/Wiki/RUS_Guide/markdown/Robot/01_Robot.md @@ -1,22 +1,122 @@ # 1. Описание -pyOpenRPA Robot is the python package which allow you to create best RPA program. +Модуль обеспечивает всю необходимую функциональность для создания любого программного робота RPA. Модуль робота поставляется в качестве библиотеки Python, что позволяет с легкостью интегрировать его в другие проекты перспективных технологий. -The description of the functions you can find page „Defs“ (see menu) +**Содержит** -Here is the example of the pyOpenRPA usage. + +* Уровень доступа к элементам локального приложения (win32, UI automation), и веб приложения + + + * UIDesktop: инструменты взаимодействия с элементами локального приложения (взаимодействие с ОС через протоколы win32, UI automation). Перейти к описанию функций: 2. UIDesktop + + + * UIWeb: инструменты взаимодействия с элементами веб приложения. Перейти к описанию функций: 3. UIWeb + + +* Уровень доступа к текстовым каналам передачи данных (клавиатура, буфер обмена) + + + * Keyboard: инструменты взаимодействия с клавиатурой. Перейти к описанию функций: 4. Keyboard + + + * Clipboard: инструменты взаимодействия с буфером обмена. Перейти к описанию функций: 5. Clipboard + + +* Уровень доступа к графическим каналам передачи данных (мышь, экран) + + + * Mouse: инструменты взаимодействия с мышью. Перейти к описанию функций: 6. Mouse + + + * Image: инструменты взаимодействия с эраном рабочего стола. Перейти к описанию функций: 7. Image + +Ниже преставлен пример использования инструментов робота. ``` -# EXAMPLE 1 +import time from pyOpenRPA.Robot import UIDesktop -lNotepadOKButton = UIDesktop.UIOSelector_Get_UIO( - inSpecificationList=[ - {"title":"notepad.exe"},{"title":"OK"}], - inElement=None, - inFlagRaiseException=True) +# UIDesktop: Работа с 1С +lDemoBaseSelector = [{"title":"Запуск 1С:Предприятия","class_name":"V8TopLevelFrameTaxiStarter","backend":"uia"},{"title":"DEMO", "depth_start": 5, "depth_end": 5}] +lDemoBase = UIDesktop.UIOSelector_Get_UIO(lDemoBaseSelector) +lDemoBase.draw_outline() +time.sleep(2.0) +lRunBaseSelector = [{"title":"Запуск 1С:Предприятия","class_name":"V8TopLevelFrameTaxiStarter","backend":"uia"},{"title":"1С:Предприятие", "depth_start": 4, "depth_end": 4}] +lRunBase = UIDesktop.UIOSelector_Get_UIO(lRunBaseSelector) +lRunBase.draw_outline() +time.sleep(2.0) +lRunBase.click_input() + +# ОТКРЫТЬ ЗАКАЗЫ ПОКУПАТЕЛЕЙ +lOrderNumberSelector = [{"title":"Управление нашей фирмой, редакция 1.6","class_name":"V8TopLevelFrameSDI","backend":"uia"},{"title":"АСФР-000036 Номер", "depth_start": 13, "depth_end": 13}] +UIDesktop.UIOSelector_Get_UIO(lOrderNumberSelector).draw_outline() +UIDesktop.UIOSelector_Get_UIO(lOrderNumberSelector).double_click_input() + +time.sleep(1.0) +lCommentSelector = [{"title":"Управление нашей фирмой, редакция 1.6","class_name":"V8TopLevelFrameSDI","backend":"uia"},{"control_type":"Pane"},{"control_type":"Pane"},{"control_type":"Pane"},{"control_type":"Pane"},{"control_type":"Pane"},{"control_type":"Pane"},{"control_type":"Pane"},{"title":"","control_type":"Edit", "depth_start": 1, "depth_end": 10}] +UIDesktop.UIOSelector_Get_UIO(lCommentSelector).draw_outline() +UIDesktop.UIOSelector_Get_UIO(lCommentSelector).set_edit_text("Заказ исполнен роботом") + +# UIWeb: Работа с браузером +# WIKI TO DO + +# Keyboard: Взаимодействие с клавиатурой +import ctypes # An included library with Python install. +from pyOpenRPA.Robot import Keyboard +from pyOpenRPA.Robot import Clipboard +Keyboard.send("win+r") +time.sleep(0.3) +Keyboard.write("cmd") +time.sleep(0.3) +Keyboard.send("enter") +time.sleep(0.6) +Keyboard.write("echo %time%") +time.sleep(0.3) +Keyboard.send("enter") +time.sleep(0.3) +Keyboard.send("ctrl+a") +time.sleep(0.6) +Clipboard.ClipboardSet("") +Keyboard.send("ctrl+c") +time.sleep(0.6) +lTextRaw = Clipboard.ClipboardGet() +lTimeStr = lTextRaw.split("\n")[-3] + +def msg_box(title, text, style): + return ctypes.windll.user32.MessageBoxW(0, text, title, style) +msg_box('Робот на клавиатуре', f'Робот извлек время из консоли: {lTimeStr}', 0) + +# Mouse: Взаимодействие с мышью +from pyOpenRPA.Robot import Mouse +# Нарисовать букву Я +x = -50 +y = 150 +Mouse.mouseDown(x+100,y+0) +Mouse.moveTo(x+100,y+100) +Mouse.moveTo(x+100,y+50) +Mouse.moveTo(x+80,y+30) +Mouse.moveTo(x+100,y+0) +Mouse.moveTo(x+100,y+50) +Mouse.moveTo(x+80,y+100) +Mouse.mouseUp() + +time.sleep(0.5) +# Нарисовать :) +x = 230 +y = 150 +Mouse.mouseDown(x+0,y+0) +Mouse.moveTo(x+0,y+75) +Mouse.mouseUp() + +Mouse.mouseDown(x+75,y+0) +Mouse.moveTo(x+75,y+75) +Mouse.mouseUp() -lNotepadOKButton.click() +Mouse.mouseDown(x-30,y+90) +Mouse.moveTo(x+40,y+130) +Mouse.moveTo(x+105,y+90) +Mouse.mouseUp() ``` .. v1.2.12 replace:: v1.2.12 diff --git a/Wiki/RUS_Guide/markdown/Robot/02_uidesktop.md b/Wiki/RUS_Guide/markdown/Robot/02_uidesktop.md new file mode 100644 index 00000000..283f0b86 --- /dev/null +++ b/Wiki/RUS_Guide/markdown/Robot/02_uidesktop.md @@ -0,0 +1,554 @@ +# 2. UIDesktop + +Here you can find the functions description for interaction with desktop GUI applications + +How to use both x32 and x64 python processes (it can be helpfully, if another app GUI is on another bitness than your app) + +``` +from pyOpenRPA.Robot import UIDesktop +#Section for robot init +lPyOpenRPA_SettingsDict = { + "Python32FullPath": "..\\Resources\\WPy32-3720\\python-3.7.2\\python.exe", #Set from user: "..\\Resources\\WPy32-3720\\python-3.7.2\\OpenRPARobotGUIx32.exe" + "Python64FullPath": "..\\Resources\\WPy64-3720\\python-3.7.2.amd64\\python.exe", #Set from user + "Python32ProcessName": "pyOpenRPA_UIDesktopX32.exe", #Config set once + "Python64ProcessName": "pyOpenRPA_UIDesktopX64.exe" #Config set once +} +# Init the pyOpenRPA configuration +UIDesktop.Utils.ProcessBitness.SettingsInit(lPyOpenRPA_SettingsDict) +# Now you can use pyOpenRPA with both bitness. +``` + +**Functions:** + +| `Get_OSBitnessInt`() + + | Detect OS bitness. + + | +| `PWASpecification_Get_PWAApplication`(…) + + | #Backend selection - attribute «backend» («win32» || «uia») in 1-st list element + + | +| `PWASpecification_Get_UIO`(…) + + | #Backend def selection - attribute «backend» («win32» || «uia») in 1-st list element #old name - GetControl + + | +| `UIOSelectorSecs_WaitAppear_Bool`(…) + + | Wait for UI object will appear in GUI for inWaitSecs seconds. + + | +| `UIOSelectorSecs_WaitDisappear_Bool`(…) + + | Wait for UI object will disappear in GUI for inWaitSecs seconds. + + | +| `UIOSelectorUIOActivity_Run_Dict`(…[, …]) + + | Run the activity in UIO (UI Object) + + | +| `UIOSelector_Exist_Bool`(inUIOSelector) + + | Check if object is exist by the UIO selector. + + | +| `UIOSelector_FocusHighlight`(inUIOSelector) + + | Set focus and highlight (draw outline) the element (in app) by the UIO selector. + + | +| `UIOSelector_GetChildList_UIOList`([…]) + + | Get list of child UIO’s by the parent UIOSelector + + | +| `UIOSelector_Get_BitnessInt`(inSpecificationList) + + | Detect process bitness by the UI Object UIO Selector. + + | +| `UIOSelector_Get_BitnessStr`(inSpecificationList) + + | Detect process bitness by the UI Object UIO Selector. + + | +| `UIOSelector_Get_UIO`(inSpecificationList[, …]) + + | Get the pywinauto object by the UIO selector. + + | +| `UIOSelector_Get_UIOActivityList`(inUIOSelector) + + | Get the list of the UI object activities + + | +| `UIOSelector_Get_UIOInfo`(inUIOSelector) + + | Get the UIO dict of the attributes + + | +| `UIOSelector_Get_UIOList`(inSpecificationList) + + | Get the UIO list by the selector + + | +| `UIOSelector_Highlight`(inUIOSelector) + + | Highlight (draw outline) the element (in app) by the UIO selector. + + | +| `UIOSelector_SafeOtherGet_Process`(inUIOSelector) + + | Safe get other process or None if destination app is the other/same bitness + + | +| `UIOSelector_SearchChildByMouse_UIO`(…) + + | UIOSelector (see description on the top of the document) #old name - AutomationSearchMouseElement + + | +| `UIOSelector_SearchChildByMouse_UIOTree`(…) + + | !!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!! + + | +| `UIOSelector_TryRestore_Dict`(inSpecificationList) + + | Try to restore (maximize) window, if it’s minimized. + + | +| `UIOSelectorsSecs_WaitAppear_List`(…[, …]) + + | Wait for many UI object will appear in GUI for inWaitSecs seconds. + + | +| `UIOSelectorsSecs_WaitDisappear_List`(…[, …]) + + | Wait for many UI object will disappear in GUI for inWaitSecs seconds. + + | + +### pyOpenRPA.Robot.UIDesktop.Get_OSBitnessInt() +Detect OS bitness. + + +* **Результат** + + int 32 or int 64 + + + +### pyOpenRPA.Robot.UIDesktop.PWASpecification_Get_PWAApplication(inControlSpecificationArray) +#Backend selection - attribute «backend» («win32» || «uia») in 1-st list element + + +* **Параметры** + + **inControlSpecificationArray** – List of dict, dict in pywinauto.find_windows notation + + + +* **Результат** + + process application object + + + +### pyOpenRPA.Robot.UIDesktop.PWASpecification_Get_UIO(inControlSpecificationArray) +#Backend def selection - attribute «backend» («win32» || «uia») in 1-st list element +#old name - GetControl + + +* **Параметры** + + **inControlSpecificationArray** – List of dict, dict in pywinauto.find_windows notation + + + +* **Результат** + + list of UIO object + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelectorSecs_WaitAppear_Bool(inSpecificationList, inWaitSecs) +Wait for UI object will appear in GUI for inWaitSecs seconds. + + +* **Параметры** + + + * **inSpecificationList** – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}] + + + * **inWaitSecs** – Float value (seconds) for wait UI element appear in GUI + + + +* **Результат** + + True - UI object will appear. False - else case + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelectorSecs_WaitDisappear_Bool(inSpecificationList, inWaitSecs) +Wait for UI object will disappear in GUI for inWaitSecs seconds. + + +* **Параметры** + + + * **inSpecificationList** – UIOSelector. + Example: [{«title»:»notepad»},{«title»:»OK»}] + + + * **inWaitSecs** – Float value (seconds) for wait UI element disappear in GUI + + + +* **Результат** + + True - UI object will disappear. False - else case + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelectorUIOActivity_Run_Dict(inUIOSelector, inActionName, inArgumentList=None, inkwArgumentObject=None) +Run the activity in UIO (UI Object) + + +* **Параметры** + + + * **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + * **inActionName** – UIOActivity (name) activity name string from Pywinauto + + + * **inArgumentList** – + + + * **inkwArgumentObject** – + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Exist_Bool(inUIOSelector) +Check if object is exist by the UIO selector. + + +* **Параметры** + + **inUIOSelector** – + + + +* **Результат** + + True - Object is exist. False - else case + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_FocusHighlight(inUIOSelector) +Set focus and highlight (draw outline) the element (in app) by the UIO selector. + + +* **Параметры** + + **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_GetChildList_UIOList(inUIOSelector=None, inBackend='win32') +Get list of child UIO’s by the parent UIOSelector + + +* **Параметры** + + + * **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + * **inBackend** – «win32» or «uia» + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_BitnessInt(inSpecificationList) +Detect process bitness by the UI Object UIO Selector. + + +* **Параметры** + + **inSpecificationList** – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}] + + + +* **Результат** + + int 32 or int 64 + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_BitnessStr(inSpecificationList) +Detect process bitness by the UI Object UIO Selector. + + +* **Параметры** + + **inSpecificationList** – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}] + + + +* **Результат** + + str «32» or str «64» + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIO(inSpecificationList, inElement=None, inFlagRaiseException=True) +Get the pywinauto object by the UIO selector. + + +* **Параметры** + + + * **inSpecificationList** – + + + * **inElement** – + + + * **inFlagRaiseException** – + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOActivityList(inUIOSelector) +Get the list of the UI object activities + + +* **Параметры** + + **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOInfo(inUIOSelector) +Get the UIO dict of the attributes + + +* **Параметры** + + **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOList(inSpecificationList, inElement=None, inFlagRaiseException=True) +Get the UIO list by the selector + + +* **Параметры** + + + * **inSpecificationList** – UIO Selector + + + * **inElement** – Входной элемент - показатель, что не требуется выполнять коннект к процессу + + + * **inFlagRaiseException** – Флаг True - выкинуть ошибку в случае обнаружении пустого списка + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Highlight(inUIOSelector) +Highlight (draw outline) the element (in app) by the UIO selector. + + +* **Параметры** + + **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_SafeOtherGet_Process(inUIOSelector) +Safe get other process or None if destination app is the other/same bitness + + +* **Параметры** + + **inUIOSelector** – UIO Selector of the UI object + + + +* **Результат** + + None or process (of the other bitness) + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_SearchChildByMouse_UIO(inElementSpecification) +UIOSelector (see description on the top of the document) +#old name - AutomationSearchMouseElement + + +* **Параметры** + + **inElementSpecification** – UIOSelector of the UI Object + + + +* **Результат** + + pywinauto element wrapper instance or None + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_SearchChildByMouse_UIOTree(inUIOSelector) +!!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!! + + +* **Параметры** + + **inUIOSelector** – UIOSelector of the UI Object + + + +* **Результат** + + ? + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_TryRestore_Dict(inSpecificationList) +Try to restore (maximize) window, if it’s minimized. (!IMPORTANT! When use UIA framework minimized windows doesn’t appear by the UIOSelector. You need to try restore windows and after that try to get UIO) + + +* **Параметры** + + **inSpecificationList** – UIOSelector - List of items, which contains condition attributes + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelectorsSecs_WaitAppear_List(inSpecificationListList, inWaitSecs, inFlagWaitAllInMoment=False) +Wait for many UI object will appear in GUI for inWaitSecs seconds. + + +* **Параметры** + + + * **inSpecificationListList** – UIOSelector list. + Example: [ + + > [{«title»:»notepad»},{«title»:»OK»}], + > [{«title»:»notepad»},{«title»:»Cancel»}] + + ] + + + + * **inWaitSecs** – Float value (seconds) for wait UI element appear in GUI + + + * **inFlagWaitAllInMoment** – True - Wait all UI objects from the UIOSelector list to be appeared + + + +* **Результат** + + List of index, which UI object UIO will be appeared. Example: [1] # Appear only UI object with UIO selector: [{«title»:»notepad»},{«title»:»Cancel»}] + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelectorsSecs_WaitDisappear_List(inSpecificationListList, inWaitSecs, inFlagWaitAllInMoment=False) +Wait for many UI object will disappear in GUI for inWaitSecs seconds. + + +* **Параметры** + + + * **inSpecificationListList** – UIOSelector list. + Example: [ + + > [{«title»:»notepad»},{«title»:»OK»}], + > [{«title»:»notepad»},{«title»:»Cancel»}] + + ] + + + + * **inWaitSecs** – Float value (seconds) for wait UI element disappear in GUI + + + * **inFlagWaitAllInMoment** – True - Wait all UI objects from the UIOSelector list to be disappeared. + + + +* **Результат** + + List of index, which UI object UIO will be disappeared. Example: [1] # Disappear only UI object with UIO selector: [{«title»:»notepad»},{«title»:»Cancel»}] + + + +* **Результат** + + + +## References + +[reStructuredText](http://docutils.sourceforge.net/rst.html) + + .. v1.2.12 replace:: v1.2.12 + .. + +``` +|author| +``` + + replace:: Ivan Maslov <[ivan.maslov@unicodelabs.ru](mailto:ivan.maslov@unicodelabs.ru)> diff --git a/Wiki/RUS_Guide/markdown/Robot/03_uiweb.md b/Wiki/RUS_Guide/markdown/Robot/03_uiweb.md new file mode 100644 index 00000000..d25dbacc --- /dev/null +++ b/Wiki/RUS_Guide/markdown/Robot/03_uiweb.md @@ -0,0 +1,554 @@ +# 3. UIWeb + +Here you can find the functions description for interaction with desktop GUI applications + +How to use both x32 and x64 python processes (it can be helpfully, if another app GUI is on another bitness than your app) + +``` +from pyOpenRPA.Robot import UIDesktop +#Section for robot init +lPyOpenRPA_SettingsDict = { + "Python32FullPath": "..\\Resources\\WPy32-3720\\python-3.7.2\\python.exe", #Set from user: "..\\Resources\\WPy32-3720\\python-3.7.2\\OpenRPARobotGUIx32.exe" + "Python64FullPath": "..\\Resources\\WPy64-3720\\python-3.7.2.amd64\\python.exe", #Set from user + "Python32ProcessName": "pyOpenRPA_UIDesktopX32.exe", #Config set once + "Python64ProcessName": "pyOpenRPA_UIDesktopX64.exe" #Config set once +} +# Init the pyOpenRPA configuration +UIDesktop.Utils.ProcessBitness.SettingsInit(lPyOpenRPA_SettingsDict) +# Now you can use pyOpenRPA with both bitness. +``` + +**Functions:** + +| `Get_OSBitnessInt`() + + | Detect OS bitness. + + | +| `PWASpecification_Get_PWAApplication`(…) + + | #Backend selection - attribute «backend» («win32» || «uia») in 1-st list element + + | +| `PWASpecification_Get_UIO`(…) + + | #Backend def selection - attribute «backend» («win32» || «uia») in 1-st list element #old name - GetControl + + | +| `UIOSelectorSecs_WaitAppear_Bool`(…) + + | Wait for UI object will appear in GUI for inWaitSecs seconds. + + | +| `UIOSelectorSecs_WaitDisappear_Bool`(…) + + | Wait for UI object will disappear in GUI for inWaitSecs seconds. + + | +| `UIOSelectorUIOActivity_Run_Dict`(…[, …]) + + | Run the activity in UIO (UI Object) + + | +| `UIOSelector_Exist_Bool`(inUIOSelector) + + | Check if object is exist by the UIO selector. + + | +| `UIOSelector_FocusHighlight`(inUIOSelector) + + | Set focus and highlight (draw outline) the element (in app) by the UIO selector. + + | +| `UIOSelector_GetChildList_UIOList`([…]) + + | Get list of child UIO’s by the parent UIOSelector + + | +| `UIOSelector_Get_BitnessInt`(inSpecificationList) + + | Detect process bitness by the UI Object UIO Selector. + + | +| `UIOSelector_Get_BitnessStr`(inSpecificationList) + + | Detect process bitness by the UI Object UIO Selector. + + | +| `UIOSelector_Get_UIO`(inSpecificationList[, …]) + + | Get the pywinauto object by the UIO selector. + + | +| `UIOSelector_Get_UIOActivityList`(inUIOSelector) + + | Get the list of the UI object activities + + | +| `UIOSelector_Get_UIOInfo`(inUIOSelector) + + | Get the UIO dict of the attributes + + | +| `UIOSelector_Get_UIOList`(inSpecificationList) + + | Get the UIO list by the selector + + | +| `UIOSelector_Highlight`(inUIOSelector) + + | Highlight (draw outline) the element (in app) by the UIO selector. + + | +| `UIOSelector_SafeOtherGet_Process`(inUIOSelector) + + | Safe get other process or None if destination app is the other/same bitness + + | +| `UIOSelector_SearchChildByMouse_UIO`(…) + + | UIOSelector (see description on the top of the document) #old name - AutomationSearchMouseElement + + | +| `UIOSelector_SearchChildByMouse_UIOTree`(…) + + | !!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!! + + | +| `UIOSelector_TryRestore_Dict`(inSpecificationList) + + | Try to restore (maximize) window, if it’s minimized. + + | +| `UIOSelectorsSecs_WaitAppear_List`(…[, …]) + + | Wait for many UI object will appear in GUI for inWaitSecs seconds. + + | +| `UIOSelectorsSecs_WaitDisappear_List`(…[, …]) + + | Wait for many UI object will disappear in GUI for inWaitSecs seconds. + + | + +### pyOpenRPA.Robot.UIDesktop.Get_OSBitnessInt() +Detect OS bitness. + + +* **Результат** + + int 32 or int 64 + + + +### pyOpenRPA.Robot.UIDesktop.PWASpecification_Get_PWAApplication(inControlSpecificationArray) +#Backend selection - attribute «backend» («win32» || «uia») in 1-st list element + + +* **Параметры** + + **inControlSpecificationArray** – List of dict, dict in pywinauto.find_windows notation + + + +* **Результат** + + process application object + + + +### pyOpenRPA.Robot.UIDesktop.PWASpecification_Get_UIO(inControlSpecificationArray) +#Backend def selection - attribute «backend» («win32» || «uia») in 1-st list element +#old name - GetControl + + +* **Параметры** + + **inControlSpecificationArray** – List of dict, dict in pywinauto.find_windows notation + + + +* **Результат** + + list of UIO object + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelectorSecs_WaitAppear_Bool(inSpecificationList, inWaitSecs) +Wait for UI object will appear in GUI for inWaitSecs seconds. + + +* **Параметры** + + + * **inSpecificationList** – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}] + + + * **inWaitSecs** – Float value (seconds) for wait UI element appear in GUI + + + +* **Результат** + + True - UI object will appear. False - else case + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelectorSecs_WaitDisappear_Bool(inSpecificationList, inWaitSecs) +Wait for UI object will disappear in GUI for inWaitSecs seconds. + + +* **Параметры** + + + * **inSpecificationList** – UIOSelector. + Example: [{«title»:»notepad»},{«title»:»OK»}] + + + * **inWaitSecs** – Float value (seconds) for wait UI element disappear in GUI + + + +* **Результат** + + True - UI object will disappear. False - else case + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelectorUIOActivity_Run_Dict(inUIOSelector, inActionName, inArgumentList=None, inkwArgumentObject=None) +Run the activity in UIO (UI Object) + + +* **Параметры** + + + * **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + * **inActionName** – UIOActivity (name) activity name string from Pywinauto + + + * **inArgumentList** – + + + * **inkwArgumentObject** – + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Exist_Bool(inUIOSelector) +Check if object is exist by the UIO selector. + + +* **Параметры** + + **inUIOSelector** – + + + +* **Результат** + + True - Object is exist. False - else case + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_FocusHighlight(inUIOSelector) +Set focus and highlight (draw outline) the element (in app) by the UIO selector. + + +* **Параметры** + + **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_GetChildList_UIOList(inUIOSelector=None, inBackend='win32') +Get list of child UIO’s by the parent UIOSelector + + +* **Параметры** + + + * **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + * **inBackend** – «win32» or «uia» + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_BitnessInt(inSpecificationList) +Detect process bitness by the UI Object UIO Selector. + + +* **Параметры** + + **inSpecificationList** – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}] + + + +* **Результат** + + int 32 or int 64 + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_BitnessStr(inSpecificationList) +Detect process bitness by the UI Object UIO Selector. + + +* **Параметры** + + **inSpecificationList** – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}] + + + +* **Результат** + + str «32» or str «64» + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIO(inSpecificationList, inElement=None, inFlagRaiseException=True) +Get the pywinauto object by the UIO selector. + + +* **Параметры** + + + * **inSpecificationList** – + + + * **inElement** – + + + * **inFlagRaiseException** – + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOActivityList(inUIOSelector) +Get the list of the UI object activities + + +* **Параметры** + + **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOInfo(inUIOSelector) +Get the UIO dict of the attributes + + +* **Параметры** + + **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOList(inSpecificationList, inElement=None, inFlagRaiseException=True) +Get the UIO list by the selector + + +* **Параметры** + + + * **inSpecificationList** – UIO Selector + + + * **inElement** – Входной элемент - показатель, что не требуется выполнять коннект к процессу + + + * **inFlagRaiseException** – Флаг True - выкинуть ошибку в случае обнаружении пустого списка + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Highlight(inUIOSelector) +Highlight (draw outline) the element (in app) by the UIO selector. + + +* **Параметры** + + **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_SafeOtherGet_Process(inUIOSelector) +Safe get other process or None if destination app is the other/same bitness + + +* **Параметры** + + **inUIOSelector** – UIO Selector of the UI object + + + +* **Результат** + + None or process (of the other bitness) + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_SearchChildByMouse_UIO(inElementSpecification) +UIOSelector (see description on the top of the document) +#old name - AutomationSearchMouseElement + + +* **Параметры** + + **inElementSpecification** – UIOSelector of the UI Object + + + +* **Результат** + + pywinauto element wrapper instance or None + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_SearchChildByMouse_UIOTree(inUIOSelector) +!!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!! + + +* **Параметры** + + **inUIOSelector** – UIOSelector of the UI Object + + + +* **Результат** + + ? + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_TryRestore_Dict(inSpecificationList) +Try to restore (maximize) window, if it’s minimized. (!IMPORTANT! When use UIA framework minimized windows doesn’t appear by the UIOSelector. You need to try restore windows and after that try to get UIO) + + +* **Параметры** + + **inSpecificationList** – UIOSelector - List of items, which contains condition attributes + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelectorsSecs_WaitAppear_List(inSpecificationListList, inWaitSecs, inFlagWaitAllInMoment=False) +Wait for many UI object will appear in GUI for inWaitSecs seconds. + + +* **Параметры** + + + * **inSpecificationListList** – UIOSelector list. + Example: [ + + > [{«title»:»notepad»},{«title»:»OK»}], + > [{«title»:»notepad»},{«title»:»Cancel»}] + + ] + + + + * **inWaitSecs** – Float value (seconds) for wait UI element appear in GUI + + + * **inFlagWaitAllInMoment** – True - Wait all UI objects from the UIOSelector list to be appeared + + + +* **Результат** + + List of index, which UI object UIO will be appeared. Example: [1] # Appear only UI object with UIO selector: [{«title»:»notepad»},{«title»:»Cancel»}] + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelectorsSecs_WaitDisappear_List(inSpecificationListList, inWaitSecs, inFlagWaitAllInMoment=False) +Wait for many UI object will disappear in GUI for inWaitSecs seconds. + + +* **Параметры** + + + * **inSpecificationListList** – UIOSelector list. + Example: [ + + > [{«title»:»notepad»},{«title»:»OK»}], + > [{«title»:»notepad»},{«title»:»Cancel»}] + + ] + + + + * **inWaitSecs** – Float value (seconds) for wait UI element disappear in GUI + + + * **inFlagWaitAllInMoment** – True - Wait all UI objects from the UIOSelector list to be disappeared. + + + +* **Результат** + + List of index, which UI object UIO will be disappeared. Example: [1] # Disappear only UI object with UIO selector: [{«title»:»notepad»},{«title»:»Cancel»}] + + + +* **Результат** + + + +## References + +[reStructuredText](http://docutils.sourceforge.net/rst.html) + + .. v1.2.12 replace:: v1.2.12 + .. + +``` +|author| +``` + + replace:: Ivan Maslov <[ivan.maslov@unicodelabs.ru](mailto:ivan.maslov@unicodelabs.ru)> diff --git a/Wiki/RUS_Guide/markdown/Robot/04_keyboard.md b/Wiki/RUS_Guide/markdown/Robot/04_keyboard.md new file mode 100644 index 00000000..ef6616dc --- /dev/null +++ b/Wiki/RUS_Guide/markdown/Robot/04_keyboard.md @@ -0,0 +1,554 @@ +# 4. Keyboard + +Here you can find the functions description for interaction with desktop GUI applications + +How to use both x32 and x64 python processes (it can be helpfully, if another app GUI is on another bitness than your app) + +``` +from pyOpenRPA.Robot import UIDesktop +#Section for robot init +lPyOpenRPA_SettingsDict = { + "Python32FullPath": "..\\Resources\\WPy32-3720\\python-3.7.2\\python.exe", #Set from user: "..\\Resources\\WPy32-3720\\python-3.7.2\\OpenRPARobotGUIx32.exe" + "Python64FullPath": "..\\Resources\\WPy64-3720\\python-3.7.2.amd64\\python.exe", #Set from user + "Python32ProcessName": "pyOpenRPA_UIDesktopX32.exe", #Config set once + "Python64ProcessName": "pyOpenRPA_UIDesktopX64.exe" #Config set once +} +# Init the pyOpenRPA configuration +UIDesktop.Utils.ProcessBitness.SettingsInit(lPyOpenRPA_SettingsDict) +# Now you can use pyOpenRPA with both bitness. +``` + +**Functions:** + +| `Get_OSBitnessInt`() + + | Detect OS bitness. + + | +| `PWASpecification_Get_PWAApplication`(…) + + | #Backend selection - attribute «backend» («win32» || «uia») in 1-st list element + + | +| `PWASpecification_Get_UIO`(…) + + | #Backend def selection - attribute «backend» («win32» || «uia») in 1-st list element #old name - GetControl + + | +| `UIOSelectorSecs_WaitAppear_Bool`(…) + + | Wait for UI object will appear in GUI for inWaitSecs seconds. + + | +| `UIOSelectorSecs_WaitDisappear_Bool`(…) + + | Wait for UI object will disappear in GUI for inWaitSecs seconds. + + | +| `UIOSelectorUIOActivity_Run_Dict`(…[, …]) + + | Run the activity in UIO (UI Object) + + | +| `UIOSelector_Exist_Bool`(inUIOSelector) + + | Check if object is exist by the UIO selector. + + | +| `UIOSelector_FocusHighlight`(inUIOSelector) + + | Set focus and highlight (draw outline) the element (in app) by the UIO selector. + + | +| `UIOSelector_GetChildList_UIOList`([…]) + + | Get list of child UIO’s by the parent UIOSelector + + | +| `UIOSelector_Get_BitnessInt`(inSpecificationList) + + | Detect process bitness by the UI Object UIO Selector. + + | +| `UIOSelector_Get_BitnessStr`(inSpecificationList) + + | Detect process bitness by the UI Object UIO Selector. + + | +| `UIOSelector_Get_UIO`(inSpecificationList[, …]) + + | Get the pywinauto object by the UIO selector. + + | +| `UIOSelector_Get_UIOActivityList`(inUIOSelector) + + | Get the list of the UI object activities + + | +| `UIOSelector_Get_UIOInfo`(inUIOSelector) + + | Get the UIO dict of the attributes + + | +| `UIOSelector_Get_UIOList`(inSpecificationList) + + | Get the UIO list by the selector + + | +| `UIOSelector_Highlight`(inUIOSelector) + + | Highlight (draw outline) the element (in app) by the UIO selector. + + | +| `UIOSelector_SafeOtherGet_Process`(inUIOSelector) + + | Safe get other process or None if destination app is the other/same bitness + + | +| `UIOSelector_SearchChildByMouse_UIO`(…) + + | UIOSelector (see description on the top of the document) #old name - AutomationSearchMouseElement + + | +| `UIOSelector_SearchChildByMouse_UIOTree`(…) + + | !!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!! + + | +| `UIOSelector_TryRestore_Dict`(inSpecificationList) + + | Try to restore (maximize) window, if it’s minimized. + + | +| `UIOSelectorsSecs_WaitAppear_List`(…[, …]) + + | Wait for many UI object will appear in GUI for inWaitSecs seconds. + + | +| `UIOSelectorsSecs_WaitDisappear_List`(…[, …]) + + | Wait for many UI object will disappear in GUI for inWaitSecs seconds. + + | + +### pyOpenRPA.Robot.UIDesktop.Get_OSBitnessInt() +Detect OS bitness. + + +* **Результат** + + int 32 or int 64 + + + +### pyOpenRPA.Robot.UIDesktop.PWASpecification_Get_PWAApplication(inControlSpecificationArray) +#Backend selection - attribute «backend» («win32» || «uia») in 1-st list element + + +* **Параметры** + + **inControlSpecificationArray** – List of dict, dict in pywinauto.find_windows notation + + + +* **Результат** + + process application object + + + +### pyOpenRPA.Robot.UIDesktop.PWASpecification_Get_UIO(inControlSpecificationArray) +#Backend def selection - attribute «backend» («win32» || «uia») in 1-st list element +#old name - GetControl + + +* **Параметры** + + **inControlSpecificationArray** – List of dict, dict in pywinauto.find_windows notation + + + +* **Результат** + + list of UIO object + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelectorSecs_WaitAppear_Bool(inSpecificationList, inWaitSecs) +Wait for UI object will appear in GUI for inWaitSecs seconds. + + +* **Параметры** + + + * **inSpecificationList** – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}] + + + * **inWaitSecs** – Float value (seconds) for wait UI element appear in GUI + + + +* **Результат** + + True - UI object will appear. False - else case + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelectorSecs_WaitDisappear_Bool(inSpecificationList, inWaitSecs) +Wait for UI object will disappear in GUI for inWaitSecs seconds. + + +* **Параметры** + + + * **inSpecificationList** – UIOSelector. + Example: [{«title»:»notepad»},{«title»:»OK»}] + + + * **inWaitSecs** – Float value (seconds) for wait UI element disappear in GUI + + + +* **Результат** + + True - UI object will disappear. False - else case + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelectorUIOActivity_Run_Dict(inUIOSelector, inActionName, inArgumentList=None, inkwArgumentObject=None) +Run the activity in UIO (UI Object) + + +* **Параметры** + + + * **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + * **inActionName** – UIOActivity (name) activity name string from Pywinauto + + + * **inArgumentList** – + + + * **inkwArgumentObject** – + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Exist_Bool(inUIOSelector) +Check if object is exist by the UIO selector. + + +* **Параметры** + + **inUIOSelector** – + + + +* **Результат** + + True - Object is exist. False - else case + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_FocusHighlight(inUIOSelector) +Set focus and highlight (draw outline) the element (in app) by the UIO selector. + + +* **Параметры** + + **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_GetChildList_UIOList(inUIOSelector=None, inBackend='win32') +Get list of child UIO’s by the parent UIOSelector + + +* **Параметры** + + + * **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + * **inBackend** – «win32» or «uia» + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_BitnessInt(inSpecificationList) +Detect process bitness by the UI Object UIO Selector. + + +* **Параметры** + + **inSpecificationList** – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}] + + + +* **Результат** + + int 32 or int 64 + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_BitnessStr(inSpecificationList) +Detect process bitness by the UI Object UIO Selector. + + +* **Параметры** + + **inSpecificationList** – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}] + + + +* **Результат** + + str «32» or str «64» + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIO(inSpecificationList, inElement=None, inFlagRaiseException=True) +Get the pywinauto object by the UIO selector. + + +* **Параметры** + + + * **inSpecificationList** – + + + * **inElement** – + + + * **inFlagRaiseException** – + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOActivityList(inUIOSelector) +Get the list of the UI object activities + + +* **Параметры** + + **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOInfo(inUIOSelector) +Get the UIO dict of the attributes + + +* **Параметры** + + **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOList(inSpecificationList, inElement=None, inFlagRaiseException=True) +Get the UIO list by the selector + + +* **Параметры** + + + * **inSpecificationList** – UIO Selector + + + * **inElement** – Входной элемент - показатель, что не требуется выполнять коннект к процессу + + + * **inFlagRaiseException** – Флаг True - выкинуть ошибку в случае обнаружении пустого списка + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Highlight(inUIOSelector) +Highlight (draw outline) the element (in app) by the UIO selector. + + +* **Параметры** + + **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_SafeOtherGet_Process(inUIOSelector) +Safe get other process or None if destination app is the other/same bitness + + +* **Параметры** + + **inUIOSelector** – UIO Selector of the UI object + + + +* **Результат** + + None or process (of the other bitness) + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_SearchChildByMouse_UIO(inElementSpecification) +UIOSelector (see description on the top of the document) +#old name - AutomationSearchMouseElement + + +* **Параметры** + + **inElementSpecification** – UIOSelector of the UI Object + + + +* **Результат** + + pywinauto element wrapper instance or None + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_SearchChildByMouse_UIOTree(inUIOSelector) +!!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!! + + +* **Параметры** + + **inUIOSelector** – UIOSelector of the UI Object + + + +* **Результат** + + ? + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_TryRestore_Dict(inSpecificationList) +Try to restore (maximize) window, if it’s minimized. (!IMPORTANT! When use UIA framework minimized windows doesn’t appear by the UIOSelector. You need to try restore windows and after that try to get UIO) + + +* **Параметры** + + **inSpecificationList** – UIOSelector - List of items, which contains condition attributes + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelectorsSecs_WaitAppear_List(inSpecificationListList, inWaitSecs, inFlagWaitAllInMoment=False) +Wait for many UI object will appear in GUI for inWaitSecs seconds. + + +* **Параметры** + + + * **inSpecificationListList** – UIOSelector list. + Example: [ + + > [{«title»:»notepad»},{«title»:»OK»}], + > [{«title»:»notepad»},{«title»:»Cancel»}] + + ] + + + + * **inWaitSecs** – Float value (seconds) for wait UI element appear in GUI + + + * **inFlagWaitAllInMoment** – True - Wait all UI objects from the UIOSelector list to be appeared + + + +* **Результат** + + List of index, which UI object UIO will be appeared. Example: [1] # Appear only UI object with UIO selector: [{«title»:»notepad»},{«title»:»Cancel»}] + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelectorsSecs_WaitDisappear_List(inSpecificationListList, inWaitSecs, inFlagWaitAllInMoment=False) +Wait for many UI object will disappear in GUI for inWaitSecs seconds. + + +* **Параметры** + + + * **inSpecificationListList** – UIOSelector list. + Example: [ + + > [{«title»:»notepad»},{«title»:»OK»}], + > [{«title»:»notepad»},{«title»:»Cancel»}] + + ] + + + + * **inWaitSecs** – Float value (seconds) for wait UI element disappear in GUI + + + * **inFlagWaitAllInMoment** – True - Wait all UI objects from the UIOSelector list to be disappeared. + + + +* **Результат** + + List of index, which UI object UIO will be disappeared. Example: [1] # Disappear only UI object with UIO selector: [{«title»:»notepad»},{«title»:»Cancel»}] + + + +* **Результат** + + + +## References + +[reStructuredText](http://docutils.sourceforge.net/rst.html) + + .. v1.2.12 replace:: v1.2.12 + .. + +``` +|author| +``` + + replace:: Ivan Maslov <[ivan.maslov@unicodelabs.ru](mailto:ivan.maslov@unicodelabs.ru)> diff --git a/Wiki/RUS_Guide/markdown/Robot/05_clipboard.md b/Wiki/RUS_Guide/markdown/Robot/05_clipboard.md new file mode 100644 index 00000000..bccb647c --- /dev/null +++ b/Wiki/RUS_Guide/markdown/Robot/05_clipboard.md @@ -0,0 +1,554 @@ +# 5. Clipboard + +Here you can find the functions description for interaction with desktop GUI applications + +How to use both x32 and x64 python processes (it can be helpfully, if another app GUI is on another bitness than your app) + +``` +from pyOpenRPA.Robot import UIDesktop +#Section for robot init +lPyOpenRPA_SettingsDict = { + "Python32FullPath": "..\\Resources\\WPy32-3720\\python-3.7.2\\python.exe", #Set from user: "..\\Resources\\WPy32-3720\\python-3.7.2\\OpenRPARobotGUIx32.exe" + "Python64FullPath": "..\\Resources\\WPy64-3720\\python-3.7.2.amd64\\python.exe", #Set from user + "Python32ProcessName": "pyOpenRPA_UIDesktopX32.exe", #Config set once + "Python64ProcessName": "pyOpenRPA_UIDesktopX64.exe" #Config set once +} +# Init the pyOpenRPA configuration +UIDesktop.Utils.ProcessBitness.SettingsInit(lPyOpenRPA_SettingsDict) +# Now you can use pyOpenRPA with both bitness. +``` + +**Functions:** + +| `Get_OSBitnessInt`() + + | Detect OS bitness. + + | +| `PWASpecification_Get_PWAApplication`(…) + + | #Backend selection - attribute «backend» («win32» || «uia») in 1-st list element + + | +| `PWASpecification_Get_UIO`(…) + + | #Backend def selection - attribute «backend» («win32» || «uia») in 1-st list element #old name - GetControl + + | +| `UIOSelectorSecs_WaitAppear_Bool`(…) + + | Wait for UI object will appear in GUI for inWaitSecs seconds. + + | +| `UIOSelectorSecs_WaitDisappear_Bool`(…) + + | Wait for UI object will disappear in GUI for inWaitSecs seconds. + + | +| `UIOSelectorUIOActivity_Run_Dict`(…[, …]) + + | Run the activity in UIO (UI Object) + + | +| `UIOSelector_Exist_Bool`(inUIOSelector) + + | Check if object is exist by the UIO selector. + + | +| `UIOSelector_FocusHighlight`(inUIOSelector) + + | Set focus and highlight (draw outline) the element (in app) by the UIO selector. + + | +| `UIOSelector_GetChildList_UIOList`([…]) + + | Get list of child UIO’s by the parent UIOSelector + + | +| `UIOSelector_Get_BitnessInt`(inSpecificationList) + + | Detect process bitness by the UI Object UIO Selector. + + | +| `UIOSelector_Get_BitnessStr`(inSpecificationList) + + | Detect process bitness by the UI Object UIO Selector. + + | +| `UIOSelector_Get_UIO`(inSpecificationList[, …]) + + | Get the pywinauto object by the UIO selector. + + | +| `UIOSelector_Get_UIOActivityList`(inUIOSelector) + + | Get the list of the UI object activities + + | +| `UIOSelector_Get_UIOInfo`(inUIOSelector) + + | Get the UIO dict of the attributes + + | +| `UIOSelector_Get_UIOList`(inSpecificationList) + + | Get the UIO list by the selector + + | +| `UIOSelector_Highlight`(inUIOSelector) + + | Highlight (draw outline) the element (in app) by the UIO selector. + + | +| `UIOSelector_SafeOtherGet_Process`(inUIOSelector) + + | Safe get other process or None if destination app is the other/same bitness + + | +| `UIOSelector_SearchChildByMouse_UIO`(…) + + | UIOSelector (see description on the top of the document) #old name - AutomationSearchMouseElement + + | +| `UIOSelector_SearchChildByMouse_UIOTree`(…) + + | !!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!! + + | +| `UIOSelector_TryRestore_Dict`(inSpecificationList) + + | Try to restore (maximize) window, if it’s minimized. + + | +| `UIOSelectorsSecs_WaitAppear_List`(…[, …]) + + | Wait for many UI object will appear in GUI for inWaitSecs seconds. + + | +| `UIOSelectorsSecs_WaitDisappear_List`(…[, …]) + + | Wait for many UI object will disappear in GUI for inWaitSecs seconds. + + | + +### pyOpenRPA.Robot.UIDesktop.Get_OSBitnessInt() +Detect OS bitness. + + +* **Результат** + + int 32 or int 64 + + + +### pyOpenRPA.Robot.UIDesktop.PWASpecification_Get_PWAApplication(inControlSpecificationArray) +#Backend selection - attribute «backend» («win32» || «uia») in 1-st list element + + +* **Параметры** + + **inControlSpecificationArray** – List of dict, dict in pywinauto.find_windows notation + + + +* **Результат** + + process application object + + + +### pyOpenRPA.Robot.UIDesktop.PWASpecification_Get_UIO(inControlSpecificationArray) +#Backend def selection - attribute «backend» («win32» || «uia») in 1-st list element +#old name - GetControl + + +* **Параметры** + + **inControlSpecificationArray** – List of dict, dict in pywinauto.find_windows notation + + + +* **Результат** + + list of UIO object + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelectorSecs_WaitAppear_Bool(inSpecificationList, inWaitSecs) +Wait for UI object will appear in GUI for inWaitSecs seconds. + + +* **Параметры** + + + * **inSpecificationList** – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}] + + + * **inWaitSecs** – Float value (seconds) for wait UI element appear in GUI + + + +* **Результат** + + True - UI object will appear. False - else case + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelectorSecs_WaitDisappear_Bool(inSpecificationList, inWaitSecs) +Wait for UI object will disappear in GUI for inWaitSecs seconds. + + +* **Параметры** + + + * **inSpecificationList** – UIOSelector. + Example: [{«title»:»notepad»},{«title»:»OK»}] + + + * **inWaitSecs** – Float value (seconds) for wait UI element disappear in GUI + + + +* **Результат** + + True - UI object will disappear. False - else case + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelectorUIOActivity_Run_Dict(inUIOSelector, inActionName, inArgumentList=None, inkwArgumentObject=None) +Run the activity in UIO (UI Object) + + +* **Параметры** + + + * **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + * **inActionName** – UIOActivity (name) activity name string from Pywinauto + + + * **inArgumentList** – + + + * **inkwArgumentObject** – + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Exist_Bool(inUIOSelector) +Check if object is exist by the UIO selector. + + +* **Параметры** + + **inUIOSelector** – + + + +* **Результат** + + True - Object is exist. False - else case + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_FocusHighlight(inUIOSelector) +Set focus and highlight (draw outline) the element (in app) by the UIO selector. + + +* **Параметры** + + **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_GetChildList_UIOList(inUIOSelector=None, inBackend='win32') +Get list of child UIO’s by the parent UIOSelector + + +* **Параметры** + + + * **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + * **inBackend** – «win32» or «uia» + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_BitnessInt(inSpecificationList) +Detect process bitness by the UI Object UIO Selector. + + +* **Параметры** + + **inSpecificationList** – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}] + + + +* **Результат** + + int 32 or int 64 + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_BitnessStr(inSpecificationList) +Detect process bitness by the UI Object UIO Selector. + + +* **Параметры** + + **inSpecificationList** – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}] + + + +* **Результат** + + str «32» or str «64» + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIO(inSpecificationList, inElement=None, inFlagRaiseException=True) +Get the pywinauto object by the UIO selector. + + +* **Параметры** + + + * **inSpecificationList** – + + + * **inElement** – + + + * **inFlagRaiseException** – + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOActivityList(inUIOSelector) +Get the list of the UI object activities + + +* **Параметры** + + **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOInfo(inUIOSelector) +Get the UIO dict of the attributes + + +* **Параметры** + + **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOList(inSpecificationList, inElement=None, inFlagRaiseException=True) +Get the UIO list by the selector + + +* **Параметры** + + + * **inSpecificationList** – UIO Selector + + + * **inElement** – Входной элемент - показатель, что не требуется выполнять коннект к процессу + + + * **inFlagRaiseException** – Флаг True - выкинуть ошибку в случае обнаружении пустого списка + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Highlight(inUIOSelector) +Highlight (draw outline) the element (in app) by the UIO selector. + + +* **Параметры** + + **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_SafeOtherGet_Process(inUIOSelector) +Safe get other process or None if destination app is the other/same bitness + + +* **Параметры** + + **inUIOSelector** – UIO Selector of the UI object + + + +* **Результат** + + None or process (of the other bitness) + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_SearchChildByMouse_UIO(inElementSpecification) +UIOSelector (see description on the top of the document) +#old name - AutomationSearchMouseElement + + +* **Параметры** + + **inElementSpecification** – UIOSelector of the UI Object + + + +* **Результат** + + pywinauto element wrapper instance or None + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_SearchChildByMouse_UIOTree(inUIOSelector) +!!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!! + + +* **Параметры** + + **inUIOSelector** – UIOSelector of the UI Object + + + +* **Результат** + + ? + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_TryRestore_Dict(inSpecificationList) +Try to restore (maximize) window, if it’s minimized. (!IMPORTANT! When use UIA framework minimized windows doesn’t appear by the UIOSelector. You need to try restore windows and after that try to get UIO) + + +* **Параметры** + + **inSpecificationList** – UIOSelector - List of items, which contains condition attributes + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelectorsSecs_WaitAppear_List(inSpecificationListList, inWaitSecs, inFlagWaitAllInMoment=False) +Wait for many UI object will appear in GUI for inWaitSecs seconds. + + +* **Параметры** + + + * **inSpecificationListList** – UIOSelector list. + Example: [ + + > [{«title»:»notepad»},{«title»:»OK»}], + > [{«title»:»notepad»},{«title»:»Cancel»}] + + ] + + + + * **inWaitSecs** – Float value (seconds) for wait UI element appear in GUI + + + * **inFlagWaitAllInMoment** – True - Wait all UI objects from the UIOSelector list to be appeared + + + +* **Результат** + + List of index, which UI object UIO will be appeared. Example: [1] # Appear only UI object with UIO selector: [{«title»:»notepad»},{«title»:»Cancel»}] + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelectorsSecs_WaitDisappear_List(inSpecificationListList, inWaitSecs, inFlagWaitAllInMoment=False) +Wait for many UI object will disappear in GUI for inWaitSecs seconds. + + +* **Параметры** + + + * **inSpecificationListList** – UIOSelector list. + Example: [ + + > [{«title»:»notepad»},{«title»:»OK»}], + > [{«title»:»notepad»},{«title»:»Cancel»}] + + ] + + + + * **inWaitSecs** – Float value (seconds) for wait UI element disappear in GUI + + + * **inFlagWaitAllInMoment** – True - Wait all UI objects from the UIOSelector list to be disappeared. + + + +* **Результат** + + List of index, which UI object UIO will be disappeared. Example: [1] # Disappear only UI object with UIO selector: [{«title»:»notepad»},{«title»:»Cancel»}] + + + +* **Результат** + + + +## References + +[reStructuredText](http://docutils.sourceforge.net/rst.html) + + .. v1.2.12 replace:: v1.2.12 + .. + +``` +|author| +``` + + replace:: Ivan Maslov <[ivan.maslov@unicodelabs.ru](mailto:ivan.maslov@unicodelabs.ru)> diff --git a/Wiki/RUS_Guide/markdown/Robot/06_mouse.md b/Wiki/RUS_Guide/markdown/Robot/06_mouse.md new file mode 100644 index 00000000..9d3a280c --- /dev/null +++ b/Wiki/RUS_Guide/markdown/Robot/06_mouse.md @@ -0,0 +1,554 @@ +# 6. Mouse + +Here you can find the functions description for interaction with desktop GUI applications + +How to use both x32 and x64 python processes (it can be helpfully, if another app GUI is on another bitness than your app) + +``` +from pyOpenRPA.Robot import UIDesktop +#Section for robot init +lPyOpenRPA_SettingsDict = { + "Python32FullPath": "..\\Resources\\WPy32-3720\\python-3.7.2\\python.exe", #Set from user: "..\\Resources\\WPy32-3720\\python-3.7.2\\OpenRPARobotGUIx32.exe" + "Python64FullPath": "..\\Resources\\WPy64-3720\\python-3.7.2.amd64\\python.exe", #Set from user + "Python32ProcessName": "pyOpenRPA_UIDesktopX32.exe", #Config set once + "Python64ProcessName": "pyOpenRPA_UIDesktopX64.exe" #Config set once +} +# Init the pyOpenRPA configuration +UIDesktop.Utils.ProcessBitness.SettingsInit(lPyOpenRPA_SettingsDict) +# Now you can use pyOpenRPA with both bitness. +``` + +**Functions:** + +| `Get_OSBitnessInt`() + + | Detect OS bitness. + + | +| `PWASpecification_Get_PWAApplication`(…) + + | #Backend selection - attribute «backend» («win32» || «uia») in 1-st list element + + | +| `PWASpecification_Get_UIO`(…) + + | #Backend def selection - attribute «backend» («win32» || «uia») in 1-st list element #old name - GetControl + + | +| `UIOSelectorSecs_WaitAppear_Bool`(…) + + | Wait for UI object will appear in GUI for inWaitSecs seconds. + + | +| `UIOSelectorSecs_WaitDisappear_Bool`(…) + + | Wait for UI object will disappear in GUI for inWaitSecs seconds. + + | +| `UIOSelectorUIOActivity_Run_Dict`(…[, …]) + + | Run the activity in UIO (UI Object) + + | +| `UIOSelector_Exist_Bool`(inUIOSelector) + + | Check if object is exist by the UIO selector. + + | +| `UIOSelector_FocusHighlight`(inUIOSelector) + + | Set focus and highlight (draw outline) the element (in app) by the UIO selector. + + | +| `UIOSelector_GetChildList_UIOList`([…]) + + | Get list of child UIO’s by the parent UIOSelector + + | +| `UIOSelector_Get_BitnessInt`(inSpecificationList) + + | Detect process bitness by the UI Object UIO Selector. + + | +| `UIOSelector_Get_BitnessStr`(inSpecificationList) + + | Detect process bitness by the UI Object UIO Selector. + + | +| `UIOSelector_Get_UIO`(inSpecificationList[, …]) + + | Get the pywinauto object by the UIO selector. + + | +| `UIOSelector_Get_UIOActivityList`(inUIOSelector) + + | Get the list of the UI object activities + + | +| `UIOSelector_Get_UIOInfo`(inUIOSelector) + + | Get the UIO dict of the attributes + + | +| `UIOSelector_Get_UIOList`(inSpecificationList) + + | Get the UIO list by the selector + + | +| `UIOSelector_Highlight`(inUIOSelector) + + | Highlight (draw outline) the element (in app) by the UIO selector. + + | +| `UIOSelector_SafeOtherGet_Process`(inUIOSelector) + + | Safe get other process or None if destination app is the other/same bitness + + | +| `UIOSelector_SearchChildByMouse_UIO`(…) + + | UIOSelector (see description on the top of the document) #old name - AutomationSearchMouseElement + + | +| `UIOSelector_SearchChildByMouse_UIOTree`(…) + + | !!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!! + + | +| `UIOSelector_TryRestore_Dict`(inSpecificationList) + + | Try to restore (maximize) window, if it’s minimized. + + | +| `UIOSelectorsSecs_WaitAppear_List`(…[, …]) + + | Wait for many UI object will appear in GUI for inWaitSecs seconds. + + | +| `UIOSelectorsSecs_WaitDisappear_List`(…[, …]) + + | Wait for many UI object will disappear in GUI for inWaitSecs seconds. + + | + +### pyOpenRPA.Robot.UIDesktop.Get_OSBitnessInt() +Detect OS bitness. + + +* **Результат** + + int 32 or int 64 + + + +### pyOpenRPA.Robot.UIDesktop.PWASpecification_Get_PWAApplication(inControlSpecificationArray) +#Backend selection - attribute «backend» («win32» || «uia») in 1-st list element + + +* **Параметры** + + **inControlSpecificationArray** – List of dict, dict in pywinauto.find_windows notation + + + +* **Результат** + + process application object + + + +### pyOpenRPA.Robot.UIDesktop.PWASpecification_Get_UIO(inControlSpecificationArray) +#Backend def selection - attribute «backend» («win32» || «uia») in 1-st list element +#old name - GetControl + + +* **Параметры** + + **inControlSpecificationArray** – List of dict, dict in pywinauto.find_windows notation + + + +* **Результат** + + list of UIO object + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelectorSecs_WaitAppear_Bool(inSpecificationList, inWaitSecs) +Wait for UI object will appear in GUI for inWaitSecs seconds. + + +* **Параметры** + + + * **inSpecificationList** – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}] + + + * **inWaitSecs** – Float value (seconds) for wait UI element appear in GUI + + + +* **Результат** + + True - UI object will appear. False - else case + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelectorSecs_WaitDisappear_Bool(inSpecificationList, inWaitSecs) +Wait for UI object will disappear in GUI for inWaitSecs seconds. + + +* **Параметры** + + + * **inSpecificationList** – UIOSelector. + Example: [{«title»:»notepad»},{«title»:»OK»}] + + + * **inWaitSecs** – Float value (seconds) for wait UI element disappear in GUI + + + +* **Результат** + + True - UI object will disappear. False - else case + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelectorUIOActivity_Run_Dict(inUIOSelector, inActionName, inArgumentList=None, inkwArgumentObject=None) +Run the activity in UIO (UI Object) + + +* **Параметры** + + + * **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + * **inActionName** – UIOActivity (name) activity name string from Pywinauto + + + * **inArgumentList** – + + + * **inkwArgumentObject** – + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Exist_Bool(inUIOSelector) +Check if object is exist by the UIO selector. + + +* **Параметры** + + **inUIOSelector** – + + + +* **Результат** + + True - Object is exist. False - else case + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_FocusHighlight(inUIOSelector) +Set focus and highlight (draw outline) the element (in app) by the UIO selector. + + +* **Параметры** + + **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_GetChildList_UIOList(inUIOSelector=None, inBackend='win32') +Get list of child UIO’s by the parent UIOSelector + + +* **Параметры** + + + * **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + * **inBackend** – «win32» or «uia» + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_BitnessInt(inSpecificationList) +Detect process bitness by the UI Object UIO Selector. + + +* **Параметры** + + **inSpecificationList** – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}] + + + +* **Результат** + + int 32 or int 64 + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_BitnessStr(inSpecificationList) +Detect process bitness by the UI Object UIO Selector. + + +* **Параметры** + + **inSpecificationList** – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}] + + + +* **Результат** + + str «32» or str «64» + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIO(inSpecificationList, inElement=None, inFlagRaiseException=True) +Get the pywinauto object by the UIO selector. + + +* **Параметры** + + + * **inSpecificationList** – + + + * **inElement** – + + + * **inFlagRaiseException** – + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOActivityList(inUIOSelector) +Get the list of the UI object activities + + +* **Параметры** + + **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOInfo(inUIOSelector) +Get the UIO dict of the attributes + + +* **Параметры** + + **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOList(inSpecificationList, inElement=None, inFlagRaiseException=True) +Get the UIO list by the selector + + +* **Параметры** + + + * **inSpecificationList** – UIO Selector + + + * **inElement** – Входной элемент - показатель, что не требуется выполнять коннект к процессу + + + * **inFlagRaiseException** – Флаг True - выкинуть ошибку в случае обнаружении пустого списка + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Highlight(inUIOSelector) +Highlight (draw outline) the element (in app) by the UIO selector. + + +* **Параметры** + + **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_SafeOtherGet_Process(inUIOSelector) +Safe get other process or None if destination app is the other/same bitness + + +* **Параметры** + + **inUIOSelector** – UIO Selector of the UI object + + + +* **Результат** + + None or process (of the other bitness) + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_SearchChildByMouse_UIO(inElementSpecification) +UIOSelector (see description on the top of the document) +#old name - AutomationSearchMouseElement + + +* **Параметры** + + **inElementSpecification** – UIOSelector of the UI Object + + + +* **Результат** + + pywinauto element wrapper instance or None + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_SearchChildByMouse_UIOTree(inUIOSelector) +!!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!! + + +* **Параметры** + + **inUIOSelector** – UIOSelector of the UI Object + + + +* **Результат** + + ? + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_TryRestore_Dict(inSpecificationList) +Try to restore (maximize) window, if it’s minimized. (!IMPORTANT! When use UIA framework minimized windows doesn’t appear by the UIOSelector. You need to try restore windows and after that try to get UIO) + + +* **Параметры** + + **inSpecificationList** – UIOSelector - List of items, which contains condition attributes + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelectorsSecs_WaitAppear_List(inSpecificationListList, inWaitSecs, inFlagWaitAllInMoment=False) +Wait for many UI object will appear in GUI for inWaitSecs seconds. + + +* **Параметры** + + + * **inSpecificationListList** – UIOSelector list. + Example: [ + + > [{«title»:»notepad»},{«title»:»OK»}], + > [{«title»:»notepad»},{«title»:»Cancel»}] + + ] + + + + * **inWaitSecs** – Float value (seconds) for wait UI element appear in GUI + + + * **inFlagWaitAllInMoment** – True - Wait all UI objects from the UIOSelector list to be appeared + + + +* **Результат** + + List of index, which UI object UIO will be appeared. Example: [1] # Appear only UI object with UIO selector: [{«title»:»notepad»},{«title»:»Cancel»}] + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelectorsSecs_WaitDisappear_List(inSpecificationListList, inWaitSecs, inFlagWaitAllInMoment=False) +Wait for many UI object will disappear in GUI for inWaitSecs seconds. + + +* **Параметры** + + + * **inSpecificationListList** – UIOSelector list. + Example: [ + + > [{«title»:»notepad»},{«title»:»OK»}], + > [{«title»:»notepad»},{«title»:»Cancel»}] + + ] + + + + * **inWaitSecs** – Float value (seconds) for wait UI element disappear in GUI + + + * **inFlagWaitAllInMoment** – True - Wait all UI objects from the UIOSelector list to be disappeared. + + + +* **Результат** + + List of index, which UI object UIO will be disappeared. Example: [1] # Disappear only UI object with UIO selector: [{«title»:»notepad»},{«title»:»Cancel»}] + + + +* **Результат** + + + +## References + +[reStructuredText](http://docutils.sourceforge.net/rst.html) + + .. v1.2.12 replace:: v1.2.12 + .. + +``` +|author| +``` + + replace:: Ivan Maslov <[ivan.maslov@unicodelabs.ru](mailto:ivan.maslov@unicodelabs.ru)> diff --git a/Wiki/RUS_Guide/markdown/Robot/07_image.md b/Wiki/RUS_Guide/markdown/Robot/07_image.md new file mode 100644 index 00000000..94f5ffde --- /dev/null +++ b/Wiki/RUS_Guide/markdown/Robot/07_image.md @@ -0,0 +1,554 @@ +# 7. Image + +Here you can find the functions description for interaction with desktop GUI applications + +How to use both x32 and x64 python processes (it can be helpfully, if another app GUI is on another bitness than your app) + +``` +from pyOpenRPA.Robot import UIDesktop +#Section for robot init +lPyOpenRPA_SettingsDict = { + "Python32FullPath": "..\\Resources\\WPy32-3720\\python-3.7.2\\python.exe", #Set from user: "..\\Resources\\WPy32-3720\\python-3.7.2\\OpenRPARobotGUIx32.exe" + "Python64FullPath": "..\\Resources\\WPy64-3720\\python-3.7.2.amd64\\python.exe", #Set from user + "Python32ProcessName": "pyOpenRPA_UIDesktopX32.exe", #Config set once + "Python64ProcessName": "pyOpenRPA_UIDesktopX64.exe" #Config set once +} +# Init the pyOpenRPA configuration +UIDesktop.Utils.ProcessBitness.SettingsInit(lPyOpenRPA_SettingsDict) +# Now you can use pyOpenRPA with both bitness. +``` + +**Functions:** + +| `Get_OSBitnessInt`() + + | Detect OS bitness. + + | +| `PWASpecification_Get_PWAApplication`(…) + + | #Backend selection - attribute «backend» («win32» || «uia») in 1-st list element + + | +| `PWASpecification_Get_UIO`(…) + + | #Backend def selection - attribute «backend» («win32» || «uia») in 1-st list element #old name - GetControl + + | +| `UIOSelectorSecs_WaitAppear_Bool`(…) + + | Wait for UI object will appear in GUI for inWaitSecs seconds. + + | +| `UIOSelectorSecs_WaitDisappear_Bool`(…) + + | Wait for UI object will disappear in GUI for inWaitSecs seconds. + + | +| `UIOSelectorUIOActivity_Run_Dict`(…[, …]) + + | Run the activity in UIO (UI Object) + + | +| `UIOSelector_Exist_Bool`(inUIOSelector) + + | Check if object is exist by the UIO selector. + + | +| `UIOSelector_FocusHighlight`(inUIOSelector) + + | Set focus and highlight (draw outline) the element (in app) by the UIO selector. + + | +| `UIOSelector_GetChildList_UIOList`([…]) + + | Get list of child UIO’s by the parent UIOSelector + + | +| `UIOSelector_Get_BitnessInt`(inSpecificationList) + + | Detect process bitness by the UI Object UIO Selector. + + | +| `UIOSelector_Get_BitnessStr`(inSpecificationList) + + | Detect process bitness by the UI Object UIO Selector. + + | +| `UIOSelector_Get_UIO`(inSpecificationList[, …]) + + | Get the pywinauto object by the UIO selector. + + | +| `UIOSelector_Get_UIOActivityList`(inUIOSelector) + + | Get the list of the UI object activities + + | +| `UIOSelector_Get_UIOInfo`(inUIOSelector) + + | Get the UIO dict of the attributes + + | +| `UIOSelector_Get_UIOList`(inSpecificationList) + + | Get the UIO list by the selector + + | +| `UIOSelector_Highlight`(inUIOSelector) + + | Highlight (draw outline) the element (in app) by the UIO selector. + + | +| `UIOSelector_SafeOtherGet_Process`(inUIOSelector) + + | Safe get other process or None if destination app is the other/same bitness + + | +| `UIOSelector_SearchChildByMouse_UIO`(…) + + | UIOSelector (see description on the top of the document) #old name - AutomationSearchMouseElement + + | +| `UIOSelector_SearchChildByMouse_UIOTree`(…) + + | !!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!! + + | +| `UIOSelector_TryRestore_Dict`(inSpecificationList) + + | Try to restore (maximize) window, if it’s minimized. + + | +| `UIOSelectorsSecs_WaitAppear_List`(…[, …]) + + | Wait for many UI object will appear in GUI for inWaitSecs seconds. + + | +| `UIOSelectorsSecs_WaitDisappear_List`(…[, …]) + + | Wait for many UI object will disappear in GUI for inWaitSecs seconds. + + | + +### pyOpenRPA.Robot.UIDesktop.Get_OSBitnessInt() +Detect OS bitness. + + +* **Результат** + + int 32 or int 64 + + + +### pyOpenRPA.Robot.UIDesktop.PWASpecification_Get_PWAApplication(inControlSpecificationArray) +#Backend selection - attribute «backend» («win32» || «uia») in 1-st list element + + +* **Параметры** + + **inControlSpecificationArray** – List of dict, dict in pywinauto.find_windows notation + + + +* **Результат** + + process application object + + + +### pyOpenRPA.Robot.UIDesktop.PWASpecification_Get_UIO(inControlSpecificationArray) +#Backend def selection - attribute «backend» («win32» || «uia») in 1-st list element +#old name - GetControl + + +* **Параметры** + + **inControlSpecificationArray** – List of dict, dict in pywinauto.find_windows notation + + + +* **Результат** + + list of UIO object + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelectorSecs_WaitAppear_Bool(inSpecificationList, inWaitSecs) +Wait for UI object will appear in GUI for inWaitSecs seconds. + + +* **Параметры** + + + * **inSpecificationList** – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}] + + + * **inWaitSecs** – Float value (seconds) for wait UI element appear in GUI + + + +* **Результат** + + True - UI object will appear. False - else case + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelectorSecs_WaitDisappear_Bool(inSpecificationList, inWaitSecs) +Wait for UI object will disappear in GUI for inWaitSecs seconds. + + +* **Параметры** + + + * **inSpecificationList** – UIOSelector. + Example: [{«title»:»notepad»},{«title»:»OK»}] + + + * **inWaitSecs** – Float value (seconds) for wait UI element disappear in GUI + + + +* **Результат** + + True - UI object will disappear. False - else case + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelectorUIOActivity_Run_Dict(inUIOSelector, inActionName, inArgumentList=None, inkwArgumentObject=None) +Run the activity in UIO (UI Object) + + +* **Параметры** + + + * **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + * **inActionName** – UIOActivity (name) activity name string from Pywinauto + + + * **inArgumentList** – + + + * **inkwArgumentObject** – + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Exist_Bool(inUIOSelector) +Check if object is exist by the UIO selector. + + +* **Параметры** + + **inUIOSelector** – + + + +* **Результат** + + True - Object is exist. False - else case + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_FocusHighlight(inUIOSelector) +Set focus and highlight (draw outline) the element (in app) by the UIO selector. + + +* **Параметры** + + **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_GetChildList_UIOList(inUIOSelector=None, inBackend='win32') +Get list of child UIO’s by the parent UIOSelector + + +* **Параметры** + + + * **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + * **inBackend** – «win32» or «uia» + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_BitnessInt(inSpecificationList) +Detect process bitness by the UI Object UIO Selector. + + +* **Параметры** + + **inSpecificationList** – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}] + + + +* **Результат** + + int 32 or int 64 + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_BitnessStr(inSpecificationList) +Detect process bitness by the UI Object UIO Selector. + + +* **Параметры** + + **inSpecificationList** – UIOSelector. Example: [{«title»:»notepad»},{«title»:»OK»}] + + + +* **Результат** + + str «32» or str «64» + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIO(inSpecificationList, inElement=None, inFlagRaiseException=True) +Get the pywinauto object by the UIO selector. + + +* **Параметры** + + + * **inSpecificationList** – + + + * **inElement** – + + + * **inFlagRaiseException** – + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOActivityList(inUIOSelector) +Get the list of the UI object activities + + +* **Параметры** + + **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOInfo(inUIOSelector) +Get the UIO dict of the attributes + + +* **Параметры** + + **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOList(inSpecificationList, inElement=None, inFlagRaiseException=True) +Get the UIO list by the selector + + +* **Параметры** + + + * **inSpecificationList** – UIO Selector + + + * **inElement** – Входной элемент - показатель, что не требуется выполнять коннект к процессу + + + * **inFlagRaiseException** – Флаг True - выкинуть ошибку в случае обнаружении пустого списка + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_Highlight(inUIOSelector) +Highlight (draw outline) the element (in app) by the UIO selector. + + +* **Параметры** + + **inUIOSelector** – UIOSelector - List of items, which contains condition attributes + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_SafeOtherGet_Process(inUIOSelector) +Safe get other process or None if destination app is the other/same bitness + + +* **Параметры** + + **inUIOSelector** – UIO Selector of the UI object + + + +* **Результат** + + None or process (of the other bitness) + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_SearchChildByMouse_UIO(inElementSpecification) +UIOSelector (see description on the top of the document) +#old name - AutomationSearchMouseElement + + +* **Параметры** + + **inElementSpecification** – UIOSelector of the UI Object + + + +* **Результат** + + pywinauto element wrapper instance or None + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_SearchChildByMouse_UIOTree(inUIOSelector) +!!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!! + + +* **Параметры** + + **inUIOSelector** – UIOSelector of the UI Object + + + +* **Результат** + + ? + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelector_TryRestore_Dict(inSpecificationList) +Try to restore (maximize) window, if it’s minimized. (!IMPORTANT! When use UIA framework minimized windows doesn’t appear by the UIOSelector. You need to try restore windows and after that try to get UIO) + + +* **Параметры** + + **inSpecificationList** – UIOSelector - List of items, which contains condition attributes + + + +* **Результат** + + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelectorsSecs_WaitAppear_List(inSpecificationListList, inWaitSecs, inFlagWaitAllInMoment=False) +Wait for many UI object will appear in GUI for inWaitSecs seconds. + + +* **Параметры** + + + * **inSpecificationListList** – UIOSelector list. + Example: [ + + > [{«title»:»notepad»},{«title»:»OK»}], + > [{«title»:»notepad»},{«title»:»Cancel»}] + + ] + + + + * **inWaitSecs** – Float value (seconds) for wait UI element appear in GUI + + + * **inFlagWaitAllInMoment** – True - Wait all UI objects from the UIOSelector list to be appeared + + + +* **Результат** + + List of index, which UI object UIO will be appeared. Example: [1] # Appear only UI object with UIO selector: [{«title»:»notepad»},{«title»:»Cancel»}] + + + +### pyOpenRPA.Robot.UIDesktop.UIOSelectorsSecs_WaitDisappear_List(inSpecificationListList, inWaitSecs, inFlagWaitAllInMoment=False) +Wait for many UI object will disappear in GUI for inWaitSecs seconds. + + +* **Параметры** + + + * **inSpecificationListList** – UIOSelector list. + Example: [ + + > [{«title»:»notepad»},{«title»:»OK»}], + > [{«title»:»notepad»},{«title»:»Cancel»}] + + ] + + + + * **inWaitSecs** – Float value (seconds) for wait UI element disappear in GUI + + + * **inFlagWaitAllInMoment** – True - Wait all UI objects from the UIOSelector list to be disappeared. + + + +* **Результат** + + List of index, which UI object UIO will be disappeared. Example: [1] # Disappear only UI object with UIO selector: [{«title»:»notepad»},{«title»:»Cancel»}] + + + +* **Результат** + + + +## References + +[reStructuredText](http://docutils.sourceforge.net/rst.html) + + .. v1.2.12 replace:: v1.2.12 + .. + +``` +|author| +``` + + replace:: Ivan Maslov <[ivan.maslov@unicodelabs.ru](mailto:ivan.maslov@unicodelabs.ru)> diff --git a/Wiki/RUS_Guide/markdown/Robot/03_HowToUse.md b/Wiki/RUS_Guide/markdown/Robot/08_HowToUse.md similarity index 99% rename from Wiki/RUS_Guide/markdown/Robot/03_HowToUse.md rename to Wiki/RUS_Guide/markdown/Robot/08_HowToUse.md index c0929df8..863aef6a 100644 --- a/Wiki/RUS_Guide/markdown/Robot/03_HowToUse.md +++ b/Wiki/RUS_Guide/markdown/Robot/08_HowToUse.md @@ -1,4 +1,4 @@ -# 3. Как использовать? +# 8. Как использовать? The Robot tool is the main module for production process automation. It has no graphic/console interface. All low-level actions to OS are perfoming by the Robot tool in pyOpenRPA. diff --git a/Wiki/RUS_Guide/markdown/Robot/04_Dependencies.md b/Wiki/RUS_Guide/markdown/Robot/09_Dependencies.md similarity index 95% rename from Wiki/RUS_Guide/markdown/Robot/04_Dependencies.md rename to Wiki/RUS_Guide/markdown/Robot/09_Dependencies.md index 2f871b0f..dbac77b6 100644 --- a/Wiki/RUS_Guide/markdown/Robot/04_Dependencies.md +++ b/Wiki/RUS_Guide/markdown/Robot/09_Dependencies.md @@ -1,4 +1,4 @@ -# 4. Зависимости +# 9. Зависимости Python 3 x32 [psutil, pywinauto, wmi, PIL, keyboard, pyautogui, win32api (pywin32), selenium, openCV, tesseract, requests, lxml, PyMuPDF] Python 3 x64 [psutil, pywinauto, wmi, PIL, keyboard, pyautogui, win32api (pywin32), selenium, openCV, tesseract, requests, lxml, PyMuPDF] diff --git a/Wiki/RUS_Guide/markdown/index.md b/Wiki/RUS_Guide/markdown/index.md index 07e1b52d..0fe8d683 100644 --- a/Wiki/RUS_Guide/markdown/index.md +++ b/Wiki/RUS_Guide/markdown/index.md @@ -12,7 +12,7 @@ contain the root `toctree` directive. --> Добро пожаловать на портал документации pyOpenRPA. -pyOpenRPA - это самое прогрессивное и технологичное RPA решение на рынке роботизации. Наших роботов невозможно отключить принудительно - управлять ими будете только вы! +pyOpenRPA - это самое прогрессивное и технологичное RPA решение на рынке роботизации (открытый код). Наших роботов невозможно отключить принудительно - управлять ими будете только вы! Вместе с pyOpenRPA стало возможно сочетать в рамках одного проекта все перспективные технологии, такие как: @@ -41,155 +41,168 @@ pyOpenRPA - это самое прогрессивное и технологич Наша открытость и ряд стратегических инициатив позволяют с легкостью привлекать сотни новых специалистов и клиентов. Быть предельно прозрачными перед всеми участниками рынка. Предлагать индивидуальный набор услуг, нацеленный именно на решение проблем клиента. -С презентацией pyOpenRPA вы можете ознакомиться по ссылке: [[СМОТРЕТЬ PDF]](https://pyopenrpa.ru/Index/pyOpenRPA_product_service.pdf) Если возникнут вопросы, то вы всегда можете обратиться к нам! +С презентацией pyOpenRPA вы можете ознакомиться по ссылке: [[СМОТРЕТЬ PDF]](https://pyopenrpa.ru/Index/pyOpenRPA_product_service.pdf) . Если возникнут вопросы, то вы всегда можете обратиться к нам (контакты см. в презентации). pyOpenRPA - роботы вам помогут! **Иван Маслов, основатель и генеральный директор pyOpenRPA LLC** -ВЕРСИЯ v1.2.12 +## О портале -*by Ivan Maslov (Russia)* - see 2. Права & Контакты. +### Портал состоит из следующих разделов: -! ATTENTION ! pyOpenRPA works only on MS Windows 7+/Server 2008+. Guys from Unix/Mac - sorry. We will come to you soon :) -## About +* ОБЩЕЕ -Dear RPA-tors. Let me congratulate you with great change in the RPA world. Since 2019 the first enterprise level open source RPA platform is here! -pyOpenRPA is absolutely open source commercial project. Hosted by LLC PYOPENRPA (RUSSIA) +* МОДУЛЬ РОБОТ -The pyOpenRPA - free, fast and reliable -Powerful OpenSource RPA tool for business (based on python 3). Best performance and absolutely free! -The pyOpenRPA is based on Python and using well known OpenSource solutions such as Selenium, OpenCV, Win32, UI automation and others. Thanks to it we were able to create consolidated platform with all possible features. -The pyOpenRPA is distributed under the PYOPENRPA open license. -At the time of this writing the pyOpenRPA is successfully using in several big Russian companies. Companies in which it was decided to develop own RPA division with no dependencies on expensive licenses. +* МОДУЛЬ СТУДИЯ -## Repo structure -The description of the each folder in GitLab repo is going below: +* МОДУЛЬ ОРКЕСТРАТОР -* **Agent**: template build for the pyOpenRPA.Agent component +* МОДУЛЬ АГЕНТ -* **Orchestrator**: template build for the pyOpenRPA.Orchestrator component +* ИНСТРУМЕНТЫ +### ОБЩЕЕ -* **Resources**: 3rd party resources which is needed to provide pyOpenRPA encapsulation from the Operating System (OS) dependencies. +В разделе описание общие положения, такие как: Описание структуры портала, инструкция по развертыванию и запуску pyOpenRPA, информация о правообладателе, контакты. +### МОДУЛЬ РОБОТ -* **Robot**: template build for the robot +Модуль обеспечивает всю необходимую функциональность для создания любого программного робота RPA. Модуль робота поставляется в качестве библиотеки Python, что позволяет с легкостью интегрировать его в другие проекты перспективных технологий. +**Содержит** -* **Sources**: pyOpenRPA python package sources + sphinx sources +* Уровень доступа к элементам локального приложения (win32, UI automation), и веб приложения -* **Studio**: build for the pyOpenRPA.Studio which support Desktop UI (support x32 and x64 desktop UI apps) +* Уровень доступа к текстовым каналам передачи данных (клавиатура, буфер обмена) -* **Utils**: many additional good tools for the python developer +* Уровень доступа к графическим каналам передачи данных (мышь, экран) -* **Wiki**: compiled wiki documentation +Подробное описание модуля: 1. Описание. + +### МОДУЛЬ СТУДИИ + +Модуль является инструментом для отладки проектируемых узлов программного робота RPA. Запускается в качестве обособленного приложения в веб-браузере. + +**Основные возможности** + + +* Поиск и запуск доступных действий над UI элементом + + +* Чтение и запись атрибутов UI элемента -## The pyOpenRPA structure -### The pyOpenRPA has 4 main tools: +* Визуальное прототипирование алгоритма -* Studio +* Редактирование UI селекторов -* Robot +* Поиск UI элементов по наведению мыши -* Orchestrator +* Поиск UI элементов в дереве UI объектов -* Agent +* Автоматизированная генерация UI селекторов -### Studio +Подробное описание модуля: 1. Описание. -The pyOpenRPA.Studio tool has been developed to help RPA-tors to create the robot algorythms. +### МОДУЛЬ ОРКЕСТРАТОР + +The pyOpenRPA.Orchestrator package has been developed to maintain robot infrastructure (2+ robots algorythm). **Features** -* Run actions +* Start/Stop robot algorithm -* Create visual algorythms of the robot +* Robot scheduler -* Desktop app: Analyze desktop app ui tree +* Remote machine screenshot viewer -* Desktop app: Search desktop app ui by mouse +* Remote machine cmd shell -* Desktop app: Generate & edit the UIO Selector +* Remote machine logs storage -### Robot +### Agent -The pyOpenRPA.Robot package is the core of any action execution in the pyOpenRPA. All action from algorythms are perfoming by the Robot tool. It looks like a console process without graphic user interface. +The pyOpenRPA.Agent tool has been developed to maintain robot infrastructure (2+ robots algorythm). **Features** -* Based on Python (killer feature) - +* Send CMD to the RPA GUI session (start/safe stop/force stop/logout) -* Support Win32 GUI framework (desktop app) +* Get screenshots from the RPA GUI session -* Support UI automation framework (desktop app) +* Get the list of the running processes -* Support Selenium (web app) +## Технические требования +ВЕРСИЯ v1.2.12 -* Support PyAutoGUI (screen capture & mouse) +*by Ivan Maslov (Russia)* - see +! ATTENTION ! pyOpenRPA works only on MS Windows 7+/Server 2008+. Guys from Unix/Mac - sorry. We will come to you soon :) -* Support OpenCV (computer vision) +## About -### Orchestrator +Dear RPA-tors. Let me congratulate you with great change in the RPA world. Since 2019 the first enterprise level open source RPA platform is here! -The pyOpenRPA.Orchestrator package has been developed to maintain robot infrastructure (2+ robots algorythm). +pyOpenRPA is absolutely open source commercial project. Hosted by LLC PYOPENRPA (RUSSIA) -**Features** +The pyOpenRPA - free, fast and reliable +Powerful OpenSource RPA tool for business (based on python 3). Best performance and absolutely free! +The pyOpenRPA is based on Python and using well known OpenSource solutions such as Selenium, OpenCV, Win32, UI automation and others. Thanks to it we were able to create consolidated platform with all possible features. +The pyOpenRPA is distributed under the PYOPENRPA open license. +At the time of this writing the pyOpenRPA is successfully using in several big Russian companies. Companies in which it was decided to develop own RPA division with no dependencies on expensive licenses. -* Start/Stop robot algorithm +## Repo structure +The description of the each folder in GitLab repo is going below: -* Robot scheduler +* **Agent**: template build for the pyOpenRPA.Agent component -* Remote machine screenshot viewer +* **Orchestrator**: template build for the pyOpenRPA.Orchestrator component -* Remote machine cmd shell +* **Resources**: 3rd party resources which is needed to provide pyOpenRPA encapsulation from the Operating System (OS) dependencies. -* Remote machine logs storage -### Agent +* **Robot**: template build for the robot -The pyOpenRPA.Agent tool has been developed to maintain robot infrastructure (2+ robots algorythm). -**Features** +* **Sources**: pyOpenRPA python package sources + sphinx sources -* Send CMD to the RPA GUI session (start/safe stop/force stop/logout) +* **Studio**: build for the pyOpenRPA.Studio which support Desktop UI (support x32 and x64 desktop UI apps) -* Get screenshots from the RPA GUI session +* **Utils**: many additional good tools for the python developer -* Get the list of the running processes +* **Wiki**: compiled wiki documentation ## Wiki structure @@ -216,6 +229,8 @@ In wiki you can use the following docs: * RUS Leaflet pyOpenRPA v4.pdf [[|OPEN GITLAB|]](https://gitlab.com/UnicodeLabs/OpenRPA/-/tree/master/Wiki/RUS_Leaflet/RUS%20Leaflet%20pyOpenRPA%20v4.pdf) +2. Права & Контакты. + ## Guide content @@ -234,10 +249,13 @@ In wiki you can use the following docs: * 2. Права & Контакты - * Ivan Maslov (CEO & FOUNDER) + * Центр поддержки клиентов - * 3-rd party components license dependencies + * Иван Маслов (Основатель & генеральный директор) + + + * Используемые сторонние компоненты (лицензионная чистота) @@ -250,7 +268,43 @@ In wiki you can use the following docs: * References -* 3. Как использовать? +* 2. UIDesktop + + + * References + + +* 3. UIWeb + + + * References + + +* 4. Keyboard + + + * References + + +* 5. Clipboard + + + * References + + +* 6. Mouse + + + * References + + +* 7. Image + + + * References + + +* 8. Как использовать? * How to execute RPA script @@ -268,7 +322,7 @@ In wiki you can use the following docs: * Theory & practice. Screen capture & image recognition -* 4. Зависимости +* 9. Зависимости
  • 1. Описание