diff --git a/Sources/GuideSphinx/Robot/02_Defs.rst b/Sources/GuideSphinx/Robot/02_Defs.rst
index 533d2155..54d02d33 100644
--- a/Sources/GuideSphinx/Robot/02_Defs.rst
+++ b/Sources/GuideSphinx/Robot/02_Defs.rst
@@ -2,9 +2,69 @@
2. Defs
####################################
-**************************************************
-pyOpenRPA.Robot.UIDesktop
-**************************************************
+****************************************************************************************************
+Desktop app UI access (win32 and UI automation dlls)
+****************************************************************************************************
+
+Definitions
+############################################
+
+- **UIO** - UI Object (class of pywinauto UI object) [pywinauto.base_wrapper]
+- **UIOSelector** - List of dict (key attributes)
+- **PWA** - PyWinAuto
+- **PWASpecification** - List of dict (key attributes in pywinauto.find_window notation)
+- **UIOTree** - Recursive Dict of Dict ... (UI Parent -> Child hierarchy)
+- **UIOInfo** - Dict of UIO attributes
+- **UIOActivity** - Activity of the UIO (UI object) from the Pywinauto module
+- **UIOEI** - UI Object info object
+
+
+What is UIO?
+############################################
+UIO is a User Interface Object (pyOpenRPA terminology). For maximum compatibility, this instance is inherited from the object model developed in the [pywinauto library (click to get a list of available class functions)](https://pywinauto.readthedocs.io/en/latest/code/pywinauto.base_wrapper.html).
+
+This approach allows us to implement useful functionality that has already been successfully developed in other libraries, and Supplement it with the missing functionality. In our case, the missing functionality is the ability to dynamically access UIO objects using UIO selectors.
+
+
+UIOSelector structure & example
+############################################
+
+UIOSelector is the list of condition items for the UIO in GUI. Each item has condition attributes for detect applicable UIO. Here is the description of the available condition attributes in item.
+
+**Desciption**
+ ```
+[
+ {
+ "depth_start" :: [int, start from 1] :: the depth index, where to start check the condition list (default 1),
+ "depth_end" :: [int, start from 1] :: the depth index, where to stop check the condition list (default 1),
+ "ctrl_index" || "index" :: [int, starts from 0] :: the index of the UIO in parent UIO child list,
+ "title" :: [str] :: the condition for the UIO attribute *title*,
+ "title_re" :: [str] :: regular expression (python ver) for the condition for the UIO attribute *title*,
+ "rich_text" :: [str] :: the condition for the UIO attribute *rich_text*,
+ "rich_text_re" :: [str] :: regular expression (python ver) for the condition for the UIO attribute *rich_text*,
+ "class_name" :: [str] :: the condition for the UIO attribute *class_name*,
+ "class_name_re" :: [str] :: regular expression (python ver) for the condition for the UIO attribute *class_name*,
+ "friendly_class_name" :: [str] :: the condition for the UIO attribute *friendly_class_name*,
+ "friendly_class_name_re" :: [str] :: regular expression (python ver) for the condition for the UIO attribute *friendly_class_name*,
+ "control_type" :: [str] :: the condition for the UIO attribute *control_type*,
+ "control_type_re" :: [str] :: regular expression (python ver) for the condition for the UIO attribute *control_type*,
+ "is_enabled" :: [bool] :: the condition for the UIO attribute *is_enabled*. If UI object is enabled on GUI,
+ "is_visible" :: [bool] :: the condition for the UIO attribute *is_visible*. If UI object is visible on GUI,
+ "backend" :: [str, "win32" || "uia"] :: the method of UIO extraction (default "win32"). ATTENTION! Current option can be only for the first item of the UIO selector. For the next items this option will be implemented from the first item.
+ },
+ { ... specification next level UIO }
+]
+ ```
+**The UIO selector example**
+ ```
+[
+ {"class_name":"CalcFrame", "backend":"win32"}, # 1-st level UIO specification
+ {"title":"Hex", "depth_start":3, "depth_end": 3} # 3-rd level specification (because of attribute depth_start|depth_stop)
+]
+ ```
+The UIDesktop module (OpenRPA/Robot/UIDesktop.py)
+########################################################################################
+The UIDesktop is extension of the pywinauto module which provide access to the desktop apps by the **win32** and **ui automation** dll frameworks (big thx to the Microsoft :) ).
.. code-block:: python
diff --git a/Sources/GuideSphinx/Robot/03_HowToUse.rst b/Sources/GuideSphinx/Robot/03_HowToUse.rst
index bc4ec41a..70ef27b1 100644
--- a/Sources/GuideSphinx/Robot/03_HowToUse.rst
+++ b/Sources/GuideSphinx/Robot/03_HowToUse.rst
@@ -2,21 +2,10 @@
3. How to use
####################################
-**************************************************
-Content
-**************************************************
-- `About <#about>`__
-- `How to use <#way-to-use>`__
-- `Create python script <#create-python-script>`__
-- `Execute python script <#execute-python-script>`__
-
-**************************************************
-About
-**************************************************
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 OpenRPA.
**************************************************
-Way to use
+How to execute RPA script
**************************************************
You can use the robot by the several ways:
@@ -39,9 +28,8 @@ In order to use robot just add Robot tool folder in work directory and add line
import cv2 # [Computer vision](https://gitlab.com/UnicodeLabs/OpenRPA/wikis/05.4.-Theory-&-practice:-Screen-capture-&-image-recognition)
import keyboard #[Keyboard manipulation](https://gitlab.com/UnicodeLabs/OpenRPA/wikis/05.3.-Theory-&-practice:-Keyboard-&-mouse-manipulation)
-**************************************************
Execute python script
-**************************************************
+############################################
The OpenRPA is fully portable solution. It contains own python enviroment both 32 and 64 bit versions. So, you can execute your python script in several ways:
- Execute in python x32 (\OpenRPA\Resources\WPy32-3720\python-3.7.2)
@@ -80,9 +68,9 @@ In order to simplify the execution process you can write several code lines in f
.\..\Resources\WPy32-3720\python-3.7.2\OpenRPAOrchestrator.exe orchestratorMain.py
pause >nul
-**************************************************
+
Use in studio script (n/a)
-**************************************************
+############################################
.. code-block:: python
import sys
@@ -92,12 +80,129 @@ Use in studio script (n/a)
import subprocess
import time
- #Highlight the UI Object in Folder explorer
- GUI.UIOSelector_FocusHighlight([{"class_name":"CabinetWClass","backend":"uia"},{"ctrl_index":2},{"ctrl_index":0},{"ctrl_index":2},{"ctrl_index":0}])
+ #Highlight the UI Object in Folder explorer
+ GUI.UIOSelector_FocusHighlight([{"class_name":"CabinetWClass","backend":"uia"},{"ctrl_index":2},{"ctrl_index":0},{"ctrl_index":2},{"ctrl_index":0}])
+
+ #Wait 2 seconds
+ time.sleep(3)
+
+ #Loop: get child element of UI List
+ for lItem in GUI.UIOSelector_Get_UIO([{"class_name":"CabinetWClass","backend":"uia"},{"ctrl_index":2},{"ctrl_index":0},{"ctrl_index":2},{"ctrl_index":0}]).children():
+ print(str(lItem))
+
+
+
+Here you can find the docs and examples of the OpenRPA desktop (GUI) app access.
+
+****************************************************************************************************
+Theory & practice. Desktop app UI access (win32 and UI automation dlls)
+****************************************************************************************************
+
+Definitions
+############################################
+
+**UIO** - UI Object (class of pywinauto UI object) [pywinauto.base_wrapper]
+**UIOSelector** - List of dict (key attributes)
+**PWA** - PyWinAuto
+**PWASpecification** - List of dict (key attributes in pywinauto.find_window notation)
+**UIOTree** - Recursive Dict of Dict ... (UI Parent -> Child hierarchy)
+**UIOInfo** - Dict of UIO attributes
+**UIOActivity** - Activity of the UIO (UI object) from the Pywinauto module
+**UIOEI** - UI Object info object
+
+
+What is UIO?
+############################################
+UIO is a User Interface Object (pyOpenRPA terminology). For maximum compatibility, this instance is inherited from the object model developed in the [pywinauto library (click to get a list of available class functions)](https://pywinauto.readthedocs.io/en/latest/code/pywinauto.base_wrapper.html).
+
+This approach allows us to implement useful functionality that has already been successfully developed in other libraries, and Supplement it with the missing functionality. In our case, the missing functionality is the ability to dynamically access UIO objects using UIO selectors.
+
+
+UIOSelector structure & example
+############################################
+
+UIOSelector is the list of condition items for the UIO in GUI. Each item has condition attributes for detect applicable UIO. Here is the description of the available condition attributes in item.
+
+**Desciption**
+ ```
+[
+ {
+ "depth_start" :: [int, start from 1] :: the depth index, where to start check the condition list (default 1),
+ "depth_end" :: [int, start from 1] :: the depth index, where to stop check the condition list (default 1),
+ "ctrl_index" || "index" :: [int, starts from 0] :: the index of the UIO in parent UIO child list,
+ "title" :: [str] :: the condition for the UIO attribute *title*,
+ "title_re" :: [str] :: regular expression (python ver) for the condition for the UIO attribute *title*,
+ "rich_text" :: [str] :: the condition for the UIO attribute *rich_text*,
+ "rich_text_re" :: [str] :: regular expression (python ver) for the condition for the UIO attribute *rich_text*,
+ "class_name" :: [str] :: the condition for the UIO attribute *class_name*,
+ "class_name_re" :: [str] :: regular expression (python ver) for the condition for the UIO attribute *class_name*,
+ "friendly_class_name" :: [str] :: the condition for the UIO attribute *friendly_class_name*,
+ "friendly_class_name_re" :: [str] :: regular expression (python ver) for the condition for the UIO attribute *friendly_class_name*,
+ "control_type" :: [str] :: the condition for the UIO attribute *control_type*,
+ "control_type_re" :: [str] :: regular expression (python ver) for the condition for the UIO attribute *control_type*,
+ "is_enabled" :: [bool] :: the condition for the UIO attribute *is_enabled*. If UI object is enabled on GUI,
+ "is_visible" :: [bool] :: the condition for the UIO attribute *is_visible*. If UI object is visible on GUI,
+ "backend" :: [str, "win32" || "uia"] :: the method of UIO extraction (default "win32"). ATTENTION! Current option can be only for the first item of the UIO selector. For the next items this option will be implemented from the first item.
+ },
+ { ... specification next level UIO }
+]
+ ```
+**The UIO selector example**
+ ```
+[
+ {"class_name":"CalcFrame", "backend":"win32"}, # 1-st level UIO specification
+ {"title":"Hex", "depth_start":3, "depth_end": 3} # 3-rd level specification (because of attribute depth_start|depth_stop)
+]
+ ```
+The UIDesktop module (OpenRPA/Robot/UIDesktop.py)
+########################################################################################
+The UIDesktop is extension of the pywinauto module which provide access to the desktop apps by the **win32** and **ui automation** dll frameworks (big thx to the Microsoft :) ).
+
+*Naming convention: \\_\\_\*
+
+
+****************************************************************************************************
+Theory & practice. WEB app UI access (selenium)
+****************************************************************************************************
+
+About
+###############################################
+The pyOpenRPA support web app manipulation (by the Selenium lib).
+More docs about selenium you can find here (https://selenium-python.readthedocs.io/)
+
+How to use
+###############################################
+To start use selenium just import selenium modules in the robot tool. Here is the example of the usage.
+
+.. code-block:: python
+
+ from selenium import webdriver
+ from selenium.webdriver.common.keys import Keys
+
+ driver = webdriver.Chrome()
+ driver.get("http://www.python.org")
+ assert "Python" in driver.title
+ elem = driver.find_element_by_name("q")
+ elem.clear()
+ elem.send_keys("pycon")
+ elem.send_keys(Keys.RETURN)
+ assert "No results found." not in driver.page_source
+ driver.close()
+
+****************************************************************************************************
+Theory & practice. Keyboard & mouse manipulation
+****************************************************************************************************
+
+
+****************************************************************************************************
+Theory & practice. Screen capture & image recognition
+****************************************************************************************************
- #Wait 2 seconds
- time.sleep(3)
+How to automate image recognition on PC
+###########################################
- #Loop: get child element of UI List
- for lItem in GUI.UIOSelector_Get_UIO([{"class_name":"CabinetWClass","backend":"uia"},{"ctrl_index":2},{"ctrl_index":0},{"ctrl_index":2},{"ctrl_index":0}]).children():
- print(str(lItem))
+Here you can find any ways you need to use in your business case:
+- Find the exact match on the screen with the other image
+- Use text recognition module (OCR)
+- Use computer vision (CV) to identify the objects on screen/image/video
+- Use artificial intelligence (AI) to make custom identification/classification/text recognition
\ No newline at end of file
diff --git a/Sources/pyOpenRPA/Robot/UIDesktop.py b/Sources/pyOpenRPA/Robot/UIDesktop.py
index f82cc34b..0109cbdd 100644
--- a/Sources/pyOpenRPA/Robot/UIDesktop.py
+++ b/Sources/pyOpenRPA/Robot/UIDesktop.py
@@ -782,6 +782,12 @@ def UIOSelector_Get_UIOInfoList (inUIOSelector, inElement=None):
#inSpecificationList - UIOSelector
#old name - PywinautoExtTryToRestore
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)
+
+ :param inSpecificationList: UIOSelector - List of items, which contains condition attributes
+ :return:
+ """
lResult={}
try:
#Подготовка взодного массива
@@ -800,6 +806,12 @@ def UIOSelector_TryRestore_Dict(inSpecificationList):
#inControlSpecificationArray - UIOSelector
#old name - ElementActionGetList
def UIOSelector_Get_UIOActivityList (inUIOSelector):
+ """
+ Get the list of the UI object activities
+
+ :param inUIOSelector: UIOSelector - List of items, which contains condition attributes
+ :return:
+ """
#Check the bitness
lSafeOtherProcess = UIOSelector_SafeOtherGet_Process(inUIOSelector)
if lSafeOtherProcess is None:
@@ -838,6 +850,15 @@ def UIOSelector_Get_UIOActivityList (inUIOSelector):
#inActionName - UIOActivity (name) from Pywinauto
#old name - ElementRunAction
def UIOSelectorUIOActivity_Run_Dict(inUIOSelector, inActionName, inArgumentList=None, inkwArgumentObject=None):
+ """
+ Run the activity in UIO (UI Object)
+
+ :param inUIOSelector: UIOSelector - List of items, which contains condition attributes
+ :param inActionName: UIOActivity (name) activity name string from Pywinauto
+ :param inArgumentList:
+ :param inkwArgumentObject:
+ :return:
+ """
if inArgumentList is None: inArgumentList=[] # 2021 02 22 Minor fix by Ivan Maslov
if inkwArgumentObject is None: inkwArgumentObject={} # 2021 02 22 Minor fix by Ivan Maslov
lResult={}
@@ -887,6 +908,12 @@ def UIOSelectorUIOActivity_Run_Dict(inUIOSelector, inActionName, inArgumentList=
#!!!!!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):
+ """
+ Get the UIO dict of the attributes
+
+ :param inUIOSelector: UIOSelector - List of items, which contains condition attributes
+ :return:
+ """
#Check the bitness
lSafeOtherProcess = UIOSelector_SafeOtherGet_Process(inUIOSelector)
if lSafeOtherProcess is None:
@@ -1012,6 +1039,15 @@ def UIOXY_SearchChild_ListDict(inRootElement,inX,inY,inHierarchyList=None):
#inControlSpecificationArray- UIOSelector
#old name - ElementGetChildElementList
def UIOSelector_GetChildList_UIOList(inUIOSelector=None, inBackend=mDefaultPywinautoBackend):
+ """
+ Get list of child UIO's by the parent UIOSelector
+
+ :param inUIOSelector: UIOSelector - List of items, which contains condition attributes
+ :param inBackend: "win32" or "uia"
+ :return:
+ """
+
+
if inUIOSelector is None: inUIOSelector = []
#mRobotLogger.info(f"File!!!!")
#mRobotLogger.info(f"inSelector:{str(inUIOSelector)}, inBackend:{str(inBackend)}")
@@ -1301,6 +1337,12 @@ def BackendStr_GetTopLevelList_UIOInfo(inBackend=mDefaultPywinautoBackend):
#!!!!!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):
+ """
+ Highlight (draw outline) the element (in app) by the UIO selector.
+
+ :param inUIOSelector: UIOSelector - List of items, which contains condition attributes
+ :return:
+ """
#Check the bitness
lSafeOtherProcess = UIOSelector_SafeOtherGet_Process(inUIOSelector)
if lSafeOtherProcess is None:
@@ -1326,6 +1368,13 @@ def UIOSelector_Highlight(inUIOSelector):
#!!!!!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):
+ """
+ Set focus and highlight (draw outline) the element (in app) by the UIO selector.
+
+ :param inUIOSelector: UIOSelector - List of items, which contains condition attributes
+ :return:
+ """
+
#Check the bitness
lSafeOtherProcess = UIOSelector_SafeOtherGet_Process(inUIOSelector)
if lSafeOtherProcess is None:
diff --git a/Wiki/05.1.-Theory-&-practice.-Web-app-access-(Chrome,-Firefox,-Opera).md b/Wiki/05.1.-Theory-&-practice.-Web-app-access-(Chrome,-Firefox,-Opera).md
deleted file mode 100644
index 4f4c4892..00000000
--- a/Wiki/05.1.-Theory-&-practice.-Web-app-access-(Chrome,-Firefox,-Opera).md
+++ /dev/null
@@ -1,22 +0,0 @@
-# Content
-- About
-- How to use
-
-# About
-The OpenRPA support web app manipulation (by the Selenium lib).
-More docs about selenium you can find [here](https://selenium-python.readthedocs.io/)
-
-# How to use
-To start use selenium just import selenium modules in [the robot tool](https://gitlab.com/UnicodeLabs/OpenRPA/wikis/04.2.-Tool-Robot:-How-to-use). Here is the example of the usage.
-> from selenium import webdriver
-> from selenium.webdriver.common.keys import Keys
->
-> driver = webdriver.Chrome()
-> driver.get("http://www.python.org")
-> assert "Python" in driver.title
-> elem = driver.find_element_by_name("q")
-> elem.clear()
-> elem.send_keys("pycon")
-> elem.send_keys(Keys.RETURN)
-> assert "No results found." not in driver.page_source
-> driver.close()
diff --git a/Wiki/05.2.-Theory-&-practice.-Desktop-app-UI-access-(win32-and-UI-automation-dlls).md b/Wiki/05.2.-Theory-&-practice.-Desktop-app-UI-access-(win32-and-UI-automation-dlls).md
deleted file mode 100644
index 2588417f..00000000
--- a/Wiki/05.2.-Theory-&-practice.-Desktop-app-UI-access-(win32-and-UI-automation-dlls).md
+++ /dev/null
@@ -1,270 +0,0 @@
-Here you can find the docs and examples of the OpenRPA desktop (GUI) app access.
-
-# Definitions
-
-**UIO** - UI Object (class of pywinauto UI object) [pywinauto.base_wrapper]
-**UIOSelector** - List of dict (key attributes)
-**PWA** - PyWinAuto
-**PWASpecification** - List of dict (key attributes in pywinauto.find_window notation)
-**UIOTree** - Recursive Dict of Dict ... (UI Parent -> Child hierarchy)
-**UIOInfo** - Dict of UIO attributes
-**UIOActivity** - Activity of the UIO (UI object) from the Pywinauto module
-**UIOEI** - UI Object info object
-
-# What is UIO?
-UIO is a User Interface Object (pyOpenRPA terminology). For maximum compatibility, this instance is inherited from the object model developed in the [pywinauto library (click to get a list of available class functions)](https://pywinauto.readthedocs.io/en/latest/code/pywinauto.base_wrapper.html).
-
-This approach allows us to implement useful functionality that has already been successfully developed in other libraries, and Supplement it with the missing functionality. In our case, the missing functionality is the ability to dynamically access UIO objects using UIO selectors.
-
-# UIOSelector structure & example
-
-UIOSelector is the list of condition items for the UIO in GUI. Each item has condition attributes for detect applicable UIO. Here is the description of the available condition attributes in item.
-
-**Desciption**
- ```
-[
- {
- "depth_start" :: [int, start from 1] :: the depth index, where to start check the condition list (default 1),
- "depth_end" :: [int, start from 1] :: the depth index, where to stop check the condition list (default 1),
- "ctrl_index" || "index" :: [int, starts from 0] :: the index of the UIO in parent UIO child list,
- "title" :: [str] :: the condition for the UIO attribute *title*,
- "title_re" :: [str] :: regular expression (python ver) for the condition for the UIO attribute *title*,
- "rich_text" :: [str] :: the condition for the UIO attribute *rich_text*,
- "rich_text_re" :: [str] :: regular expression (python ver) for the condition for the UIO attribute *rich_text*,
- "class_name" :: [str] :: the condition for the UIO attribute *class_name*,
- "class_name_re" :: [str] :: regular expression (python ver) for the condition for the UIO attribute *class_name*,
- "friendly_class_name" :: [str] :: the condition for the UIO attribute *friendly_class_name*,
- "friendly_class_name_re" :: [str] :: regular expression (python ver) for the condition for the UIO attribute *friendly_class_name*,
- "control_type" :: [str] :: the condition for the UIO attribute *control_type*,
- "control_type_re" :: [str] :: regular expression (python ver) for the condition for the UIO attribute *control_type*,
- "is_enabled" :: [bool] :: the condition for the UIO attribute *is_enabled*. If UI object is enabled on GUI,
- "is_visible" :: [bool] :: the condition for the UIO attribute *is_visible*. If UI object is visible on GUI,
- "backend" :: [str, "win32" || "uia"] :: the method of UIO extraction (default "win32"). ATTENTION! Current option can be only for the first item of the UIO selector. For the next items this option will be implemented from the first item.
- },
- { ... specification next level UIO }
-]
- ```
-**The UIO selector example**
- ```
-[
- {"class_name":"CalcFrame", "backend":"win32"}, # 1-st level UIO specification
- {"title":"Hex", "depth_start":3, "depth_end": 3} # 3-rd level specification (because of attribute depth_start|depth_stop)
-]
- ```
-# The UIDesktop module (OpenRPA/Robot/UIDesktop.py)
-The UIDesktop is extension of the pywinauto module which provide access to the desktop apps by the **win32** and **ui automation** dll frameworks (big thx to the Microsoft :) ).
-
-## Functions
-*Naming convention: \\_\\_\*
-### List
-- [UIOSelector_Get_UIOList](#UIOSelector_Get_UIOList)
-- [UIOSelector_Get_UIO](#UIOSelector_Get_UIO)
-- [UIOSelector_Exist_Bool](#UIOSelector_Exist_Bool)
-- [UIOSelectorsSecs_WaitAppear_List](#UIOSelectorsSecs_WaitAppear_List)
-- [UIOSelectorsSecs_WaitDisappear_List](#UIOSelectorsSecs_WaitDisappear_List)
-- [UIOSelectorSecs_WaitAppear_Bool](#UIOSelectorSecs_WaitAppear_Bool)
-- [UIOSelectorSecs_WaitDisappear_Bool](#UIOSelectorSecs_WaitDisappear_Bool)
-- [UIOSelector_Get_BitnessInt](#UIOSelector_Get_BitnessInt)
-- [UIOSelector_SearchChildByMouse_UIO](#UIOSelector_SearchChildByMouse_UIO)
-- [UIOSelector_SearchChildByMouse_UIOTree](#UIOSelector_SearchChildByMouse_UIOTree)
-- [UIOSelector_Get_UIOInfoList](#UIOSelector_Get_UIOInfoList)
-- [UIOSelector_IsExist_Bool](#UIOSelector_IsExist_Bool)
-- [UIOSelector_WaitAppear_Dict](#UIOSelector_WaitAppear_Dict)
-- [UIOSelector_TryRestore_Dict](#UIOSelector_TryRestore_Dict)
-- [UIOSelector_Get_UIOActivityList](#UIOSelector_Get_UIOActivityList)
-- [UIOSelectorUIOActivity_Run_Dict](#UIOSelectorUIOActivity_Run_Dict)
-- [UIOSelector_Get_UIOInfo](#UIOSelector_Get_UIOInfo)
-- [UIOSelector_GetChildList_UIOList](#UIOSelector_GetChildList_UIOList)
-- [UIOSelector_SearchUIONormalize_UIOSelector](#UIOSelector_SearchUIONormalize_UIOSelector)
-- [UIOSelector_SearchProcessNormalize_UIOSelector](#UIOSelector_SearchProcessNormalize_UIOSelector)
-- [UIOSelector_FocusHighlight](#UIOSelector_FocusHighlight)
-- [UIOSelector_Highlight](#UIOSelector_Highlight)
-### Description
-**`UIOSelector_Get_UIOList (inUIOSelector,inParentUIO=None,inFlagRaiseException=True)`**
-
-___
-Get the list of the UIO items
-___
-**inUIOSelector** - UIOSelector - List of items, which contains condition attributes ([see UIOSelector Structure&Examples](#UIOSelector_Structure_Examples))
-**inParentUIO** - Technical argument. Applicable only if you has UIO object, which is parent for the futher search the child UIO.
-**inFlagRaiseException** - if True - raise exception if UIO hasn't been detected. False - don't raise the exception - return None.
-___
-
-**`UIOSelector_Get_UIO (inUIOSelector,inParentUIO=None,inFlagRaiseException=True)`**
-
-___
-Get first (if more than one UIO are applied) UIO (UI Object)
-___
-**inUIOSelector** - UIOSelector - List of items, which contains condition attributes ([see UIOSelector Structure&Examples](#UIOSelector_Structure_Examples))
-**inParentUIO** - Technical argument. Applicable only if you has UIO object, which is parent for the futher search the child UIO.
-**inFlagRaiseException** - if True - raise exception if UIO hasn't been detected. False - don't raise the exception - return None.
-___
-
-**`UIOSelector_Exist_Bool (inUIOSelector)`**
-
-___
-Check if UIO exist (Identified by the UIOSelector)
-___
-**inUIOSelector** - UIOSelector - List of items, which contains condition attributes ([see UIOSelector Structure&Examples](#UIOSelector_Structure_Examples))
-___
-
-**`UIOSelectorsSecs_WaitAppear_List (inUIOSelectorList,inWaitSecs,inFlagWaitAllInMoment=False)`**
-
-___
-Wait for UIO is appear (at least one of them or all at the same time). return: \[0,1,2\] - index of UIOSpecification, which is appear
-___
-**inUIOSelectorList** - !ATTENTION! Current argument is not the UIOSelector. This is the !list! of the many UIO selectors. ([see UIOSelector Structure&Examples](#UIOSelector_Structure_Examples))
-**inWaitSecs** - Time in seconds to wait the UIO will appear.
-**inFlagWaitAllInMoment** - True - wait when UIO of the all UIOSelectors will appear. False - at least one UIO of the UIOSelector list.
-___
-
-**`UIOSelectorsSecs_WaitDisappear_List (inUIOSelectorList,inWaitSecs,inFlagWaitAllInMoment=False)`**
-
-___
-Wait for UIO is Disappear (at least one of them or all at the same time). return: \[0,1,2\] - index of UIOSpecification, which is Disappear
-___
-**inUIOSelectorList** - !ATTENTION! Current argument is not the UIOSelector. This is the !list! of the many UIO selectors. ([see UIOSelector Structure&Examples](#UIOSelector_Structure_Examples))
-**inWaitSecs** - Time in seconds to wait the UIO will appear.
-**inFlagWaitAllInMoment** - True - wait when UIO of the all UIOSelectors will appear. False - at least one UIO of the UIOSelector list.
-___
-
-**`UIOSelectorSecs_WaitAppear_Bool (inUIOSelector,inWaitSecs)`**
-
-___
-Wait for UIO is appear (at least one of them or all at the same time). return: Bool - True - UIO is appear.
-___
-**inUIOSelector** - UIOSelector - List of items, which contains condition attributes ([see UIOSelector Structure&Examples](#UIOSelector_Structure_Examples))
-**inWaitSecs** - Time in seconds to wait the UIO will appear.
-___
-
-
-**`UIOSelectorSecs_WaitDisappear_Bool (inUIOSelector,inWaitSecs)`**
-
-___
-Wait for UIO is disappear (at least one of them or all at the same time) . return: Bool - True - UIO is Disappear.
-___
-**inUIOSelector** - UIOSelector - List of items, which contains condition attributes ([see UIOSelector Structure&Examples](#UIOSelector_Structure_Examples))
-**inWaitSecs** - Time in seconds to wait the UIO will appear.
-___
-
-**`UIOSelector_Get_BitnessInt (inUIOSelector)`**
-
-___
-Get process bitness (32 or 64). return None (if Process not found), int 32, or int 64
-___
-**inUIOSelector** - UIOSelector - List of items, which contains condition attributes ([see UIOSelector Structure&Examples](#UIOSelector_Structure_Examples))
-___
-
-
-**`UIOSelector_SearchChildByMouse_UIO(inUIOSelector)`**
-
-___
-Run the search UIO by mouse hover event. result = UIO element wrapper instance or None
-___
-**inUIOSelector** - UIOSelector - List of items, which contains condition attributes ([see UIOSelector Structure&Examples](#UIOSelector_Structure_Examples))
-___
-
-**`UIOSelector_SearchChildByMouse_UIOTree(inUIOSelector)`**
-
-___
-Run the search UIO by mouse hover event. result = UIO element wrapper instance or None
-___
-**inUIOSelector** - UIOSelector - List of items, which contains condition attributes ([see UIOSelector Structure&Examples](#UIOSelector_Structure_Examples))
-___
-
-**`UIOSelector_Get_UIOInfoList (inUIOSelector,inElement=None)`**
-
-___
-Get the UIOEI object.
-___
-**inUIOSelector** - UIOSelector - List of items, which contains condition attributes ([see UIOSelector Structure&Examples](#UIOSelector_Structure_Examples))
-___
-
-**`UIOSelector_IsExist_Bool (inUIOSelector)`**
-
-___
-Check is the UIO/UIO's by the UIOSelector exist
-___
-**inUIOSelector** - UIOSelector - List of items, which contains condition attributes ([see UIOSelector Structure&Examples](#UIOSelector_Structure_Examples))
-___
-
-**`UIOSelector_WaitAppear_Dict(inUIOSelector,inTimeout=60)`**
-
-___
-Wait for the UIO by the UIOSelector appear
-___
-**inUIOSelector** - UIOSelector - List of items, which contains condition attributes ([see UIOSelector Structure&Examples](#UIOSelector_Structure_Examples))
-___
-
-**`UIOSelector_TryRestore_Dict(inUIOSelector)`**
-
-___
-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)
-___
-**inUIOSelector** - UIOSelector - List of items, which contains condition attributes ([see UIOSelector Structure&Examples](#UIOSelector_Structure_Examples))
-___
-
-**`UIOSelector_Get_UIOActivityList (inUIOSelector)`**
-
-___
-Get the list of the UI object activities
-___
-**inUIOSelector** - UIOSelector - List of items, which contains condition attributes ([see UIOSelector Structure&Examples](#UIOSelector_Structure_Examples))
-___
-
-**`UIOSelectorUIOActivity_Run_Dict(inUIOSelector,inActionName,inArgumentList=\[\],inkwArgumentObject={})`**
-
-___
-Run the activity in UIO (UI Object)
-___
-**inUIOSelector** - UIOSelector - List of items, which contains condition attributes ([see UIOSelector Structure&Examples](#UIOSelector_Structure_Examples))
-**inActionName** - UIOActivity (name) from Pywinauto
-___
-
-**`UIOSelector_Get_UIOInfo(inUIOSelector)`**
-
-___
-Get the UIO dict of the attributes
-___
-**inUIOSelector** - UIOSelector - List of items, which contains condition attributes ([see UIOSelector Structure&Examples](#UIOSelector_Structure_Examples))
-___
-
-**`UIOSelector_GetChildList_UIOList(inUIOSelector=\[\],inBackend=mDefaultPywinautoBackend)`**
-
-___
-Get list of child UIO's by Parent UIOSelector
-___
-**inUIOSelector** - UIOSelector - List of items, which contains condition attributes ([see UIOSelector Structure&Examples](#UIOSelector_Structure_Examples))
-___
-
-**`UIOSelector_SearchUIONormalize_UIOSelector (inUIOSelector)`**
-
-___
-Technical def. Do UIOSelector normalization for the search processes.
-___
-**inUIOSelector** - UIOSelector - List of items, which contains condition attributes ([see UIOSelector Structure&Examples](#UIOSelector_Structure_Examples))
-___
-
-**`UIOSelector_SearchProcessNormalize_UIOSelector (inUIOSelector)`**
-
-___
-Technical def. Do UIOSelector normalization for the search processes.
-___
-**inUIOSelector** - UIOSelector - List of items, which contains condition attributes ([see UIOSelector Structure&Examples](#UIOSelector_Structure_Examples))
-___
-
-**`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 ([see UIOSelector Structure&Examples](#UIOSelector_Structure_Examples))
-___
-
-**`UIOSelector_Highlight(inUIOSelector)`**
-
-___
-Highlight (draw outline) the element (in app) by the UIO selector.
-___
-**inUIOSelector** - UIOSelector - List of items, which contains condition attributes ([see UIOSelector Structure&Examples](#UIOSelector_Structure_Examples))
-___
\ No newline at end of file
diff --git a/Wiki/05.3.-Theory-&-practice.-Keyboard-&-mouse-manipulation.md b/Wiki/05.3.-Theory-&-practice.-Keyboard-&-mouse-manipulation.md
deleted file mode 100644
index cc6998e9..00000000
--- a/Wiki/05.3.-Theory-&-practice.-Keyboard-&-mouse-manipulation.md
+++ /dev/null
@@ -1 +0,0 @@
-**How to automate Keyboard and Mouse device in PC**
\ No newline at end of file
diff --git a/Wiki/05.4.-Theory-&-practice.-Screen-capture-&-image-recognition.md b/Wiki/05.4.-Theory-&-practice.-Screen-capture-&-image-recognition.md
deleted file mode 100644
index d7bc5681..00000000
--- a/Wiki/05.4.-Theory-&-practice.-Screen-capture-&-image-recognition.md
+++ /dev/null
@@ -1,7 +0,0 @@
-**How to automate image recognition on PC**
-
-Here you can find any ways you need to use in your business case:
-* Find the exact match on the screen with the other image
-* Use text recognition module (OCR)
-* Use computer vision (CV) to identify the objects on screen/image/video
-* Use artificial intelligence (AI) to make custom identification/classification/text recognition
\ No newline at end of file
diff --git a/Wiki/ENG_Guide/html/03_Copyrights_Contacts.html b/Wiki/ENG_Guide/html/03_Copyrights_Contacts.html
index 68fc0a25..6e5045f0 100644
--- a/Wiki/ENG_Guide/html/03_Copyrights_Contacts.html
+++ b/Wiki/ENG_Guide/html/03_Copyrights_Contacts.html
@@ -193,8 +193,9 @@ If you need IT help feel free to contact me (prefer e-mail or skype).
diff --git a/Wiki/ENG_Guide/html/Robot/01_Robot.html b/Wiki/ENG_Guide/html/Robot/01_Robot.html
index bde6eb68..f811535c 100644
--- a/Wiki/ENG_Guide/html/Robot/01_Robot.html
+++ b/Wiki/ENG_Guide/html/Robot/01_Robot.html
@@ -260,6 +260,25 @@ Example: [{“title”:”notepad”},{“title”:”OK”}]
+
+-
+
pyOpenRPA.Robot.UIDesktop.
UIOSelectorUIOActivity_Run_Dict
(inUIOSelector, inActionName, inArgumentList=None, inkwArgumentObject=None)[source]
+Run the activity in UIO (UI Object)
+
+- Parameters
+
+inUIOSelector – UIOSelector - List of items, which contains condition attributes
+inActionName – UIOActivity (name) activity name string from Pywinauto
+inArgumentList –
+inkwArgumentObject –
+
+
+- Returns
+-
+
+
+
+
-
pyOpenRPA.Robot.UIDesktop.
UIOSelector_Exist_Bool
(inUIOSelector)[source]
@@ -274,6 +293,37 @@ Example: [{“title”:”notepad”},{“title”:”OK”}]
+
+-
+
pyOpenRPA.Robot.UIDesktop.
UIOSelector_FocusHighlight
(inUIOSelector)[source]
+Set focus and highlight (draw outline) the element (in app) by the UIO selector.
+
+- Parameters
+inUIOSelector – UIOSelector - List of items, which contains condition attributes
+
+- Returns
+-
+
+
+
+
+
+-
+
pyOpenRPA.Robot.UIDesktop.
UIOSelector_GetChildList_UIOList
(inUIOSelector=None, inBackend='win32')[source]
+Get list of child UIO’s by the parent UIOSelector
+
+- Parameters
+
+inUIOSelector – UIOSelector - List of items, which contains condition attributes
+inBackend – “win32” or “uia”
+
+
+- Returns
+-
+
+
+
+
-
pyOpenRPA.Robot.UIDesktop.
UIOSelector_Get_BitnessInt
(inSpecificationList)[source]
@@ -320,6 +370,34 @@ Example: [{“title”:”notepad”},{“title”:”OK”}]
+
+-
+
pyOpenRPA.Robot.UIDesktop.
UIOSelector_Get_UIOActivityList
(inUIOSelector)[source]
+Get the list of the UI object activities
+
+- Parameters
+inUIOSelector – UIOSelector - List of items, which contains condition attributes
+
+- Returns
+-
+
+
+
+
+
+-
+
pyOpenRPA.Robot.UIDesktop.
UIOSelector_Get_UIOInfo
(inUIOSelector)[source]
+Get the UIO dict of the attributes
+
+- Parameters
+inUIOSelector – UIOSelector - List of items, which contains condition attributes
+
+- Returns
+-
+
+
+
+
-
pyOpenRPA.Robot.UIDesktop.
UIOSelector_Get_UIOList
(inSpecificationList, inElement=None, inFlagRaiseException=True)[source]
@@ -338,6 +416,20 @@ Example: [{“title”:”notepad”},{“title”:”OK”}]
+
+-
+
pyOpenRPA.Robot.UIDesktop.
UIOSelector_Highlight
(inUIOSelector)[source]
+Highlight (draw outline) the element (in app) by the UIO selector.
+
+- Parameters
+inUIOSelector – UIOSelector - List of items, which contains condition attributes
+
+- Returns
+-
+
+
+
+
-
pyOpenRPA.Robot.UIDesktop.
UIOSelector_SafeOtherGet_Process
(inUIOSelector)[source]
@@ -382,6 +474,20 @@ Example: [{“title”:”notepad”},{“title”:”OK”}]
+
+-
+
pyOpenRPA.Robot.UIDesktop.
UIOSelector_TryRestore_Dict
(inSpecificationList)[source]
+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)
+
+- Parameters
+inSpecificationList – UIOSelector - List of items, which contains condition attributes
+
+- Returns
+-
+
+
+
+
diff --git a/Wiki/ENG_Guide/html/Robot/02_Defs.html b/Wiki/ENG_Guide/html/Robot/02_Defs.html
index 996400f2..2042b5bb 100644
--- a/Wiki/ENG_Guide/html/Robot/02_Defs.html
+++ b/Wiki/ENG_Guide/html/Robot/02_Defs.html
@@ -96,7 +96,13 @@
diff --git a/Wiki/ENG_Guide/html/_modules/pyOpenRPA/Robot/UIDesktop.html b/Wiki/ENG_Guide/html/_modules/pyOpenRPA/Robot/UIDesktop.html
index b1b90a2c..07331fb6 100644
--- a/Wiki/ENG_Guide/html/_modules/pyOpenRPA/Robot/UIDesktop.html
+++ b/Wiki/ENG_Guide/html/_modules/pyOpenRPA/Robot/UIDesktop.html
@@ -957,7 +957,13 @@
#(особенность uia backend - он не может прицепиться к окну, если оно свернуто)
#inSpecificationList - UIOSelector
#old name - PywinautoExtTryToRestore
-def UIOSelector_TryRestore_Dict(inSpecificationList):
+[docs]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)
+
+
:param inSpecificationList: UIOSelector - List of items, which contains condition attributes
+
:return:
+
"""
lResult={}
try:
#Подготовка взодного массива
@@ -969,13 +975,19 @@
lRPAApplication.top_window().restore()
except Exception:
True==False
-
return lResult
+
return lResult
####################################################################################################
#Get the list of the UI object activities
#!!!!!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):
+[docs]def UIOSelector_Get_UIOActivityList (inUIOSelector):
+
"""
+
Get the list of the UI object activities
+
+
:param inUIOSelector: UIOSelector - List of items, which contains condition attributes
+
:return:
+
"""
#Check the bitness
lSafeOtherProcess = UIOSelector_SafeOtherGet_Process(inUIOSelector)
if lSafeOtherProcess is None:
@@ -1005,7 +1017,7 @@
f"Exception was occured in child process (message): {lPIPEResponseDict['ErrorMessage']}, (traceback): {lPIPEResponseDict['ErrorTraceback']}")
else:
lResult = lPIPEResponseDict["Result"]
-
return lResult
+
return lResult
####################################################################################################
#Run the activity in UIO (UI Object)
@@ -1013,7 +1025,16 @@
#inUIOSelector
#inActionName - UIOActivity (name) from Pywinauto
#old name - ElementRunAction
-def UIOSelectorUIOActivity_Run_Dict(inUIOSelector, inActionName, inArgumentList=None, inkwArgumentObject=None):
+[docs]def UIOSelectorUIOActivity_Run_Dict(inUIOSelector, inActionName, inArgumentList=None, inkwArgumentObject=None):
+
"""
+
Run the activity in UIO (UI Object)
+
+
:param inUIOSelector: UIOSelector - List of items, which contains condition attributes
+
:param inActionName: UIOActivity (name) activity name string from Pywinauto
+
:param inArgumentList:
+
:param inkwArgumentObject:
+
:return:
+
"""
if inArgumentList is None: inArgumentList=[] # 2021 02 22 Minor fix by Ivan Maslov
if inkwArgumentObject is None: inkwArgumentObject={} # 2021 02 22 Minor fix by Ivan Maslov
lResult={}
@@ -1056,13 +1077,19 @@
raise Exception(f"Exception was occured in child process (message): {lPIPEResponseDict['ErrorMessage']}, (traceback): {lPIPEResponseDict['ErrorTraceback']}")
else:
lResult = lPIPEResponseDict["Result"]
-
return lResult
+
return lResult
####################################################################################################
#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):
+[docs]def UIOSelector_Get_UIOInfo(inUIOSelector):
+
"""
+
Get the UIO dict of the attributes
+
+
:param inUIOSelector: UIOSelector - List of items, which contains condition attributes
+
:return:
+
"""
#Check the bitness
lSafeOtherProcess = UIOSelector_SafeOtherGet_Process(inUIOSelector)
if lSafeOtherProcess is None:
@@ -1091,7 +1118,7 @@
f"Exception was occured in child process (message): {lPIPEResponseDict['ErrorMessage']}, (traceback): {lPIPEResponseDict['ErrorTraceback']}")
else:
lResultList = lPIPEResponseDict["Result"]
-
return lResultList
+
return lResultList
####################################################################################################
#Search child UIO by the: Parent UIO, X, Y
#inHierarchyList: [{"index":<>,"element":<>}] - technical argument for internal purpose
@@ -1187,7 +1214,16 @@
#!!!!!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):
+[docs]def UIOSelector_GetChildList_UIOList(inUIOSelector=None, inBackend=mDefaultPywinautoBackend):
+
"""
+
Get list of child UIO's by the parent UIOSelector
+
+
:param inUIOSelector: UIOSelector - List of items, which contains condition attributes
+
:param inBackend: "win32" or "uia"
+
:return:
+
"""
+
+
if inUIOSelector is None: inUIOSelector = []
#mRobotLogger.info(f"File!!!!")
#mRobotLogger.info(f"inSelector:{str(inUIOSelector)}, inBackend:{str(inBackend)}")
@@ -1235,7 +1271,7 @@
f"Exception was occured in child process (message): {lPIPEResponseDict['ErrorMessage']}, (traceback): {lPIPEResponseDict['ErrorTraceback']}")
else:
lResultList = lPIPEResponseDict["Result"]
-
return lResultList
+
return lResultList
####################################################################################################
#Подготовить массив для обращшения к поиску элемементов
@@ -1476,7 +1512,13 @@
#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):
+[docs]def UIOSelector_Highlight(inUIOSelector):
+
"""
+
Highlight (draw outline) the element (in app) by the UIO selector.
+
+
:param inUIOSelector: UIOSelector - List of items, which contains condition attributes
+
:return:
+
"""
#Check the bitness
lSafeOtherProcess = UIOSelector_SafeOtherGet_Process(inUIOSelector)
if lSafeOtherProcess is None:
@@ -1495,13 +1537,20 @@
f"Exception was occured in child process (message): {lPIPEResponseDict['ErrorMessage']}, (traceback): {lPIPEResponseDict['ErrorTraceback']}")
else:
return lPIPEResponseDict["Result"]
-
return True
+
return True
###################################################################################################
#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):
+[docs]def UIOSelector_FocusHighlight(inUIOSelector):
+
"""
+
Set focus and highlight (draw outline) the element (in app) by the UIO selector.
+
+
:param inUIOSelector: UIOSelector - List of items, which contains condition attributes
+
:return:
+
"""
+
#Check the bitness
lSafeOtherProcess = UIOSelector_SafeOtherGet_Process(inUIOSelector)
if lSafeOtherProcess is None:
@@ -1520,7 +1569,7 @@
f"Exception was occured in child process (message): {lPIPEResponseDict['ErrorMessage']}, (traceback): {lPIPEResponseDict['ErrorTraceback']}")
else:
return lPIPEResponseDict["Result"]
-
return True
+
return True
###################################################################################################
#old name - draw_outline_new
diff --git a/Wiki/ENG_Guide/html/_sources/03_Copyrights_Contacts.rst.txt b/Wiki/ENG_Guide/html/_sources/03_Copyrights_Contacts.rst.txt
index b9f01159..72920e6c 100644
--- a/Wiki/ENG_Guide/html/_sources/03_Copyrights_Contacts.rst.txt
+++ b/Wiki/ENG_Guide/html/_sources/03_Copyrights_Contacts.rst.txt
@@ -17,10 +17,12 @@ Ivan Maslov (founder)
- Skype: MegaFinder
-- Facebook: https://www.facebook.com/RU.Ivan.Maslov
+- Facebook: https://www.facebook.com/RU.IT4Business
- LinkedIn: https://www.linkedin.com/in/RU-IvanMaslov/
+- WhatsApp | Telegram: +7 906 722 39 25
+
**************************************************
3-rd party components license dependencies
diff --git a/Wiki/ENG_Guide/html/_sources/Robot/02_Defs.rst.txt b/Wiki/ENG_Guide/html/_sources/Robot/02_Defs.rst.txt
index 533d2155..54d02d33 100644
--- a/Wiki/ENG_Guide/html/_sources/Robot/02_Defs.rst.txt
+++ b/Wiki/ENG_Guide/html/_sources/Robot/02_Defs.rst.txt
@@ -2,9 +2,69 @@
2. Defs
####################################
-**************************************************
-pyOpenRPA.Robot.UIDesktop
-**************************************************
+****************************************************************************************************
+Desktop app UI access (win32 and UI automation dlls)
+****************************************************************************************************
+
+Definitions
+############################################
+
+- **UIO** - UI Object (class of pywinauto UI object) [pywinauto.base_wrapper]
+- **UIOSelector** - List of dict (key attributes)
+- **PWA** - PyWinAuto
+- **PWASpecification** - List of dict (key attributes in pywinauto.find_window notation)
+- **UIOTree** - Recursive Dict of Dict ... (UI Parent -> Child hierarchy)
+- **UIOInfo** - Dict of UIO attributes
+- **UIOActivity** - Activity of the UIO (UI object) from the Pywinauto module
+- **UIOEI** - UI Object info object
+
+
+What is UIO?
+############################################
+UIO is a User Interface Object (pyOpenRPA terminology). For maximum compatibility, this instance is inherited from the object model developed in the [pywinauto library (click to get a list of available class functions)](https://pywinauto.readthedocs.io/en/latest/code/pywinauto.base_wrapper.html).
+
+This approach allows us to implement useful functionality that has already been successfully developed in other libraries, and Supplement it with the missing functionality. In our case, the missing functionality is the ability to dynamically access UIO objects using UIO selectors.
+
+
+UIOSelector structure & example
+############################################
+
+UIOSelector is the list of condition items for the UIO in GUI. Each item has condition attributes for detect applicable UIO. Here is the description of the available condition attributes in item.
+
+**Desciption**
+ ```
+[
+ {
+ "depth_start" :: [int, start from 1] :: the depth index, where to start check the condition list (default 1),
+ "depth_end" :: [int, start from 1] :: the depth index, where to stop check the condition list (default 1),
+ "ctrl_index" || "index" :: [int, starts from 0] :: the index of the UIO in parent UIO child list,
+ "title" :: [str] :: the condition for the UIO attribute *title*,
+ "title_re" :: [str] :: regular expression (python ver) for the condition for the UIO attribute *title*,
+ "rich_text" :: [str] :: the condition for the UIO attribute *rich_text*,
+ "rich_text_re" :: [str] :: regular expression (python ver) for the condition for the UIO attribute *rich_text*,
+ "class_name" :: [str] :: the condition for the UIO attribute *class_name*,
+ "class_name_re" :: [str] :: regular expression (python ver) for the condition for the UIO attribute *class_name*,
+ "friendly_class_name" :: [str] :: the condition for the UIO attribute *friendly_class_name*,
+ "friendly_class_name_re" :: [str] :: regular expression (python ver) for the condition for the UIO attribute *friendly_class_name*,
+ "control_type" :: [str] :: the condition for the UIO attribute *control_type*,
+ "control_type_re" :: [str] :: regular expression (python ver) for the condition for the UIO attribute *control_type*,
+ "is_enabled" :: [bool] :: the condition for the UIO attribute *is_enabled*. If UI object is enabled on GUI,
+ "is_visible" :: [bool] :: the condition for the UIO attribute *is_visible*. If UI object is visible on GUI,
+ "backend" :: [str, "win32" || "uia"] :: the method of UIO extraction (default "win32"). ATTENTION! Current option can be only for the first item of the UIO selector. For the next items this option will be implemented from the first item.
+ },
+ { ... specification next level UIO }
+]
+ ```
+**The UIO selector example**
+ ```
+[
+ {"class_name":"CalcFrame", "backend":"win32"}, # 1-st level UIO specification
+ {"title":"Hex", "depth_start":3, "depth_end": 3} # 3-rd level specification (because of attribute depth_start|depth_stop)
+]
+ ```
+The UIDesktop module (OpenRPA/Robot/UIDesktop.py)
+########################################################################################
+The UIDesktop is extension of the pywinauto module which provide access to the desktop apps by the **win32** and **ui automation** dll frameworks (big thx to the Microsoft :) ).
.. code-block:: python
diff --git a/Wiki/ENG_Guide/html/_sources/Robot/03_HowToUse.rst.txt b/Wiki/ENG_Guide/html/_sources/Robot/03_HowToUse.rst.txt
index bc4ec41a..70ef27b1 100644
--- a/Wiki/ENG_Guide/html/_sources/Robot/03_HowToUse.rst.txt
+++ b/Wiki/ENG_Guide/html/_sources/Robot/03_HowToUse.rst.txt
@@ -2,21 +2,10 @@
3. How to use
####################################
-**************************************************
-Content
-**************************************************
-- `About <#about>`__
-- `How to use <#way-to-use>`__
-- `Create python script <#create-python-script>`__
-- `Execute python script <#execute-python-script>`__
-
-**************************************************
-About
-**************************************************
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 OpenRPA.
**************************************************
-Way to use
+How to execute RPA script
**************************************************
You can use the robot by the several ways:
@@ -39,9 +28,8 @@ In order to use robot just add Robot tool folder in work directory and add line
import cv2 # [Computer vision](https://gitlab.com/UnicodeLabs/OpenRPA/wikis/05.4.-Theory-&-practice:-Screen-capture-&-image-recognition)
import keyboard #[Keyboard manipulation](https://gitlab.com/UnicodeLabs/OpenRPA/wikis/05.3.-Theory-&-practice:-Keyboard-&-mouse-manipulation)
-**************************************************
Execute python script
-**************************************************
+############################################
The OpenRPA is fully portable solution. It contains own python enviroment both 32 and 64 bit versions. So, you can execute your python script in several ways:
- Execute in python x32 (\OpenRPA\Resources\WPy32-3720\python-3.7.2)
@@ -80,9 +68,9 @@ In order to simplify the execution process you can write several code lines in f
.\..\Resources\WPy32-3720\python-3.7.2\OpenRPAOrchestrator.exe orchestratorMain.py
pause >nul
-**************************************************
+
Use in studio script (n/a)
-**************************************************
+############################################
.. code-block:: python
import sys
@@ -92,12 +80,129 @@ Use in studio script (n/a)
import subprocess
import time
- #Highlight the UI Object in Folder explorer
- GUI.UIOSelector_FocusHighlight([{"class_name":"CabinetWClass","backend":"uia"},{"ctrl_index":2},{"ctrl_index":0},{"ctrl_index":2},{"ctrl_index":0}])
+ #Highlight the UI Object in Folder explorer
+ GUI.UIOSelector_FocusHighlight([{"class_name":"CabinetWClass","backend":"uia"},{"ctrl_index":2},{"ctrl_index":0},{"ctrl_index":2},{"ctrl_index":0}])
+
+ #Wait 2 seconds
+ time.sleep(3)
+
+ #Loop: get child element of UI List
+ for lItem in GUI.UIOSelector_Get_UIO([{"class_name":"CabinetWClass","backend":"uia"},{"ctrl_index":2},{"ctrl_index":0},{"ctrl_index":2},{"ctrl_index":0}]).children():
+ print(str(lItem))
+
+
+
+Here you can find the docs and examples of the OpenRPA desktop (GUI) app access.
+
+****************************************************************************************************
+Theory & practice. Desktop app UI access (win32 and UI automation dlls)
+****************************************************************************************************
+
+Definitions
+############################################
+
+**UIO** - UI Object (class of pywinauto UI object) [pywinauto.base_wrapper]
+**UIOSelector** - List of dict (key attributes)
+**PWA** - PyWinAuto
+**PWASpecification** - List of dict (key attributes in pywinauto.find_window notation)
+**UIOTree** - Recursive Dict of Dict ... (UI Parent -> Child hierarchy)
+**UIOInfo** - Dict of UIO attributes
+**UIOActivity** - Activity of the UIO (UI object) from the Pywinauto module
+**UIOEI** - UI Object info object
+
+
+What is UIO?
+############################################
+UIO is a User Interface Object (pyOpenRPA terminology). For maximum compatibility, this instance is inherited from the object model developed in the [pywinauto library (click to get a list of available class functions)](https://pywinauto.readthedocs.io/en/latest/code/pywinauto.base_wrapper.html).
+
+This approach allows us to implement useful functionality that has already been successfully developed in other libraries, and Supplement it with the missing functionality. In our case, the missing functionality is the ability to dynamically access UIO objects using UIO selectors.
+
+
+UIOSelector structure & example
+############################################
+
+UIOSelector is the list of condition items for the UIO in GUI. Each item has condition attributes for detect applicable UIO. Here is the description of the available condition attributes in item.
+
+**Desciption**
+ ```
+[
+ {
+ "depth_start" :: [int, start from 1] :: the depth index, where to start check the condition list (default 1),
+ "depth_end" :: [int, start from 1] :: the depth index, where to stop check the condition list (default 1),
+ "ctrl_index" || "index" :: [int, starts from 0] :: the index of the UIO in parent UIO child list,
+ "title" :: [str] :: the condition for the UIO attribute *title*,
+ "title_re" :: [str] :: regular expression (python ver) for the condition for the UIO attribute *title*,
+ "rich_text" :: [str] :: the condition for the UIO attribute *rich_text*,
+ "rich_text_re" :: [str] :: regular expression (python ver) for the condition for the UIO attribute *rich_text*,
+ "class_name" :: [str] :: the condition for the UIO attribute *class_name*,
+ "class_name_re" :: [str] :: regular expression (python ver) for the condition for the UIO attribute *class_name*,
+ "friendly_class_name" :: [str] :: the condition for the UIO attribute *friendly_class_name*,
+ "friendly_class_name_re" :: [str] :: regular expression (python ver) for the condition for the UIO attribute *friendly_class_name*,
+ "control_type" :: [str] :: the condition for the UIO attribute *control_type*,
+ "control_type_re" :: [str] :: regular expression (python ver) for the condition for the UIO attribute *control_type*,
+ "is_enabled" :: [bool] :: the condition for the UIO attribute *is_enabled*. If UI object is enabled on GUI,
+ "is_visible" :: [bool] :: the condition for the UIO attribute *is_visible*. If UI object is visible on GUI,
+ "backend" :: [str, "win32" || "uia"] :: the method of UIO extraction (default "win32"). ATTENTION! Current option can be only for the first item of the UIO selector. For the next items this option will be implemented from the first item.
+ },
+ { ... specification next level UIO }
+]
+ ```
+**The UIO selector example**
+ ```
+[
+ {"class_name":"CalcFrame", "backend":"win32"}, # 1-st level UIO specification
+ {"title":"Hex", "depth_start":3, "depth_end": 3} # 3-rd level specification (because of attribute depth_start|depth_stop)
+]
+ ```
+The UIDesktop module (OpenRPA/Robot/UIDesktop.py)
+########################################################################################
+The UIDesktop is extension of the pywinauto module which provide access to the desktop apps by the **win32** and **ui automation** dll frameworks (big thx to the Microsoft :) ).
+
+*Naming convention: \\_\\_\*
+
+
+****************************************************************************************************
+Theory & practice. WEB app UI access (selenium)
+****************************************************************************************************
+
+About
+###############################################
+The pyOpenRPA support web app manipulation (by the Selenium lib).
+More docs about selenium you can find here (https://selenium-python.readthedocs.io/)
+
+How to use
+###############################################
+To start use selenium just import selenium modules in the robot tool. Here is the example of the usage.
+
+.. code-block:: python
+
+ from selenium import webdriver
+ from selenium.webdriver.common.keys import Keys
+
+ driver = webdriver.Chrome()
+ driver.get("http://www.python.org")
+ assert "Python" in driver.title
+ elem = driver.find_element_by_name("q")
+ elem.clear()
+ elem.send_keys("pycon")
+ elem.send_keys(Keys.RETURN)
+ assert "No results found." not in driver.page_source
+ driver.close()
+
+****************************************************************************************************
+Theory & practice. Keyboard & mouse manipulation
+****************************************************************************************************
+
+
+****************************************************************************************************
+Theory & practice. Screen capture & image recognition
+****************************************************************************************************
- #Wait 2 seconds
- time.sleep(3)
+How to automate image recognition on PC
+###########################################
- #Loop: get child element of UI List
- for lItem in GUI.UIOSelector_Get_UIO([{"class_name":"CabinetWClass","backend":"uia"},{"ctrl_index":2},{"ctrl_index":0},{"ctrl_index":2},{"ctrl_index":0}]).children():
- print(str(lItem))
+Here you can find any ways you need to use in your business case:
+- Find the exact match on the screen with the other image
+- Use text recognition module (OCR)
+- Use computer vision (CV) to identify the objects on screen/image/video
+- Use artificial intelligence (AI) to make custom identification/classification/text recognition
\ No newline at end of file
diff --git a/Wiki/ENG_Guide/html/genindex.html b/Wiki/ENG_Guide/html/genindex.html
index 326a3c00..2121296e 100644
--- a/Wiki/ENG_Guide/html/genindex.html
+++ b/Wiki/ENG_Guide/html/genindex.html
@@ -353,22 +353,34 @@
UACUpdate() (in module pyOpenRPA.Orchestrator.__Orchestrator__)
UIOSelector_Exist_Bool() (in module pyOpenRPA.Robot.UIDesktop), [1]
+
+ UIOSelector_FocusHighlight() (in module pyOpenRPA.Robot.UIDesktop), [1]
UIOSelector_Get_BitnessInt() (in module pyOpenRPA.Robot.UIDesktop), [1]
UIOSelector_Get_BitnessStr() (in module pyOpenRPA.Robot.UIDesktop), [1]
UIOSelector_Get_UIO() (in module pyOpenRPA.Robot.UIDesktop), [1]
+
+ UIOSelector_Get_UIOActivityList() (in module pyOpenRPA.Robot.UIDesktop), [1]
+
+ UIOSelector_Get_UIOInfo() (in module pyOpenRPA.Robot.UIDesktop), [1]
+
+ UIOSelector_Get_UIOList() (in module pyOpenRPA.Robot.UIDesktop), [1]
- - UIOSelector_Get_UIOList() (in module pyOpenRPA.Robot.UIDesktop), [1]
+
- UIOSelector_GetChildList_UIOList() (in module pyOpenRPA.Robot.UIDesktop), [1]
+
+ - UIOSelector_Highlight() (in module pyOpenRPA.Robot.UIDesktop), [1]
- UIOSelector_SafeOtherGet_Process() (in module pyOpenRPA.Robot.UIDesktop), [1]
- UIOSelector_SearchChildByMouse_UIO() (in module pyOpenRPA.Robot.UIDesktop), [1]
- UIOSelector_SearchChildByMouse_UIOTree() (in module pyOpenRPA.Robot.UIDesktop), [1]
+
+ - UIOSelector_TryRestore_Dict() (in module pyOpenRPA.Robot.UIDesktop), [1]
- UIOSelectorSecs_WaitAppear_Bool() (in module pyOpenRPA.Robot.UIDesktop), [1]
@@ -377,6 +389,8 @@
- UIOSelectorsSecs_WaitAppear_List() (in module pyOpenRPA.Robot.UIDesktop), [1]
- UIOSelectorsSecs_WaitDisappear_List() (in module pyOpenRPA.Robot.UIDesktop), [1]
+
+ - UIOSelectorUIOActivity_Run_Dict() (in module pyOpenRPA.Robot.UIDesktop), [1]
|
diff --git a/Wiki/ENG_Guide/html/index.html b/Wiki/ENG_Guide/html/index.html
index 57270cd8..a747eba2 100644
--- a/Wiki/ENG_Guide/html/index.html
+++ b/Wiki/ENG_Guide/html/index.html
@@ -287,16 +287,16 @@ in QUEUE
2. Defs
3. How to use
4. Dependencies
diff --git a/Wiki/ENG_Guide/html/objects.inv b/Wiki/ENG_Guide/html/objects.inv
index 1e1d8600..3f44f165 100644
Binary files a/Wiki/ENG_Guide/html/objects.inv and b/Wiki/ENG_Guide/html/objects.inv differ
diff --git a/Wiki/ENG_Guide/html/searchindex.js b/Wiki/ENG_Guide/html/searchindex.js
index 02d8846a..6fff7139 100644
--- a/Wiki/ENG_Guide/html/searchindex.js
+++ b/Wiki/ENG_Guide/html/searchindex.js
@@ -1 +1 @@
-Search.setIndex({docnames:["01_HowToInstall","02_RoadMap","03_Copyrights_Contacts","Orchestrator/01_Orchestrator","Orchestrator/02_Defs","Orchestrator/03_gSettingsTemplate","Orchestrator/04_HowToStart","Robot/01_Robot","Robot/02_Defs","Robot/03_HowToUse","Robot/04_Dependencies","Studio/01_Studio","Studio/02_HowToUse","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","02_RoadMap.rst","03_Copyrights_Contacts.rst","Orchestrator\\01_Orchestrator.rst","Orchestrator\\02_Defs.rst","Orchestrator\\03_gSettingsTemplate.rst","Orchestrator\\04_HowToStart.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","index.rst"],objects:{"pyOpenRPA.Orchestrator":{__Orchestrator__:[4,0,0,"-"]},"pyOpenRPA.Orchestrator.__Orchestrator__":{AgentActivityItemAdd:[4,1,1,""],AgentOSCMD:[4,1,1,""],AgentOSFileBinaryDataBase64StrCreate:[4,1,1,""],AgentOSFileBinaryDataBytesCreate:[4,1,1,""],AgentOSFileTextDataStrCreate:[4,1,1,""],GSettingsAutocleaner:[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,""],OrchestratorRestart:[4,1,1,""],OrchestratorSessionSave:[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,""],UACKeyListCheck:[4,1,1,""],UACSuperTokenUpdate:[4,1,1,""],UACUpdate:[4,1,1,""],WebCPUpdate:[4,1,1,""],WebURLConnectDef:[4,1,1,""],WebURLConnectFile:[4,1,1,""],WebURLConnectFolder:[4,1,1,""],WebUserInfoGet:[4,1,1,""],WebUserIsSuperToken:[4,1,1,""],WebUserUACHierarchyGet:[4,1,1,""]},"pyOpenRPA.Robot":{UIDesktop:[8,0,0,"-"]},"pyOpenRPA.Robot.UIDesktop":{Get_OSBitnessInt:[8,1,1,""],PWASpecification_Get_PWAApplication:[8,1,1,""],PWASpecification_Get_UIO:[8,1,1,""],UIOSelectorSecs_WaitAppear_Bool:[8,1,1,""],UIOSelectorSecs_WaitDisappear_Bool:[8,1,1,""],UIOSelector_Exist_Bool:[8,1,1,""],UIOSelector_Get_BitnessInt:[8,1,1,""],UIOSelector_Get_BitnessStr:[8,1,1,""],UIOSelector_Get_UIO:[8,1,1,""],UIOSelector_Get_UIOList:[8,1,1,""],UIOSelector_SafeOtherGet_Process:[8,1,1,""],UIOSelector_SearchChildByMouse_UIO:[8,1,1,""],UIOSelector_SearchChildByMouse_UIOTree:[8,1,1,""],UIOSelectorsSecs_WaitAppear_List:[8,1,1,""],UIOSelectorsSecs_WaitDisappear_List:[8,1,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"]},objtypes:{"0":"py:module","1":"py:function"},terms:{"0643":6,"100":5,"1050":[4,5],"120":5,"127":4,"1680":[4,5],"1680x1050":[4,5],"1992":6,"2008":0,"2012":0,"2019":13,"2020":1,"2021":1,"222":[3,5],"2999226":0,"300":5,"3389":[4,5],"3600":5,"3720":[0,9],"3720python":9,"4100115560661986":13,"412":4,"600":5,"640x480":[4,5],"77767775":4,"77777sdfsdf77777dsfdfsf77777777":4,"8081":5,"\u0432":[7,8,13],"\u0432\u0445\u043e\u0434\u043d\u043e\u0439":[7,8],"\u0432\u044b\u043a\u0438\u043d\u0443\u0442\u044c":[7,8],"\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c":[7,8],"\u0434\u0435\u043c\u043e\u043d\u0430":5,"\u0434\u0435\u043c\u043e\u043d\u0443":5,"\u043a":[5,7,8],"\u043a\u043e\u043d\u043d\u0435\u043a\u0442":[7,8],"\u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443":5,"\u043b\u043e\u0433\u0433\u0435\u0440\u0430":5,"\u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f":5,"\u043c\u043e\u0436\u043d\u043e":5,"\u043d\u0435":[7,8],"\u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0438":[7,8],"\u043e\u0448\u0438\u0431\u043a\u0443":[7,8],"\u043f\u0435\u0440\u0435\u0439\u0442\u0438":13,"\u043f\u043e":5,"\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430":5,"\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f":5,"\u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c":[7,8],"\u043f\u043e\u0440\u0442":5,"\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0443":[7,8],"\u043f\u0443\u0441\u0442\u043e\u0433\u043e":[7,8],"\u0440\u0430\u0437\u0434\u0435\u043b":13,"\u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435":5,"\u0441\u0435\u0440\u0432\u0435\u0440\u0430":5,"\u0441\u0435\u0442\u0435\u0432\u043e\u0435":5,"\u0441\u043b\u0443\u0447\u0430\u0435":[7,8],"\u0441\u043e\u0437\u0434\u0430\u0442\u044c":5,"\u0441\u043f\u0438\u0441\u043a\u0430":[7,8],"\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f":[7,8],"\u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u043e\u0432":13,"\u0444\u0430\u0439\u043b":5,"\u0444\u043b\u0430\u0433":[7,8],"\u0447\u0442\u043e":[7,8],"\u044d\u043b\u0435\u043c\u0435\u043d\u0442":[7,8],"case":[3,4,5,7,8],"default":[4,5,12],"float":[3,5,7,8],"function":[4,5,8],"import":[3,4,5,6,8,9],"int":[3,4,7,8],"new":[1,3,4,5,6],"return":[4,5,7,8],"switch":10,"true":[4,5,6,7,8],"try":[4,6],"var":4,Abs:5,Are:0,For:[0,1,6,12],Has:5,NOT:4,RUS:[1,13],The:[0,3,9],USEFUL:4,USe:5,Use:[2,4,6,13],Will:[4,5],__agentdictitemcreate__:5,__create__:5,__main__:6,__name__:6,__orchestrator__:13,__uacclientadmincreate__:[5,6],_sessionlast_rdplist:4,a2o:4,abl:13,about:[3,4,5],abs:4,absolut:[2,4,5,6,13],abspath:6,access:[4,5,6,9,13],accessus:5,action:[1,9,13],activ:[3,4,5,7,8,12],activitydict:5,activityitem:4,activityitemdict:4,activitylist:5,activitylistappendprocessorqueuebool:5,activitylistexecut:4,activitylistexecutebool:5,activitytimelist:5,actual:[4,13],add:[4,5,6,9],addhandl:5,address:[4,5],admindict:[5,6],administr:4,after:[3,5,6,12],agent:13,agentactivityitemadd:4,agentdict:[4,5],agentkeydict:[5,6],agentkeystr:5,agentoscmd:4,agentosfilebinarydatabase64strcr:4,agentosfilebinarydatabytescr:4,agentosfiletextdatastrcr:4,algorithm:3,algorythm:[3,5,13],alia:[3,4,5],aliasdefdict:[3,4,5],all:[2,3,4,5,6,7,8,9,13],allow:[4,5,6,13],alreadi:4,amd64:[0,9],analyz:13,ani:[0,3,4,12,13],anoth:[4,12],apach:2,app:[4,7,8,9,13],appear:[7,8],append:[3,4,5,9],appli:[3,5],applic:[3,4,5,7,8],architectur:13,archiv:[0,5],arg:[3,4,5],argdict:[3,4,5],arggset:[3,4,5],arglist:[3,4,5],arglogg:[3,4,5],argument:[1,4,5],argvaluestr:4,asctim:5,associ:4,asweigart:2,async:3,asynchonu:3,attent:[3,4,6,12],attribut:[3,5,7,8],authent:5,authentif:4,authtoken:5,authtokensdict:5,auto:4,autoclean:[3,5],autom:[9,10,13],automat:[3,5,12],automationsearchmouseel:[7,8],avail:[4,5],b4ff:6,backend:[7,8,9],backward:[1,4],base64:4,base:[3,4,13],basic:[3,4,5,6],becaus:[3,4],been:[0,4,5,13],befor:5,beginwith:[4,5],below:[1,3,6,12],best:13,between:[3,4,5,6],big:13,binari:4,bit:[2,4,7,8,9],block:5,bool:[3,4,5],boppreh:2,both:[4,9],branch:[0,1],browser:[5,12],bsd:2,build:6,built:0,busi:[3,4,13],button:5,cabinetwclass:9,cach:5,call:[3,4,6,7,8],callabl:4,can:[3,4,5,7,8,9,13],cancel:[7,8],cant:3,captur:[9,13],central:3,chang:[5,13],check:[4,5,6,7,8,13],checkintervalsecfloat:5,checktasknam:5,child:9,children:9,choos:[7,8],chrome:[9,13],class_nam:9,claus:2,cleaner:4,clear:[4,5],client:[4,5],clientrequesthandl:5,clipboard:4,close:[4,5],cmd:[4,5,12,13],cmdinputbool:[5,6],code:[3,9,12],collect:5,com:[0,2,9,10],comma:3,command:[4,5,9],commerci:13,commun:4,compani:13,compat:[1,4],compex:3,complet:[0,5],complex:3,compon:13,comput:[9,13],concept:13,config:6,configur:[4,5,6,13],congratul:13,connect:[4,5],connectioncountint:5,connectionfirstqueueitemcountint:5,consist:3,consol:[5,9,12,13],consolid:[3,13],contact:13,contain:[4,5,9,12],content:[1,4,5],continu:4,control:[3,4,5,6],controlpanel:[5,6],controlpaneldict:5,controlpanelkeyallowedlist:5,controlpanelrefreshintervalsecfloat:5,cooki:5,copi:9,copyright:13,core:[3,13],cp_test:6,cp_versioncheck:6,cpdict:5,cpkei:5,cpkeydict:[5,6],cpkeystr:5,creat:[2,3,4,5,6,13],credenti:4,crosscheck:4,css:10,ctrl_index:9,current:[3,4,5,6],custom:3,cv2:9,daemon:4,dai:4,data:5,datasetlast:5,date:1,datetim:[5,6],dear:13,decentr:3,decid:13,def:[3,5,6,7,13],defaliastest:[3,5],defnamestr:5,defsettingsupdatepathlist:5,del:6,depend:13,deploi:4,deprec:5,depthbit:[4,5],descript:[5,8,13],desktop:[3,4,5,6,9,13],desktopus:4,destin:[4,7,8],detail:3,detect:[5,7,8],determin:4,dev:[1,4],develop:[4,13],dict:[4,5,7,8,13],dictionari:[3,5],differ:3,directori:[4,9],disappear:[7,8],disc:4,disconnect:[4,5],distribut:13,divis:13,dll:[9,13],document:[7,8],docutil:[4,8],doe:12,doen:4,domain:5,domainadstr:5,domainupperstr:4,don:4,dont:[4,5],doubl:12,download:0,dp0:9,drive:[4,5],dsd:[3,5],dump:5,dumploglist:5,dumploglistcountint:5,dumploglisthashstr:5,dumploglistrefreshintervalsecfloat:5,duplic:4,durat:5,each:4,edit:13,editor:12,element:[7,8,9],els:[4,5,6,7,8],empti:5,encod:4,end:3,eng:[1,13],enterpris:13,env:5,enviro:9,environ:4,equal:[4,5],equalcas:[4,5],everi:[4,5],everydai:4,exampl:[3,4,5,6,7,8],except:[0,4,6],exe:[0,4,5,8,9],execut:[3,4,5,11,13],executebool:5,exist:[4,5,7,8],expens:13,expir:4,explor:[9,12],extens:[4,9],extra:4,extract:13,facebook:2,fail:1,fals:[4,5,7,8],fast:13,featur:[3,4,5,13],feel:2,field:[4,5],file:[4,5],filehandl:5,filemanag:5,filemod:5,fileurl:5,fileurlfilepathdict:5,fileurlfilepathdict_help:5,fill:[4,5],find:[3,13],find_window:[7,8],firefox:[9,13],first:13,flag:[4,5],flagaccess:5,flagaccessdefrequestglobalauthent:5,flagcredentialsask:5,flagdonotexpir:5,flagforc:5,flagsessionisact:[4,5],flaguseallmonitor:[4,5],flexibl:3,folder:[4,6,9],follow:[0,12],forc:[4,5],forget:5,formatt:5,founder:13,framework:[10,13],free:[2,13],fridai:4,from:[0,3,4,5,6,7,8,13],full:[4,5],fulli:9,fullscreen:[4,5],fullscreenbool:5,fullscreenrdpsessionkeystr:5,functional:6,further:4,garbag:4,gener:[4,5,13],get:[4,5,7,8,9],get_osbitnessint:[7,8],getcontrol:[7,8],getlogg:5,git:[0,4,5],github:2,gitlab:[0,9],give:[4,5],given:4,global:[4,13],goe:3,good:3,graphic:[9,13],great:13,group:13,gset:[3,6,13],gsettingsautoclean:4,gsettingsdict:4,gsettingskeylistvalueappend:4,gsettingskeylistvalueget:4,gsettingskeylistvalueoperatorplu:4,gsettingskeylistvalueset:4,gui:[3,4,7,8,9,10,13],guid:[1,5],gurbag:5,handl:5,handlebar:10,handler:5,hard:[4,5],has:[0,3,4,9],have:4,height:[4,5],help:[0,2,4,13],here:13,hex:[4,5],hidden:4,hierarchi:[4,12],highlight:[9,12],hightlight:12,host:[4,5],hostnameupperstr:5,how:13,html:[4,8,12],htmlrenderdef:5,http:[0,2,3,4,5,8,9,10,13],human:4,identif:4,ignor:[4,5],ignorebool:5,imag:[9,13],imaslov:6,inactivityitemdict:4,inactivitylist:4,inadisdefaultbool:[4,6],inadloginstr:[4,6],inadstr:[4,6],inaliasstr:4,inarg1str:4,inargdict:4,inarggset:4,inarggsettingsstr:4,inarglist:4,inargloggerstr:4,inbreaktriggerprocesswoexelist:4,incloseforcebool:4,includ:[7,8],incmdstr:4,incontenttypestr:4,incontrolspecificationarrai:[7,8],incpkeystr:4,indef:4,indefnamestr:4,indepthbitint:4,index:[3,4,5,7,8],indict:5,indomainstr:4,inel:[7,8],inelementspecif:[7,8],inencodingstr:4,infiledatabase64str:4,infiledatabyt:4,infiledatastr:4,infilepathstr:4,inflagforceclosebool:4,inflaggetabspathbool:4,inflagraiseexcept:[7,8],inflagwaitallinmo:[7,8],info:[4,5,6],infolderpathstr:4,inform:[3,4],infrastructur:13,ingset:[3,4,6],ingsettingsclientdict:5,inhashkeystr:5,inheightpxint:4,inhostfilepathstr:4,inhostnamestr:4,inhoststr:[4,5],inhtmlrenderdef:4,init:[3,4,5,6],initdatetim:5,initi:4,injsinitgeneratordef:4,injsongeneratordef:4,inkeylist:4,inkeystr:5,inlogg:[4,5],inloginstr:[4,5],inmatchtypestr:4,inmethodstr:4,inmodestr:[3,4,5,6],inmodulepathstr:4,inpasswordstr:[4,5],inpathstr:4,inportint:4,inportstr:[4,5],inprocessnamewexestr:4,inprocessnamewoexelist:4,inprocessnamewoexestr:4,input:5,inrdpfilepathstr:4,inrdpsessionkeystr:[4,5],inrdptemplatedict:4,inrequest:4,inrolehierarchyalloweddict:[4,6],inrolekeylist:4,inrowcountint:5,inrunasyncbool:4,insert:6,inshareddrivelist:4,inspecificationlist:[7,8],inspecificationlistlist:[7,8],instal:13,instanc:[3,4,7,8],instopprocessnamewoexestr:4,insupertokenstr:[4,6],interact:[3,4],interest:4,interfac:[3,9,13],internet:12,interpret:3,interv:[4,5],intervalsecfloat:5,intimehhmmstr:4,inuioselector:[7,8],inurllist:[4,6],inurlstr:4,inusebothmonitorbool:4,inusernamestr:4,inuserstr:4,invalu:4,inwaitsec:[7,8],inweekdaylist:4,inwidthpxint:4,islistenbool:5,isresponsiblebool:4,it4busi:2,item:[3,4],iter:5,ivan:13,ivanmaslov:2,join:6,jsinitgeneratordef:5,json:[3,4,5],jsongeneratordef:5,jsrender:10,jsview:10,just:9,kb2999226:0,keep:3,kei:4,keyboard:[2,9,10,13],keystr:5,kill:4,killer:13,know:3,known:13,kwarg:3,lactivityitem:4,laliasstr:4,last:5,launch:4,left:3,len:5,let:13,level:[9,13],levelnam:5,licens:13,lifetim:5,lifetimerequestsecfloat:5,lifetimesecfloat:5,light:3,like:[3,13],line:9,link:[3,4,5,13],linkedin:2,list:[3,4,5,7,8,9],listen:4,listenport:5,listenport_:5,listenurllist:5,listread:5,litem:9,load:5,local:[4,5],localhost:5,locat:4,log:[4,5,6,13],logger:[4,5,6],loggerdumploghandleradd:5,loggerhandlerdumploglist:5,login:[4,5,6],logoff:[4,5],logviewerbool:[5,6],lol:12,look:[3,4,5,12,13],lookmachinescreenshot:5,loop:9,low:9,lowercas:5,lprocessisstartedbool:4,lprocesslist:4,lpyopenrpasourcefolderpathstr:6,lrdpitemdict:4,lrdptemplatedict:4,lresult:5,lresultdict:[4,5],luacclientdict:6,lxml:10,machin:[0,4,5,6,13],machina:5,mail:2,main:[3,4,5,6,9],maintain:13,makedir:5,manag:4,mani:[3,7,8],manipul:[4,9,13],march:1,maslov:13,master:0,matchtyp:5,max:5,mayb:4,mechan:3,mega:3,megafind:2,memori:4,merg:4,messag:5,method:5,methodmatchurl:5,methodmatchurlbeforelist:5,mhandlerdumploglist:5,microsoft:0,mit:[2,13],mmstr:5,mode:12,model:2,modul:[3,4,5,6,9],moduletocal:4,mondai:4,monei:13,monitor:4,more:3,mous:[9,13],mrobotlogg:5,mrobotloggerfh:5,mrobotloggerformatt:5,must:5,name:[3,4,5,6,7,8],namewoexestr:4,namewoexeupperstr:4,nbsp:9,need:[0,2,3,4,5,13],nest:4,net:[4,8],never:4,newkeydict:4,newkeylist:4,newvalu:4,non:13,none:[3,4,5,7,8],notat:[7,8],notepad:[4,5,7,8],noth:4,nothingbool:5,now:[4,5],nul:9,object:[3,4,5,7,8,9,13],occupi:4,octet:4,off:5,old:[4,5,6,7,8],one:[5,6],onli:[0,1,4,5,7,8],onlin:13,open:[12,13],opencv:[0,10,13],openrpa52zzz:6,openrpa:[0,5,9],openrpa_32:12,openrpa_64:12,openrpaorchestr:9,openrparesourceswpy32:9,openrparesourceswpy64:9,openrparobotdaemon:5,opensourc:13,oper:[0,4,6],opera:[9,13],option:5,orc:5,orchestr:[5,6],orchestratormain:9,orchestratorrestart:4,orchestratorsessionsav:4,orchestratorstart:5,order:[3,9,12],org:2,oscmd:4,oscredentialsverifi:4,other:[7,8,13],out:4,output:5,outstr:4,over:2,overwrit:5,own:[3,9,13],packag:[0,6,7],page:[4,5],pai:[3,6],panel:[4,5,6,12],paramet:[3,4,5,7,8],parent:12,parti:13,pass:[4,5],password:[4,5],path:[4,5,6,9],paus:9,pdb:5,per:6,perfom:[9,13],perform:13,period:5,phone:3,pid:4,pil:10,pipupgrad:5,pixel:[4,5],plan:[1,4],platform:13,pleas:13,plu:4,port:[4,5],portabl:[0,9],possibl:13,post:[4,5],postfix:4,power:13,practic:[9,13],prefer:2,previou:4,print:[6,9],process:[3,5,7,8,9,11,13],processdetaillist:4,processisstart:4,processlistget:4,processnam:4,processor:[5,13],processoractivityitemappend:4,processoractivityitemcr:4,processoraliasdefcr:4,processoraliasdefupd:4,processordict:5,processstart:[4,5],processstartifturnedoff:5,processstop:[4,5],processwoexelist:4,processwoexeupperlist:4,product:9,program:[4,5],progress:1,project:[3,13],properti:13,protocol:3,psutil:[6,10],pull:5,purpos:[1,2],pwaspecification_get_pwaappl:[7,8],pwaspecification_get_uio:[7,8],pyautogui:[2,9,10,13],pymupdf:10,pyopenrpa:[0,1,2,3,5,6,11],pyopenrpadict:[5,6],pyrobot_cp:6,python:[0,3,5,7,10,12,13],pythonstart:4,pywin32:[2,10],pywinauto:[2,7,8,10],queue:[1,3,4,5,13],queuelist:5,r01:5,r01_integrationorderout:5,r01_orchestratortorobot:5,rais:4,rdp:[3,4,5],rdpactiv:5,rdpconfigurationdict:5,rdpkei:4,rdpkeydict:[5,6],rdpkeystr:5,rdplist:[4,5],rdpsession:13,rdpsessioncmdrun:4,rdpsessionconnect:[4,5],rdpsessiondisconnect:[4,5],rdpsessiondublicatesresolv:4,rdpsessionfilereciev:5,rdpsessionfilesend:5,rdpsessionfilestoredreciev:4,rdpsessionfilestoredsend:4,rdpsessionkei:5,rdpsessionkeystr:5,rdpsessionlogoff:[4,5],rdpsessionmonitorstop:4,rdpsessionprocessstart:5,rdpsessionprocessstartifnotrun:4,rdpsessionprocessstop:4,rdpsessionreconnect:[4,5],rdpsessionresponsibilitycheck:4,rdptemplatecr:4,read:5,readi:0,reciev:[4,5],recognit:[9,13],reconnect:4,reconnectbool:5,reestr_otgruzok:5,refactor:1,refer:13,refresh:5,refreshsecond:5,regener:4,rel:[4,5,6],reliabl:13,rememb:5,remot:[4,5,13],render:12,renderfunct:5,renderrobotr01:5,report:5,reqir:3,request:[4,5,10],requesttimeoutsecfloat:5,requir:[4,13],resolut:[4,5],resourc:[0,9],respons:[4,5],responsecontenttyp:5,responsedefrequestglob:5,responsefilepath:5,responsefolderpath:5,responsibilitycheckintervalsec:5,restart:[4,5],restartorchestr:5,restartorchestratorbool:[5,6],restartorchestratorgitpullbool:[5,6],restartpcbool:[5,6],restrict:13,restructuredtext:[4,8],result:[4,5,7,8],returnbool:5,roadmap:13,robot:[3,4,5,6,9],robot_r01:5,robot_r01_help:5,robotlist:5,robotrdpact:[4,5],rolehierarchyalloweddict:5,root:[4,5],row:5,rpa:[4,5,13],rpatestdirtest:4,rst:[4,8],ruledomainuserdict:5,rulemethodmatchurlbeforelist:5,run:[0,4,5,6,13],russia:[2,13],russian:13,safe:[4,7,8],same:[7,8],save:4,schedul:[3,13],scheduleractivitytimeaddweekli:4,schedulerdict:5,scopesrcul:5,screen:[4,5,9,13],screenshot:[0,5,13],screenshotviewerbool:[5,6],script:[3,13],search:[4,13],sec:5,second:[4,5,7,8,9],section:4,see:[0,1,4,5,6,7,8],select:[7,8],selector:[7,8,12,13],selenium:[2,9,10,13],semant:[2,10],send:[4,5],sent:4,sequenc:3,server:[0,3,5,12],serverdict:5,serverset:5,sesion:[4,5],session:[4,5],sessionguidstr:5,sessionhex:[4,5],sessionisignoredbool:[4,5],sessioniswindowexistbool:[4,5],sessioniswindowresponsiblebool:[4,5],set:[4,5,6,7,8,13],set_trac:5,setformatt:5,setlevel:5,settingstempl:[3,6],settingsupd:6,setup:5,sever:[3,9,13],share:4,shareddrivelist:[4,5],shell:[4,13],should:5,show:5,side:[4,5],signal:4,simplifi:9,sinc:13,singl:3,singleton:4,skype:2,sleep:9,socket:3,solut:[0,9,13],some:[3,4,5,13],sort:4,sourc:[3,4,6,7,8,13],sourceforg:[4,8],space:3,special:5,sphinx:3,standart:5,start:[0,4,5,12,13],statu:4,stdout:[5,6],stop:[4,13],storag:[5,13],store:5,str:[3,4,5,7,8,9],stream:4,streamhandl:5,strftime:5,string:4,struct:5,structur:[3,4,5],studio:[3,11,12],subprocess:9,success:4,successfulli:[0,4,13],sundai:4,supertoken:[4,6],superus:6,supetoken:4,support:[0,3,6,12,13],symbol:3,sync:3,sys:[5,6,9],system:13,tablet:3,technic:[3,5],technicalsessionguidcach:5,templat:[6,13],tesseract:10,test2:5,test:[4,5,6],testcontrolpanelkei:5,testdef:4,testdefalia:4,testdir:4,testdirtest:4,testrdp:5,text:[4,12],than:3,thank:[2,13],theori:[9,13],thi:[4,5,13],thought:4,thread:[3,5],threadidint:5,thursdai:4,time:[4,5,9,13],timehh:5,titl:[7,8],todo:4,token:4,tokendatetim:5,too:[4,5],tool:[3,9,12],top:[7,8],tor:13,track:4,transmiss:4,transmit:[3,4],tree:13,trigger:[4,5],ttt:[3,5],turn:5,turpl:3,tutori:1,txt:4,type:[4,5,6],uac:13,uackeylistcheck:4,uacsupertokenupd:[4,6],uacupd:[4,6],uia:[7,8,9],uidesktop:[1,7,13],uio:[7,8,12,13],uioselector:[7,8],uioselector_exist_bool:[7,8],uioselector_focushighlight:9,uioselector_get_bitnessint:[7,8],uioselector_get_bitnessstr:[7,8],uioselector_get_uio:[7,8,9],uioselector_get_uiolist:[7,8],uioselector_safeotherget_process:[7,8],uioselector_searchchildbymouse_uio:[7,8],uioselector_searchchildbymouse_uiotre:[7,8],uioselectorsecs_waitappear_bool:[7,8],uioselectorsecs_waitdisappear_bool:[7,8],uioselectorssecs_waitappear_list:[7,8],uioselectorssecs_waitdisappear_list:[7,8],under:13,unicodelab:[0,2,9],univers:3,unzip:0,updat:[4,5],upper:5,url:[4,5],url_:5,urllist:5,usag:4,use:[0,3,4,5,13],used:4,user:[3,4,5,6,13],user_99:4,user_pass_her:4,useradstr:5,usernam:[4,5],usernameupperstr:4,userupperstr:5,using:[4,13],utf:4,util:5,valu:[4,7,8],variant:4,verifi:4,version:[1,6,9,12],versioncheck:6,versionstr:5,viewer:[5,13],virtual:5,vision:[9,13],vista:0,visual:13,vms:4,wai:[4,6,13],wait:[7,8,9,12],want:[3,5,12,13],warn:6,web:[3,5,9,13],webcpupd:4,weburlconnectdef:4,weburlconnectfil:4,weburlconnectfold:4,webuserinfoget:4,webuserissupertoken:4,webuseruachierarchyget:4,wednesdai:4,week:4,weekdai:[4,5],weekdaylist:5,well:13,were:13,when:[3,4,5,6,12],where:[4,12],which:[3,4,5,7,8,13],who:5,why:3,width:[4,5],wiki:9,win32:[7,8,9,13],win32api:10,win:4,window:[0,4,5,10],winpython:2,without:[0,4,5,13],wmi:10,work:[4,5,9],workingdirectorypathstr:5,world:[2,13],wpy32:[0,9],wpy64:[0,9],wrapper:[7,8],write:[3,9,13],www:[2,10],x32:[0,10,12],x64:[0,10,12],xlsx:5,yandex:13,you:[0,2,3,4,5,7,8,9,13],your:[0,9],zip:0},titles:["1. How to install","2. Roadmap","3. Copyrights & Contacts","1. Description","2. Defs","3. gSettings Template","4. How to start process","1. Description","2. Defs","3. How to use","4. Dependencies","1. Description","2. How to use","Welcome to pyOpenRPA\u2019s wiki"],titleterms:{The:[12,13],Use:9,__orchestrator__:4,about:[9,13],action:12,agent:4,architectur:3,button:12,check:0,choos:12,click:12,cmd:9,compon:[2,3],concept:3,configur:3,contact:2,content:[9,12,13],copyright:2,creat:9,ctrl:12,def:[4,8],depend:[2,10],descript:[3,7,11,12],dict:3,donat:13,execut:9,expand:12,extract:12,file:9,founder:2,from:9,global:3,group:4,gset:[4,5],gui:12,guid:13,has:13,hold:12,hover:12,how:[0,3,6,9,12],instal:0,interest:12,ivan:2,kei:12,licens:2,list:12,main:13,maslov:2,mous:12,object:12,orchestr:[3,4,13],parti:2,process:[4,6],processor:[3,4],progress:13,properti:12,pyopenrpa:[4,7,8,13],python:[4,9],rdpsession:4,refer:[3,4,8],requir:0,result:12,roadmap:1,robot:[7,8,13],run:12,schedul:4,screenshot:12,script:9,search:12,second:12,select:12,set:3,shown:12,start:6,structur:13,studio:[9,13],system:0,templat:5,tool:13,tree:12,turn:12,tutori:13,uac:4,uidesktop:8,use:[9,12],viewer:12,wai:9,web:4,welcom:13,wiki:13,x32:9,x64:9,you:12}})
\ No newline at end of file
+Search.setIndex({docnames:["01_HowToInstall","02_RoadMap","03_Copyrights_Contacts","Orchestrator/01_Orchestrator","Orchestrator/02_Defs","Orchestrator/03_gSettingsTemplate","Orchestrator/04_HowToStart","Robot/01_Robot","Robot/02_Defs","Robot/03_HowToUse","Robot/04_Dependencies","Studio/01_Studio","Studio/02_HowToUse","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","02_RoadMap.rst","03_Copyrights_Contacts.rst","Orchestrator\\01_Orchestrator.rst","Orchestrator\\02_Defs.rst","Orchestrator\\03_gSettingsTemplate.rst","Orchestrator\\04_HowToStart.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","index.rst"],objects:{"pyOpenRPA.Orchestrator":{__Orchestrator__:[4,0,0,"-"]},"pyOpenRPA.Orchestrator.__Orchestrator__":{AgentActivityItemAdd:[4,1,1,""],AgentOSCMD:[4,1,1,""],AgentOSFileBinaryDataBase64StrCreate:[4,1,1,""],AgentOSFileBinaryDataBytesCreate:[4,1,1,""],AgentOSFileTextDataStrCreate:[4,1,1,""],GSettingsAutocleaner:[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,""],OrchestratorRestart:[4,1,1,""],OrchestratorSessionSave:[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,""],UACKeyListCheck:[4,1,1,""],UACSuperTokenUpdate:[4,1,1,""],UACUpdate:[4,1,1,""],WebCPUpdate:[4,1,1,""],WebURLConnectDef:[4,1,1,""],WebURLConnectFile:[4,1,1,""],WebURLConnectFolder:[4,1,1,""],WebUserInfoGet:[4,1,1,""],WebUserIsSuperToken:[4,1,1,""],WebUserUACHierarchyGet:[4,1,1,""]},"pyOpenRPA.Robot":{UIDesktop:[8,0,0,"-"]},"pyOpenRPA.Robot.UIDesktop":{Get_OSBitnessInt:[8,1,1,""],PWASpecification_Get_PWAApplication:[8,1,1,""],PWASpecification_Get_UIO:[8,1,1,""],UIOSelectorSecs_WaitAppear_Bool:[8,1,1,""],UIOSelectorSecs_WaitDisappear_Bool:[8,1,1,""],UIOSelectorUIOActivity_Run_Dict:[8,1,1,""],UIOSelector_Exist_Bool:[8,1,1,""],UIOSelector_FocusHighlight:[8,1,1,""],UIOSelector_GetChildList_UIOList:[8,1,1,""],UIOSelector_Get_BitnessInt:[8,1,1,""],UIOSelector_Get_BitnessStr:[8,1,1,""],UIOSelector_Get_UIO:[8,1,1,""],UIOSelector_Get_UIOActivityList:[8,1,1,""],UIOSelector_Get_UIOInfo:[8,1,1,""],UIOSelector_Get_UIOList:[8,1,1,""],UIOSelector_Highlight:[8,1,1,""],UIOSelector_SafeOtherGet_Process:[8,1,1,""],UIOSelector_SearchChildByMouse_UIO:[8,1,1,""],UIOSelector_SearchChildByMouse_UIOTree:[8,1,1,""],UIOSelector_TryRestore_Dict:[8,1,1,""],UIOSelectorsSecs_WaitAppear_List:[8,1,1,""],UIOSelectorsSecs_WaitDisappear_List:[8,1,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"]},objtypes:{"0":"py:module","1":"py:function"},terms:{"0643":6,"100":5,"1050":[4,5],"120":5,"127":4,"1680":[4,5],"1680x1050":[4,5],"1992":6,"2008":0,"2012":0,"2019":13,"2020":1,"2021":1,"222":[3,5],"2999226":0,"300":5,"3389":[4,5],"3600":5,"3720":[0,9],"3720python":9,"4100115560661986":13,"412":4,"600":5,"640x480":[4,5],"722":2,"77767775":4,"77777sdfsdf77777dsfdfsf77777777":4,"8081":5,"906":2,"\u0432":[7,8,13],"\u0432\u0445\u043e\u0434\u043d\u043e\u0439":[7,8],"\u0432\u044b\u043a\u0438\u043d\u0443\u0442\u044c":[7,8],"\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c":[7,8],"\u0434\u0435\u043c\u043e\u043d\u0430":5,"\u0434\u0435\u043c\u043e\u043d\u0443":5,"\u043a":[5,7,8],"\u043a\u043e\u043d\u043d\u0435\u043a\u0442":[7,8],"\u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443":5,"\u043b\u043e\u0433\u0433\u0435\u0440\u0430":5,"\u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f":5,"\u043c\u043e\u0436\u043d\u043e":5,"\u043d\u0435":[7,8],"\u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0438":[7,8],"\u043e\u0448\u0438\u0431\u043a\u0443":[7,8],"\u043f\u0435\u0440\u0435\u0439\u0442\u0438":13,"\u043f\u043e":5,"\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430":5,"\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f":5,"\u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c":[7,8],"\u043f\u043e\u0440\u0442":5,"\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0443":[7,8],"\u043f\u0443\u0441\u0442\u043e\u0433\u043e":[7,8],"\u0440\u0430\u0437\u0434\u0435\u043b":13,"\u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435":5,"\u0441\u0435\u0440\u0432\u0435\u0440\u0430":5,"\u0441\u0435\u0442\u0435\u0432\u043e\u0435":5,"\u0441\u043b\u0443\u0447\u0430\u0435":[7,8],"\u0441\u043e\u0437\u0434\u0430\u0442\u044c":5,"\u0441\u043f\u0438\u0441\u043a\u0430":[7,8],"\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f":[7,8],"\u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u043e\u0432":13,"\u0444\u0430\u0439\u043b":5,"\u0444\u043b\u0430\u0433":[7,8],"\u0447\u0442\u043e":[7,8],"\u044d\u043b\u0435\u043c\u0435\u043d\u0442":[7,8],"case":[3,4,5,7,8,9],"class":[8,9],"default":[4,5,8,9,12],"float":[3,5,7,8],"function":[4,5,8,9],"import":[3,4,5,6,7,8,9],"int":[3,4,7,8,9],"new":[1,3,4,5,6],"return":[4,5,7,8,9],"switch":10,"true":[4,5,6,7,8],"try":[4,6,7,8],"var":4,Abs:5,Are:0,For:[0,1,6,8,9,12],Has:5,NOT:4,RUS:[1,13],The:[0,3],USEFUL:4,USe:5,Use:[2,4,6],Will:[4,5],__agentdictitemcreate__:5,__create__:5,__main__:6,__name__:6,__orchestrator__:13,__uacclientadmincreate__:[5,6],_sessionlast_rdplist:4,a2o:4,abil:[8,9],abl:13,about:[3,4,5],abs:4,absolut:[2,4,5,6,13],abspath:6,access:[4,5,6,13],accessus:5,action:[1,9,13],activ:[3,4,5,7,8,9,12],activitydict:5,activityitem:4,activityitemdict:4,activitylist:5,activitylistappendprocessorqueuebool:5,activitylistexecut:4,activitylistexecutebool:5,activitynam:9,activitytimelist:5,actual:[4,13],add:[4,5,6,9],addhandl:5,address:[4,5],admindict:[5,6],administr:4,after:[3,5,6,7,8,12],agent:13,agentactivityitemadd:4,agentdict:[4,5],agentkeydict:[5,6],agentkeystr:5,agentoscmd:4,agentosfilebinarydatabase64strcr:4,agentosfilebinarydatabytescr:4,agentosfiletextdatastrcr:4,algorithm:3,algorythm:[3,5,13],alia:[3,4,5],aliasdefdict:[3,4,5],all:[2,3,4,5,6,7,8,9,13],allow:[4,5,6,8,9,13],alreadi:[4,8,9],amd64:[0,9],analyz:13,ani:[0,3,4,9,12,13],anoth:[4,12],apach:2,app:[4,7,13],appear:[7,8],append:[3,4,5,9],appli:[3,5],applic:[3,4,5,7,8,9],approach:[8,9],architectur:13,archiv:[0,5],arg:[3,4,5],argdict:[3,4,5],arggset:[3,4,5],arglist:[3,4,5],arglogg:[3,4,5],argument:[1,4,5],argvaluestr:4,artifici:9,asctim:5,assert:9,associ:4,asweigart:2,async:3,asynchonu:3,attent:[3,4,6,8,9,12],attribut:[3,5,7,8,9],authent:5,authentif:4,authtoken:5,authtokensdict:5,auto:4,autoclean:[3,5],autom:[10,13],automat:[3,5,12],automationsearchmouseel:[7,8],avail:[4,5,8,9],b4ff:6,backend:[7,8,9],backward:[1,4],base64:4,base:[3,4,13],base_wrapp:[8,9],basic:[3,4,5,6],becaus:[3,4,8,9],been:[0,4,5,8,9,13],befor:5,beginwith:[4,5],below:[1,3,6,12],best:13,between:[3,4,5,6],big:[8,9,13],binari:4,bit:[2,4,7,8,9],block:5,bool:[3,4,5,8,9],boppreh:2,both:[4,9],branch:[0,1],browser:[5,12],bsd:2,build:6,built:0,busi:[3,4,9,13],button:5,cabinetwclass:9,cach:5,calcfram:[8,9],call:[3,4,6,7,8],callabl:4,can:[3,4,5,7,8,9,13],cancel:[7,8],cant:3,captur:13,central:3,chang:[5,13],check:[4,5,6,7,8,9,13],checkintervalsecfloat:5,checktasknam:5,child:[7,8,9],children:9,choos:[7,8],chrome:[9,13],class_nam:[8,9],class_name_r:[8,9],classif:9,claus:2,cleaner:4,clear:[4,5,9],click:[8,9],client:[4,5],clientrequesthandl:5,clipboard:4,close:[4,5,9],cmd:[4,5,12,13],cmdinputbool:[5,6],code:[3,8,9,12],collect:5,com:[0,2,9,10],comma:3,command:[4,5,9],commerci:13,common:9,commun:4,compani:13,compat:[1,4,8,9],compex:3,complet:[0,5],complex:3,compon:13,comput:[9,13],concept:13,condit:[7,8,9],config:6,configur:[4,5,6,13],congratul:13,connect:[4,5],connectioncountint:5,connectionfirstqueueitemcountint:5,consist:3,consol:[5,9,12,13],consolid:[3,13],contact:13,contain:[4,5,7,8,9,12],content:[1,4,5],continu:4,control:[3,4,5,6],control_typ:[8,9],control_type_r:[8,9],controlpanel:[5,6],controlpaneldict:5,controlpanelkeyallowedlist:5,controlpanelrefreshintervalsecfloat:5,convent:9,cooki:5,copi:9,copyright:13,core:[3,13],cp_test:6,cp_versioncheck:6,cpdict:5,cpkei:5,cpkeydict:[5,6],cpkeystr:5,creat:[2,3,4,5,6,13],credenti:4,crosscheck:4,css:10,ctrl_index:[8,9],current:[3,4,5,6,8,9],custom:[3,9],cv2:9,daemon:4,dai:4,data:5,datasetlast:5,date:1,datetim:[5,6],dear:13,decentr:3,decid:13,def:[3,5,6,7,13],defaliastest:[3,5],defnamestr:5,defsettingsupdatepathlist:5,del:6,depend:13,deploi:4,deprec:5,depth:[8,9],depth_end:[8,9],depth_start:[8,9],depth_stop:[8,9],depthbit:[4,5],descipt:[8,9],descript:[5,8,9,13],desktop:[3,4,5,6,13],desktopus:4,destin:[4,7,8],detail:3,detect:[5,7,8,9],determin:4,dev:[1,4],develop:[4,8,9,13],dict:[4,5,7,8,9,13],dictionari:[3,5],differ:3,directori:[4,9],disappear:[7,8],disc:4,disconnect:[4,5],distribut:13,divis:13,dll:13,doc:9,document:[7,8],docutil:[4,8],doe:12,doen:4,doesn:[7,8],domain:5,domainadstr:5,domainupperstr:4,don:4,dont:[4,5],doubl:12,download:0,dp0:9,draw:[7,8],drive:[4,5],driver:9,dsd:[3,5],dump:5,dumploglist:5,dumploglistcountint:5,dumploglisthashstr:5,dumploglistrefreshintervalsecfloat:5,duplic:4,durat:5,dynam:[8,9],each:[4,8,9],edit:13,editor:12,elem:9,element:[7,8,9],els:[4,5,6,7,8],empti:5,enabl:[8,9],encod:4,end:3,eng:[1,13],enterpris:13,env:5,enviro:9,environ:4,equal:[4,5],equalcas:[4,5],everi:[4,5],everydai:4,exact:9,exampl:[3,4,5,6,7],except:[0,4,6],exe:[0,4,5,8,9],execut:[3,4,5,11,13],executebool:5,exist:[4,5,7,8,9],expens:13,expir:4,explor:[9,12],express:[8,9],extens:[4,8,9],extra:4,extract:[8,9,13],facebook:2,fail:1,fals:[4,5,7,8],fast:13,featur:[3,4,5,13],feel:2,field:[4,5],file:[4,5],filehandl:5,filemanag:5,filemod:5,fileurl:5,fileurlfilepathdict:5,fileurlfilepathdict_help:5,fill:[4,5],find:[3,9,13],find_element_by_nam:9,find_window:[7,8,9],firefox:[9,13],first:[8,9,13],flag:[4,5],flagaccess:5,flagaccessdefrequestglobalauthent:5,flagcredentialsask:5,flagdonotexpir:5,flagforc:5,flagsessionisact:[4,5],flaguseallmonitor:[4,5],flexibl:3,focu:[7,8],folder:[4,6,9],follow:[0,12],forc:[4,5],forget:5,formatt:5,found:9,founder:13,framework:[7,8,9,10,13],free:[2,13],fridai:4,friendly_class_nam:[8,9],friendly_class_name_r:[8,9],from:[0,3,4,5,6,7,8,13],full:[4,5],fulli:9,fullscreen:[4,5],fullscreenbool:5,fullscreenrdpsessionkeystr:5,functional:6,further:4,garbag:4,gener:[4,5,13],get:[4,5,7,8,9],get_osbitnessint:[7,8],getcontrol:[7,8],getlogg:5,git:[0,4,5],github:2,gitlab:[0,9],give:[4,5],given:4,global:[4,13],goe:3,good:3,graphic:[9,13],great:13,group:13,gset:[3,6,13],gsettingsautoclean:4,gsettingsdict:4,gsettingskeylistvalueappend:4,gsettingskeylistvalueget:4,gsettingskeylistvalueoperatorplu:4,gsettingskeylistvalueset:4,gui:[3,4,7,8,9,10,13],guid:[1,5],gurbag:5,handl:5,handlebar:10,handler:5,hard:[4,5],has:[0,3,4,8,9],have:4,height:[4,5],help:[0,2,4,13],here:[8,9,13],hex:[4,5,8,9],hidden:4,hierarchi:[4,8,9,12],highlight:[7,8,9,12],hightlight:12,host:[4,5],hostnameupperstr:5,how:13,html:[4,8,9,12],htmlrenderdef:5,http:[0,2,3,4,5,8,9,10,13],human:4,identif:[4,9],identifi:9,ignor:[4,5],ignorebool:5,imag:13,imaslov:6,implement:[8,9],inactionnam:[7,8],inactivityitemdict:4,inactivitylist:4,inadisdefaultbool:[4,6],inadloginstr:[4,6],inadstr:[4,6],inaliasstr:4,inarg1str:4,inargdict:4,inarggset:4,inarggsettingsstr:4,inarglist:4,inargloggerstr:4,inargu:9,inargumentlist:[7,8],inbackend:[7,8],inbreaktriggerprocesswoexelist:4,incloseforcebool:4,includ:[7,8],incmdstr:4,incontenttypestr:4,incontrolspecificationarrai:[7,8],incpkeystr:4,indef:4,indefnamestr:4,indepthbitint:4,index:[3,4,5,7,8,9],indict:5,indomainstr:4,inel:[7,8],inelementspecif:[7,8],inencodingstr:4,infiledatabase64str:4,infiledatabyt:4,infiledatastr:4,infilepathstr:4,inflagforceclosebool:4,inflaggetabspathbool:4,inflagraiseexcept:[7,8],inflagwaitallinmo:[7,8],info:[4,5,6,8,9],infolderpathstr:4,inform:[3,4],infrastructur:13,ingset:[3,4,6],ingsettingsclientdict:5,inhashkeystr:5,inheightpxint:4,inherit:[8,9],inhostfilepathstr:4,inhostnamestr:4,inhoststr:[4,5],inhtmlrenderdef:4,init:[3,4,5,6],initdatetim:5,initi:4,injsinitgeneratordef:4,injsongeneratordef:4,inkeylist:4,inkeystr:5,inkwargumentobject:[7,8],inlogg:[4,5],inloginstr:[4,5],inmatchtypestr:4,inmethodstr:4,inmodestr:[3,4,5,6],inmodulepathstr:4,inpasswordstr:[4,5],inpathstr:4,inportint:4,inportstr:[4,5],inprocessnamewexestr:4,inprocessnamewoexelist:4,inprocessnamewoexestr:4,input:5,inrdpfilepathstr:4,inrdpsessionkeystr:[4,5],inrdptemplatedict:4,inrequest:4,inrolehierarchyalloweddict:[4,6],inrolekeylist:4,inrowcountint:5,inrunasyncbool:4,insert:6,inshareddrivelist:4,inspecificationlist:[7,8],inspecificationlistlist:[7,8],instal:13,instanc:[3,4,7,8,9],instopprocessnamewoexestr:4,insupertokenstr:[4,6],intellig:9,interact:[3,4],interest:4,interfac:[3,8,9,13],internet:12,interpret:3,interv:[4,5],intervalsecfloat:5,intimehhmmstr:4,inuioselector:[7,8],inurllist:[4,6],inurlstr:4,inusebothmonitorbool:4,inusernamestr:4,inuserstr:4,invalu:4,inwaitsec:[7,8],inweekdaylist:4,inwidthpxint:4,is_en:[8,9],is_vis:[8,9],islistenbool:5,isresponsiblebool:4,it4busi:2,item:[3,4,7,8,9],iter:5,ivan:13,ivanmaslov:2,join:6,jsinitgeneratordef:5,json:[3,4,5],jsongeneratordef:5,jsrender:10,jsview:10,just:9,kb2999226:0,keep:3,kei:[4,8,9],keyboard:[2,10,13],keystr:5,kill:4,killer:13,know:3,known:13,kwarg:3,lactivityitem:4,laliasstr:4,last:5,latest:[8,9],launch:4,left:3,len:5,let:13,level:[8,9,13],levelnam:5,lib:9,librari:[8,9],licens:13,lifetim:5,lifetimerequestsecfloat:5,lifetimesecfloat:5,light:3,like:[3,13],line:9,link:[3,4,5,13],linkedin:2,list:[3,4,5,7,8,9],listen:4,listenport:5,listenport_:5,listenurllist:5,listread:5,litem:9,load:5,local:[4,5],localhost:5,locat:4,log:[4,5,6,13],logger:[4,5,6],loggerdumploghandleradd:5,loggerhandlerdumploglist:5,login:[4,5,6],logoff:[4,5],logviewerbool:[5,6],lol:12,look:[3,4,5,12,13],lookmachinescreenshot:5,loop:9,low:9,lowercas:5,lprocessisstartedbool:4,lprocesslist:4,lpyopenrpasourcefolderpathstr:6,lrdpitemdict:4,lrdptemplatedict:4,lresult:5,lresultdict:[4,5],luacclientdict:6,lxml:10,machin:[0,4,5,6,13],machina:5,mail:2,main:[3,4,5,6,9],maintain:13,make:9,makedir:5,manag:4,mani:[3,7,8],manipul:[4,13],march:1,maslov:13,master:0,match:9,matchtyp:5,max:5,maxim:[7,8],maximum:[8,9],mayb:4,mechan:3,mega:3,megafind:2,memori:4,merg:4,messag:5,method:[5,8,9],methodmatchurl:5,methodmatchurlbeforelist:5,mhandlerdumploglist:5,microsoft:[0,8,9],minim:[7,8],miss:[8,9],mit:[2,13],mmstr:5,mode:12,model:[2,8,9],modul:[3,4,5,6],moduletocal:4,mondai:4,monei:13,monitor:4,more:[3,9],mous:13,mrobotlogg:5,mrobotloggerfh:5,mrobotloggerformatt:5,must:5,name:[3,4,5,6,7,8,9],namewoexestr:4,namewoexeupperstr:4,need:[0,2,3,4,5,7,8,9,13],nest:4,net:[4,8],never:4,newkeydict:4,newkeylist:4,newvalu:4,next:[8,9],non:13,none:[3,4,5,7,8],notat:[7,8,9],notepad:[4,5,7,8],noth:4,nothingbool:5,now:[4,5],nul:9,object:[3,4,5,7,8,9,13],occupi:4,ocr:9,octet:4,off:5,old:[4,5,6,7,8],one:[5,6],onli:[0,1,4,5,7,8,9],onlin:13,open:[12,13],opencv:[0,10,13],openrpa52zzz:6,openrpa:[0,5],openrpa_32:12,openrpa_64:12,openrpaorchestr:9,openrparesourceswpy32:9,openrparesourceswpy64:9,openrparobotdaemon:5,opensourc:13,oper:[0,4,6],opera:[9,13],option:[5,8,9],orc:5,orchestr:[5,6],orchestratormain:9,orchestratorrestart:4,orchestratorsessionsav:4,orchestratorstart:5,order:[3,9,12],org:[2,9],oscmd:4,oscredentialsverifi:4,other:[7,8,9,13],our:[8,9],out:4,outargu:9,outlin:[7,8],output:5,outstr:4,over:2,overwrit:5,own:[3,9,13],packag:[0,6,7],page:[4,5],page_sourc:9,pai:[3,6],panel:[4,5,6,12],paramet:[3,4,5,7,8],parent:[7,8,9,12],parti:13,pass:[4,5],password:[4,5],path:[4,5,6,9],paus:9,pdb:5,per:6,perfom:[9,13],perform:13,period:5,phone:3,pid:4,pil:10,pipupgrad:5,pixel:[4,5],plan:[1,4],platform:13,pleas:13,plu:4,port:[4,5],portabl:[0,9],possibl:13,post:[4,5],postfix:4,power:13,practic:13,prefer:2,previou:4,print:[6,9],process:[3,5,7,8,9,11,13],processdetaillist:4,processisstart:4,processlistget:4,processnam:4,processor:[5,13],processoractivityitemappend:4,processoractivityitemcr:4,processoraliasdefcr:4,processoraliasdefupd:4,processordict:5,processstart:[4,5],processstartifturnedoff:5,processstop:[4,5],processwoexelist:4,processwoexeupperlist:4,product:9,program:[4,5],progress:1,project:[3,13],properti:13,protocol:3,provid:[8,9],psutil:[6,10],pull:5,purpos:[1,2],pwa:[8,9],pwaspecif:[8,9],pwaspecification_get_pwaappl:[7,8],pwaspecification_get_uio:[7,8],pyautogui:[2,9,10,13],pycon:9,pymupdf:10,pyopenrpa:[0,1,2,3,5,6,8,9,11],pyopenrpadict:[5,6],pyrobot_cp:6,python:[0,3,5,7,8,10,12,13],pythonstart:4,pywin32:[2,10],pywinauto:[2,7,8,9,10],queue:[1,3,4,5,13],queuelist:5,r01:5,r01_integrationorderout:5,r01_orchestratortorobot:5,rais:4,rdp:[3,4,5],rdpactiv:5,rdpconfigurationdict:5,rdpkei:4,rdpkeydict:[5,6],rdpkeystr:5,rdplist:[4,5],rdpsession:13,rdpsessioncmdrun:4,rdpsessionconnect:[4,5],rdpsessiondisconnect:[4,5],rdpsessiondublicatesresolv:4,rdpsessionfilereciev:5,rdpsessionfilesend:5,rdpsessionfilestoredreciev:4,rdpsessionfilestoredsend:4,rdpsessionkei:5,rdpsessionkeystr:5,rdpsessionlogoff:[4,5],rdpsessionmonitorstop:4,rdpsessionprocessstart:5,rdpsessionprocessstartifnotrun:4,rdpsessionprocessstop:4,rdpsessionreconnect:[4,5],rdpsessionresponsibilitycheck:4,rdptemplatecr:4,read:5,readi:0,readthedoc:[8,9],reciev:[4,5],recognit:13,reconnect:4,reconnectbool:5,recurs:[8,9],reestr_otgruzok:5,refactor:1,refer:13,refresh:5,refreshsecond:5,regener:4,regular:[8,9],rel:[4,5,6],reliabl:13,rememb:5,remot:[4,5,13],render:12,renderfunct:5,renderrobotr01:5,report:5,reqir:3,request:[4,5,10],requesttimeoutsecfloat:5,requir:[4,13],resolut:[4,5],resourc:[0,9],respons:[4,5],responsecontenttyp:5,responsedefrequestglob:5,responsefilepath:5,responsefolderpath:5,responsibilitycheckintervalsec:5,restart:[4,5],restartorchestr:5,restartorchestratorbool:[5,6],restartorchestratorgitpullbool:[5,6],restartpcbool:[5,6],restor:[7,8],restrict:13,restructuredtext:[4,8],result:[4,5,7,8,9],returnbool:5,rich_text:[8,9],rich_text_r:[8,9],roadmap:13,robot:[3,4,5,6],robot_r01:5,robot_r01_help:5,robotlist:5,robotrdpact:[4,5],rolehierarchyalloweddict:5,root:[4,5],row:5,rpa:[4,5,13],rpatestdirtest:4,rst:[4,8],ruledomainuserdict:5,rulemethodmatchurlbeforelist:5,run:[0,4,5,6,7,8,13],russia:[2,13],russian:13,safe:[4,7,8],same:[7,8],save:4,schedul:[3,13],scheduleractivitytimeaddweekli:4,schedulerdict:5,scopesrcul:5,screen:[4,5,13],screenshot:[0,5,13],screenshotviewerbool:[5,6],script:[3,13],search:[4,13],sec:5,second:[4,5,7,8,9],section:4,see:[0,1,4,5,6,7,8],select:[7,8],selector:[7,8,9,12,13],selenium:[2,10,13],semant:[2,10],send:[4,5],send_kei:9,sent:4,sequenc:3,server:[0,3,5,12],serverdict:5,serverset:5,sesion:[4,5],session:[4,5],sessionguidstr:5,sessionhex:[4,5],sessionisignoredbool:[4,5],sessioniswindowexistbool:[4,5],sessioniswindowresponsiblebool:[4,5],set:[4,5,6,7,8,13],set_trac:5,setformatt:5,setlevel:5,settingstempl:[3,6],settingsupd:6,setup:5,sever:[3,9,13],share:4,shareddrivelist:[4,5],shell:[4,13],should:5,show:5,side:[4,5],signal:4,simplifi:9,sinc:13,singl:3,singleton:4,skype:2,sleep:9,socket:3,solut:[0,9,13],some:[3,4,5,13],sort:4,sourc:[3,4,6,7,8,13],sourceforg:[4,8],space:3,special:5,specif:[8,9],sphinx:3,standart:5,start:[0,4,5,8,9,12,13],statu:4,stdout:[5,6],stop:[4,8,9,13],storag:[5,13],store:5,str:[3,4,5,7,8,9],stream:4,streamhandl:5,strftime:5,string:[4,7,8],struct:5,structur:[3,4,5],studio:[3,11,12],subprocess:9,success:4,successfulli:[0,4,8,9,13],sundai:4,supertoken:[4,6],superus:6,supetoken:4,supplement:[8,9],support:[0,3,6,9,12,13],symbol:3,sync:3,sys:[5,6,9],system:13,tablet:3,technic:[3,5],technicalsessionguidcach:5,telegram:2,templat:[6,13],terminolog:[8,9],tesseract:10,test2:5,test:[4,5,6],testcontrolpanelkei:5,testdef:4,testdefalia:4,testdir:4,testdirtest:4,testrdp:5,text:[4,9,12],than:3,thank:[2,13],theori:13,thi:[4,5,8,9,13],thought:4,thread:[3,5],threadidint:5,thursdai:4,thx:[8,9],time:[4,5,9,13],timehh:5,titl:[7,8,9],title_r:[8,9],todo:4,token:4,tokendatetim:5,too:[4,5],tool:[3,9,12],top:[7,8],tor:13,track:4,transmiss:4,transmit:[3,4],tree:13,trigger:[4,5],ttt:[3,5],turn:5,turpl:3,tutori:1,txt:4,type:[4,5,6],uac:13,uackeylistcheck:4,uacsupertokenupd:[4,6],uacupd:[4,6],uia:[7,8,9],uidesktop:[1,7],uio:[7,12,13],uioactiv:[7,8,9],uioei:[8,9],uioinfo:[8,9],uioselector:7,uioselector_exist_bool:[7,8],uioselector_focushighlight:[7,8,9],uioselector_get_bitnessint:[7,8],uioselector_get_bitnessstr:[7,8],uioselector_get_uio:[7,8,9],uioselector_get_uioactivitylist:[7,8],uioselector_get_uioinfo:[7,8],uioselector_get_uiolist:[7,8],uioselector_getchildlist_uiolist:[7,8],uioselector_highlight:[7,8],uioselector_safeotherget_process:[7,8],uioselector_searchchildbymouse_uio:[7,8],uioselector_searchchildbymouse_uiotre:[7,8],uioselector_structure_exampl:[8,9],uioselector_tryrestore_dict:[7,8],uioselectorsecs_waitappear_bool:[7,8],uioselectorsecs_waitdisappear_bool:[7,8],uioselectorssecs_waitappear_list:[7,8],uioselectorssecs_waitdisappear_list:[7,8],uioselectoruioactivity_run_dict:[7,8],uiotre:[8,9],under:13,unicodelab:[0,2,9],univers:3,unzip:0,updat:[4,5],upper:5,url:[4,5],url_:5,urllist:5,usag:[4,9],use:[0,3,4,5,7,8,13],used:4,useful:[8,9],user:[3,4,5,6,8,9,13],user_99:4,user_pass_her:4,useradstr:5,usernam:[4,5],usernameupperstr:4,userupperstr:5,using:[4,8,9,13],utf:4,util:5,valu:[4,7,8],variant:4,ver:[8,9],verifi:4,version:[1,6,9,12],versioncheck:6,versionstr:5,video:9,viewer:[5,13],virtual:5,visibl:[8,9],vision:[9,13],vista:0,visual:13,vms:4,wai:[4,6,9,13],wait:[7,8,9,12],want:[3,5,12,13],warn:6,web:[3,5,13],webcpupd:4,webdriv:9,weburlconnectdef:4,weburlconnectfil:4,weburlconnectfold:4,webuserinfoget:4,webuserissupertoken:4,webuseruachierarchyget:4,wednesdai:4,week:4,weekdai:[4,5],weekdaylist:5,well:13,were:13,whatsapp:2,when:[3,4,5,6,7,8,12],where:[4,8,9,12],which:[3,4,5,7,8,9,13],who:5,why:3,width:[4,5],wiki:9,win32:[7,13],win32api:10,win:4,window:[0,4,5,7,8,10],winpython:2,without:[0,4,5,13],wmi:10,work:[4,5,9],workingdirectorypathstr:5,world:[2,13],wpy32:[0,9],wpy64:[0,9],wrapper:[7,8],write:[3,9,13],www:[2,9,10],x32:[0,10,12],x64:[0,10,12],xlsx:5,yandex:13,you:[0,2,3,4,5,7,8,9,13],your:[0,9],zip:0},titles:["1. How to install","2. Roadmap","3. Copyrights & Contacts","1. Description","2. Defs","3. gSettings Template","4. How to start process","1. Description","2. Defs","3. How to use","4. Dependencies","1. Description","2. How to use","Welcome to pyOpenRPA\u2019s wiki"],titleterms:{The:[8,9,12,13],Use:9,__orchestrator__:4,about:[9,13],access:[8,9],action:12,agent:4,app:[8,9],architectur:3,autom:[8,9],button:12,captur:9,check:0,choos:12,click:12,cmd:9,compon:[2,3],concept:3,configur:3,contact:2,content:[12,13],copyright:2,creat:9,ctrl:12,def:[4,8],definit:[8,9],depend:[2,10],descript:[3,7,11,12],desktop:[8,9],dict:3,dll:[8,9],donat:13,exampl:[8,9],execut:9,expand:12,extract:12,file:9,founder:2,from:9,global:3,group:4,gset:[4,5],gui:12,guid:13,has:13,hold:12,hover:12,how:[0,3,6,9,12],imag:9,instal:0,interest:12,ivan:2,kei:12,keyboard:9,licens:2,list:12,main:13,manipul:9,maslov:2,modul:[8,9],mous:[9,12],object:12,openrpa:[8,9],orchestr:[3,4,13],parti:2,practic:9,process:[4,6],processor:[3,4],progress:13,properti:12,pyopenrpa:[4,7,13],python:[4,9],rdpsession:4,recognit:9,refer:[3,4,8],requir:0,result:12,roadmap:1,robot:[7,8,9,13],rpa:9,run:12,schedul:4,screen:9,screenshot:12,script:9,search:12,second:12,select:12,selenium:9,set:3,shown:12,start:6,structur:[8,9,13],studio:[9,13],system:0,templat:5,theori:9,tool:13,tree:12,turn:12,tutori:13,uac:4,uidesktop:[8,9],uio:[8,9],uioselector:[8,9],use:[9,12],viewer:12,web:[4,9],welcom:13,what:[8,9],wiki:13,win32:[8,9],x32:9,x64:9,you:12}})
\ No newline at end of file
diff --git a/Wiki/ENG_Guide/markdown/03_Copyrights_Contacts.md b/Wiki/ENG_Guide/markdown/03_Copyrights_Contacts.md
index b6097950..6af79196 100644
--- a/Wiki/ENG_Guide/markdown/03_Copyrights_Contacts.md
+++ b/Wiki/ENG_Guide/markdown/03_Copyrights_Contacts.md
@@ -17,11 +17,14 @@ Thank you!
* Skype: MegaFinder
-* Facebook: [https://www.facebook.com/RU.Ivan.Maslov](https://www.facebook.com/RU.Ivan.Maslov)
+* Facebook: [https://www.facebook.com/RU.IT4Business](https://www.facebook.com/RU.IT4Business)
* LinkedIn: [https://www.linkedin.com/in/RU-IvanMaslov/](https://www.linkedin.com/in/RU-IvanMaslov/)
+
+* WhatsApp | Telegram: +7 906 722 39 25
+
## 3-rd party components license dependencies
diff --git a/Wiki/ENG_Guide/markdown/Robot/01_Robot.md b/Wiki/ENG_Guide/markdown/Robot/01_Robot.md
index 94fdb182..4a844be5 100644
--- a/Wiki/ENG_Guide/markdown/Robot/01_Robot.md
+++ b/Wiki/ENG_Guide/markdown/Robot/01_Robot.md
@@ -89,6 +89,31 @@ Wait for UI object will disappear in GUI for inWaitSecs seconds.
+### pyOpenRPA.Robot.UIDesktop.UIOSelectorUIOActivity_Run_Dict(inUIOSelector, inActionName, inArgumentList=None, inkwArgumentObject=None)
+Run the activity in UIO (UI Object)
+
+
+* **Parameters**
+
+
+ * **inUIOSelector** – UIOSelector - List of items, which contains condition attributes
+
+
+ * **inActionName** – UIOActivity (name) activity name string from Pywinauto
+
+
+ * **inArgumentList** –
+
+
+ * **inkwArgumentObject** –
+
+
+
+* **Returns**
+
+
+
+
### pyOpenRPA.Robot.UIDesktop.UIOSelector_Exist_Bool(inUIOSelector)
Check if object is exist by the UIO selector.
@@ -105,6 +130,40 @@ Check if object is exist by the UIO selector.
+### pyOpenRPA.Robot.UIDesktop.UIOSelector_FocusHighlight(inUIOSelector)
+Set focus and highlight (draw outline) the element (in app) by the UIO selector.
+
+
+* **Parameters**
+
+ **inUIOSelector** – UIOSelector - List of items, which contains condition attributes
+
+
+
+* **Returns**
+
+
+
+
+### pyOpenRPA.Robot.UIDesktop.UIOSelector_GetChildList_UIOList(inUIOSelector=None, inBackend='win32')
+Get list of child UIO’s by the parent UIOSelector
+
+
+* **Parameters**
+
+
+ * **inUIOSelector** – UIOSelector - List of items, which contains condition attributes
+
+
+ * **inBackend** – “win32” or “uia”
+
+
+
+* **Returns**
+
+
+
+
### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_BitnessInt(inSpecificationList)
Detect process bitness by the UI Object UIO Selector.
@@ -159,6 +218,36 @@ Get the pywinauto object by the UIO selector.
+### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOActivityList(inUIOSelector)
+Get the list of the UI object activities
+
+
+* **Parameters**
+
+ **inUIOSelector** – UIOSelector - List of items, which contains condition attributes
+
+
+
+* **Returns**
+
+
+
+
+### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOInfo(inUIOSelector)
+Get the UIO dict of the attributes
+
+
+* **Parameters**
+
+ **inUIOSelector** – UIOSelector - List of items, which contains condition attributes
+
+
+
+* **Returns**
+
+
+
+
### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOList(inSpecificationList, inElement=None, inFlagRaiseException=True)
Get the UIO list by the selector
@@ -181,6 +270,21 @@ Get the UIO list by the selector
+### pyOpenRPA.Robot.UIDesktop.UIOSelector_Highlight(inUIOSelector)
+Highlight (draw outline) the element (in app) by the UIO selector.
+
+
+* **Parameters**
+
+ **inUIOSelector** – UIOSelector - List of items, which contains condition attributes
+
+
+
+* **Returns**
+
+
+
+
### pyOpenRPA.Robot.UIDesktop.UIOSelector_SafeOtherGet_Process(inUIOSelector)
Safe get other process or None if destination app is the other/same bitness
@@ -231,6 +335,21 @@ UIOSelector (see description on the top of the document)
+### 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)
+
+
+* **Parameters**
+
+ **inSpecificationList** – UIOSelector - List of items, which contains condition attributes
+
+
+
+* **Returns**
+
+
+
+
### pyOpenRPA.Robot.UIDesktop.UIOSelectorsSecs_WaitAppear_List(inSpecificationListList, inWaitSecs, inFlagWaitAllInMoment=False)
Wait for many UI object will appear in GUI for inWaitSecs seconds.
diff --git a/Wiki/ENG_Guide/markdown/Robot/02_Defs.md b/Wiki/ENG_Guide/markdown/Robot/02_Defs.md
index 1fc659dc..6939178f 100644
--- a/Wiki/ENG_Guide/markdown/Robot/02_Defs.md
+++ b/Wiki/ENG_Guide/markdown/Robot/02_Defs.md
@@ -1,6 +1,142 @@
# 2. Defs
-## pyOpenRPA.Robot.UIDesktop
+## Desktop app UI access (win32 and UI automation dlls)
+
+### Definitions
+
+
+* **UIO** - UI Object (class of pywinauto UI object) [pywinauto.base_wrapper]
+
+
+* **UIOSelector** - List of dict (key attributes)
+
+
+* **PWA** - PyWinAuto
+
+
+* **PWASpecification** - List of dict (key attributes in pywinauto.find_window notation)
+
+
+* **UIOTree** - Recursive Dict of Dict … (UI Parent -> Child hierarchy)
+
+
+* **UIOInfo** - Dict of UIO attributes
+
+
+* **UIOActivity** - Activity of the UIO (UI object) from the Pywinauto module
+
+
+* **UIOEI** - UI Object info object
+
+### What is UIO?
+
+UIO is a User Interface Object (pyOpenRPA terminology). For maximum compatibility, this instance is inherited from the object model developed in the [pywinauto library (click to get a list of available class functions)]([https://pywinauto.readthedocs.io/en/latest/code/pywinauto.base_wrapper.html](https://pywinauto.readthedocs.io/en/latest/code/pywinauto.base_wrapper.html)).
+
+This approach allows us to implement useful functionality that has already been successfully developed in other libraries, and Supplement it with the missing functionality. In our case, the missing functionality is the ability to dynamically access UIO objects using UIO selectors.
+
+### UIOSelector structure & example
+
+
+UIOSelector is the list of condition items for the UIO in GUI. Each item has condition attributes for detect applicable UIO. Here is the description of the available condition attributes in item.
+
+
+
+```
+**
+```
+
+Desciption\*\*
+
+
+
+ ```
+ ``
+ ```
+
+
+
+ ```
+ `
+ ```
+
+
+[
+
+ {
+
+ “depth_start” :: [int, start from 1] :: the depth index, where to start check the condition list (default 1),
+ “depth_end” :: [int, start from 1] :: the depth index, where to stop check the condition list (default 1),
+ “ctrl_index” || “index” :: [int, starts from 0] :: the index of the UIO in parent UIO child list,
+ “title” :: [str] :: the condition for the UIO attribute *title*,
+ “title_re” :: [str] :: regular expression (python ver) for the condition for the UIO attribute *title*,
+ “rich_text” :: [str] :: the condition for the UIO attribute *rich_text*,
+ “rich_text_re” :: [str] :: regular expression (python ver) for the condition for the UIO attribute *rich_text*,
+ “class_name” :: [str] :: the condition for the UIO attribute *class_name*,
+ “class_name_re” :: [str] :: regular expression (python ver) for the condition for the UIO attribute *class_name*,
+ “friendly_class_name” :: [str] :: the condition for the UIO attribute *friendly_class_name*,
+ “friendly_class_name_re” :: [str] :: regular expression (python ver) for the condition for the UIO attribute *friendly_class_name*,
+ “control_type” :: [str] :: the condition for the UIO attribute *control_type*,
+ “control_type_re” :: [str] :: regular expression (python ver) for the condition for the UIO attribute *control_type*,
+ “is_enabled” :: [bool] :: the condition for the UIO attribute *is_enabled*. If UI object is enabled on GUI,
+ “is_visible” :: [bool] :: the condition for the UIO attribute *is_visible*. If UI object is visible on GUI,
+ “backend” :: [str, “win32” || “uia”] :: the method of UIO extraction (default “win32”). ATTENTION! Current option can be only for the first item of the UIO selector. For the next items this option will be implemented from the first item.
+
+ },
+ { … specification next level UIO }
+
+]
+
+
+
+ ```
+ ``
+ ```
+
+
+
+ ```
+ `
+ ```
+
+
+**The UIO selector example**
+
+
+
+ ```
+ ``
+ ```
+
+
+
+ ```
+ `
+ ```
+
+
+[
+
+ {“class_name”:”CalcFrame”, “backend”:”win32”}, # 1-st level UIO specification
+ {“title”:”Hex”, “depth_start”:3, “depth_end”: 3} # 3-rd level specification (because of attribute depth_start|depth_stop)
+
+]
+
+
+
+ ```
+ ``
+ ```
+
+
+
+ ```
+ `
+ ```
+
+
+### The UIDesktop module (OpenRPA/Robot/UIDesktop.py)
+
+The UIDesktop is extension of the pywinauto module which provide access to the desktop apps by the **win32** and **ui automation** dll frameworks (big thx to the Microsoft :) ).
```
# EXAMPLE 1
@@ -40,11 +176,26 @@ UIDesktop.UIOSelector_Get_UIO(
| 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.
@@ -60,11 +211,26 @@ UIDesktop.UIOSelector_Get_UIO(
| 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
@@ -80,6 +246,11 @@ UIDesktop.UIOSelector_Get_UIO(
| !!!!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.
@@ -175,6 +346,31 @@ Wait for UI object will disappear in GUI for inWaitSecs seconds.
+### pyOpenRPA.Robot.UIDesktop.UIOSelectorUIOActivity_Run_Dict(inUIOSelector, inActionName, inArgumentList=None, inkwArgumentObject=None)
+Run the activity in UIO (UI Object)
+
+
+* **Parameters**
+
+
+ * **inUIOSelector** – UIOSelector - List of items, which contains condition attributes
+
+
+ * **inActionName** – UIOActivity (name) activity name string from Pywinauto
+
+
+ * **inArgumentList** –
+
+
+ * **inkwArgumentObject** –
+
+
+
+* **Returns**
+
+
+
+
### pyOpenRPA.Robot.UIDesktop.UIOSelector_Exist_Bool(inUIOSelector)
Check if object is exist by the UIO selector.
@@ -191,6 +387,40 @@ Check if object is exist by the UIO selector.
+### pyOpenRPA.Robot.UIDesktop.UIOSelector_FocusHighlight(inUIOSelector)
+Set focus and highlight (draw outline) the element (in app) by the UIO selector.
+
+
+* **Parameters**
+
+ **inUIOSelector** – UIOSelector - List of items, which contains condition attributes
+
+
+
+* **Returns**
+
+
+
+
+### pyOpenRPA.Robot.UIDesktop.UIOSelector_GetChildList_UIOList(inUIOSelector=None, inBackend='win32')
+Get list of child UIO’s by the parent UIOSelector
+
+
+* **Parameters**
+
+
+ * **inUIOSelector** – UIOSelector - List of items, which contains condition attributes
+
+
+ * **inBackend** – “win32” or “uia”
+
+
+
+* **Returns**
+
+
+
+
### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_BitnessInt(inSpecificationList)
Detect process bitness by the UI Object UIO Selector.
@@ -245,6 +475,36 @@ Get the pywinauto object by the UIO selector.
+### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOActivityList(inUIOSelector)
+Get the list of the UI object activities
+
+
+* **Parameters**
+
+ **inUIOSelector** – UIOSelector - List of items, which contains condition attributes
+
+
+
+* **Returns**
+
+
+
+
+### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOInfo(inUIOSelector)
+Get the UIO dict of the attributes
+
+
+* **Parameters**
+
+ **inUIOSelector** – UIOSelector - List of items, which contains condition attributes
+
+
+
+* **Returns**
+
+
+
+
### pyOpenRPA.Robot.UIDesktop.UIOSelector_Get_UIOList(inSpecificationList, inElement=None, inFlagRaiseException=True)
Get the UIO list by the selector
@@ -267,6 +527,21 @@ Get the UIO list by the selector
+### pyOpenRPA.Robot.UIDesktop.UIOSelector_Highlight(inUIOSelector)
+Highlight (draw outline) the element (in app) by the UIO selector.
+
+
+* **Parameters**
+
+ **inUIOSelector** – UIOSelector - List of items, which contains condition attributes
+
+
+
+* **Returns**
+
+
+
+
### pyOpenRPA.Robot.UIDesktop.UIOSelector_SafeOtherGet_Process(inUIOSelector)
Safe get other process or None if destination app is the other/same bitness
@@ -317,6 +592,21 @@ UIOSelector (see description on the top of the document)
+### 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)
+
+
+* **Parameters**
+
+ **inSpecificationList** – UIOSelector - List of items, which contains condition attributes
+
+
+
+* **Returns**
+
+
+
+
### pyOpenRPA.Robot.UIDesktop.UIOSelectorsSecs_WaitAppear_List(inSpecificationListList, inWaitSecs, inFlagWaitAllInMoment=False)
Wait for many UI object will appear in GUI for inWaitSecs seconds.
diff --git a/Wiki/ENG_Guide/markdown/Robot/03_HowToUse.md b/Wiki/ENG_Guide/markdown/Robot/03_HowToUse.md
index 7fc99c49..f1edbef6 100644
--- a/Wiki/ENG_Guide/markdown/Robot/03_HowToUse.md
+++ b/Wiki/ENG_Guide/markdown/Robot/03_HowToUse.md
@@ -1,24 +1,8 @@
# 3. How to use
-## Content
-
-
-* [About](#about)
-
-
-* [How to use](#way-to-use)
-
-
-* [Create python script](#create-python-script)
-
-
-* [Execute python script](#execute-python-script)
-
-## About
-
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 OpenRPA.
-## Way to use
+## How to execute RPA script
You can use the robot by the several ways:
@@ -42,7 +26,7 @@ import cv2 # [Computer vision](https://gitlab.com/UnicodeLabs/OpenRPA/wikis/05.4
import keyboard #[Keyboard manipulation](https://gitlab.com/UnicodeLabs/OpenRPA/wikis/05.3.-Theory-&-practice:-Keyboard-&-mouse-manipulation)
```
-## Execute python script
+### Execute python script
The OpenRPA is fully portable solution. It contains own python enviroment both 32 and 64 bit versions. So, you can execute your python script in several ways:
- Execute in python x32 (OpenRPAResourcesWPy32-3720python-3.7.2)
@@ -78,7 +62,7 @@ copy /Y ..\Resources\WPy32-3720\python-3.7.2\python.exe ..\Resources\WPy32-3720\
pause >nul
```
-## Use in studio script (n/a)
+### Use in studio script (n/a)
```
import sys
@@ -88,13 +72,178 @@ import keyboard
import subprocess
import time
-#Highlight the UI Object in Folder explorer
-GUI.UIOSelector_FocusHighlight([{"class_name":"CabinetWClass","backend":"uia"},{"ctrl_index":2},{"ctrl_index":0},{"ctrl_index":2},{"ctrl_index":0}])
+#Highlight the UI Object in Folder explorer
+GUI.UIOSelector_FocusHighlight([{"class_name":"CabinetWClass","backend":"uia"},{"ctrl_index":2},{"ctrl_index":0},{"ctrl_index":2},{"ctrl_index":0}])
-#Wait 2 seconds
-time.sleep(3)
+#Wait 2 seconds
+time.sleep(3)
-#Loop: get child element of UI List
-for lItem in GUI.UIOSelector_Get_UIO([{"class_name":"CabinetWClass","backend":"uia"},{"ctrl_index":2},{"ctrl_index":0},{"ctrl_index":2},{"ctrl_index":0}]).children():
- print(str(lItem))
+#Loop: get child element of UI List
+for lItem in GUI.UIOSelector_Get_UIO([{"class_name":"CabinetWClass","backend":"uia"},{"ctrl_index":2},{"ctrl_index":0},{"ctrl_index":2},{"ctrl_index":0}]).children():
+ print(str(lItem))
```
+
+Here you can find the docs and examples of the OpenRPA desktop (GUI) app access.
+
+## Theory & practice. Desktop app UI access (win32 and UI automation dlls)
+
+### Definitions
+
+**UIO** - UI Object (class of pywinauto UI object) [pywinauto.base_wrapper]
+**UIOSelector** - List of dict (key attributes)
+**PWA** - PyWinAuto
+**PWASpecification** - List of dict (key attributes in pywinauto.find_window notation)
+**UIOTree** - Recursive Dict of Dict … (UI Parent -> Child hierarchy)
+**UIOInfo** - Dict of UIO attributes
+**UIOActivity** - Activity of the UIO (UI object) from the Pywinauto module
+**UIOEI** - UI Object info object
+
+### What is UIO?
+
+UIO is a User Interface Object (pyOpenRPA terminology). For maximum compatibility, this instance is inherited from the object model developed in the [pywinauto library (click to get a list of available class functions)]([https://pywinauto.readthedocs.io/en/latest/code/pywinauto.base_wrapper.html](https://pywinauto.readthedocs.io/en/latest/code/pywinauto.base_wrapper.html)).
+
+This approach allows us to implement useful functionality that has already been successfully developed in other libraries, and Supplement it with the missing functionality. In our case, the missing functionality is the ability to dynamically access UIO objects using UIO selectors.
+
+### UIOSelector structure & example
+
+
+UIOSelector is the list of condition items for the UIO in GUI. Each item has condition attributes for detect applicable UIO. Here is the description of the available condition attributes in item.
+
+**Desciption**
+
+
+
+ ```
+ ``
+ ```
+
+
+
+ ```
+ `
+ ```
+
+
+[
+
+ {
+
+ “depth_start” :: [int, start from 1] :: the depth index, where to start check the condition list (default 1),
+ “depth_end” :: [int, start from 1] :: the depth index, where to stop check the condition list (default 1),
+ “ctrl_index” || “index” :: [int, starts from 0] :: the index of the UIO in parent UIO child list,
+ “title” :: [str] :: the condition for the UIO attribute *title*,
+ “title_re” :: [str] :: regular expression (python ver) for the condition for the UIO attribute *title*,
+ “rich_text” :: [str] :: the condition for the UIO attribute *rich_text*,
+ “rich_text_re” :: [str] :: regular expression (python ver) for the condition for the UIO attribute *rich_text*,
+ “class_name” :: [str] :: the condition for the UIO attribute *class_name*,
+ “class_name_re” :: [str] :: regular expression (python ver) for the condition for the UIO attribute *class_name*,
+ “friendly_class_name” :: [str] :: the condition for the UIO attribute *friendly_class_name*,
+ “friendly_class_name_re” :: [str] :: regular expression (python ver) for the condition for the UIO attribute *friendly_class_name*,
+ “control_type” :: [str] :: the condition for the UIO attribute *control_type*,
+ “control_type_re” :: [str] :: regular expression (python ver) for the condition for the UIO attribute *control_type*,
+ “is_enabled” :: [bool] :: the condition for the UIO attribute *is_enabled*. If UI object is enabled on GUI,
+ “is_visible” :: [bool] :: the condition for the UIO attribute *is_visible*. If UI object is visible on GUI,
+ “backend” :: [str, “win32” || “uia”] :: the method of UIO extraction (default “win32”). ATTENTION! Current option can be only for the first item of the UIO selector. For the next items this option will be implemented from the first item.
+
+ },
+ { … specification next level UIO }
+
+]
+
+
+
+ ```
+ ``
+ ```
+
+
+
+ ```
+ `
+ ```
+
+
+**The UIO selector example**
+
+
+
+ ```
+ ``
+ ```
+
+
+
+ ```
+ `
+ ```
+
+
+[
+
+ {“class_name”:”CalcFrame”, “backend”:”win32”}, # 1-st level UIO specification
+ {“title”:”Hex”, “depth_start”:3, “depth_end”: 3} # 3-rd level specification (because of attribute depth_start|depth_stop)
+
+]
+
+
+
+ ```
+ ``
+ ```
+
+
+
+ ```
+ `
+ ```
+
+
+### The UIDesktop module (OpenRPA/Robot/UIDesktop.py)
+
+The UIDesktop is extension of the pywinauto module which provide access to the desktop apps by the **win32** and **ui automation** dll frameworks (big thx to the Microsoft :) ).
+
+
+
+```
+*
+```
+
+Naming convention: __\*
+
+## Theory & practice. WEB app UI access (selenium)
+
+### About
+
+The pyOpenRPA support web app manipulation (by the Selenium lib).
+More docs about selenium you can find here ([https://selenium-python.readthedocs.io/](https://selenium-python.readthedocs.io/))
+
+### How to use
+
+To start use selenium just import selenium modules in the robot tool. Here is the example of the usage.
+
+```
+from selenium import webdriver
+from selenium.webdriver.common.keys import Keys
+
+driver = webdriver.Chrome()
+driver.get("http://www.python.org")
+assert "Python" in driver.title
+elem = driver.find_element_by_name("q")
+elem.clear()
+elem.send_keys("pycon")
+elem.send_keys(Keys.RETURN)
+assert "No results found." not in driver.page_source
+driver.close()
+```
+
+## Theory & practice. Keyboard & mouse manipulation
+
+## Theory & practice. Screen capture & image recognition
+
+### How to automate image recognition on PC
+
+Here you can find any ways you need to use in your business case:
+- Find the exact match on the screen with the other image
+- Use text recognition module (OCR)
+- Use computer vision (CV) to identify the objects on screen/image/video
+- Use artificial intelligence (AI) to make custom identification/classification/text recognition
diff --git a/Wiki/ENG_Guide/markdown/index.md b/Wiki/ENG_Guide/markdown/index.md
index 442cd465..5d2de696 100644
--- a/Wiki/ENG_Guide/markdown/index.md
+++ b/Wiki/ENG_Guide/markdown/index.md
@@ -166,7 +166,7 @@ in QUEUE
* 2. Defs
- * pyOpenRPA.Robot.UIDesktop
+ * Desktop app UI access (win32 and UI automation dlls)
* References
@@ -175,19 +175,19 @@ in QUEUE
* 3. How to use
- * Content
+ * How to execute RPA script
- * About
+ * Theory & practice. Desktop app UI access (win32 and UI automation dlls)
- * Way to use
+ * Theory & practice. WEB app UI access (selenium)
- * Execute python script
+ * Theory & practice. Keyboard & mouse manipulation
- * Use in studio script (n/a)
+ * Theory & practice. Screen capture & image recognition
* 4. Dependencies