@ -867,10 +867,24 @@ def UIOSelector_SearchChildByMouse_UIOTree(inUIOSelector):
lItemInfo = lPIPEResponseDict [ " Result " ]
lItemInfo = lPIPEResponseDict [ " Result " ]
#Вернуть результат
#Вернуть результат
return lItemInfo
return lItemInfo
####################################################################################################
#inElement- UIO (UI Object)
#old name - PywinautoExtElementCtrlIndexGet
#old name - PywinautoExtElementCtrlIndexGet
def UIO_GetCtrlIndex_Int ( inElement ) :
def UIO_GetCtrlIndex_Int ( inElement ) :
"""
Получить индекс UIO объекта inElement в списке родительского UIO объекта .
. . code - block : : python
# UIDesktop: Взаимодействие с UI объектами приложений
from pyOpenRPA . Robot import UIDesktop
# 1С : UIO Селектор выбора базы
lDemoBaseUIOSelector = [ { " title " : " Запуск 1С :Предприятия " , " class_name " : " V8TopLevelFrameTaxiStarter " , " backend " : " uia " } ]
lUIO = UIDesktop . UIOSelector_Get_UIO ( lDemoBaseUIOSelector ) # Получить UIO объект по UIO селектору.
lUIOIndexInt = UIDesktop . UIO_GetCtrlIndex_Int ( lUIO ) # Получить индекс UIO объекта в списке у родительского UIO объекта.
: param inElement : UIO объект , для которого требуется определить индекс в списке родительского UIO объекта .
: type inElement : list , обязательный
: return : int , индекс UIO объекта в списке родительского UIO объекта
"""
lResult = None
lResult = None
#Выполнить алгоритм, если есть Element
#Выполнить алгоритм, если есть Element
if inElement is not None :
if inElement is not None :
@ -899,12 +913,27 @@ def UIO_GetCtrlIndex_Int(inElement):
#Вернуть результат
#Вернуть результат
return lResult
return lResult
####################################################################################################
#old: - PywinautoExtElementsGetInfo
# Get the UIO Info list for the selected criteria
#!!!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!!
#inSpecificationList - UIOSelector
#old name - PywinautoExtElementsGetInfo
def UIOSelector_Get_UIOInfoList ( inUIOSelector , inElement = None ) :
def UIOSelector_Get_UIOInfoList ( inUIOSelector , inElement = None ) :
"""
Техническая функция : Получить список параметров последних уровней UIO селектора по UIO объектам , которые удовлетворяют входящим inUIOSelector , поиск по которым будет производится от уровня inElement .
! ВНИМАНИЕ ! ДАННАЯ ФУНКЦИОНАЛЬНОСТЬ В АВТОМАТИЧЕСКОМ РЕЖИМЕ ПОДДЕРЖИВАЕТ В С Е РАЗРЯДНОСТИ ПРИЛОЖЕНИЙ ( 32 | 64 ) , КОТОРЫЕ ЗАПУЩЕНЫ В СЕСИИ . PYTHON x64 ИМЕЕТ ВОЗМОЖНОСТЬ ВЗЗАИМОДЕЙСТВИЯ С x32 UIO ОБЪЕКТАМИ , Н О МЫ РЕКОМЕНДУЕМ ДОПОЛНИТЕЛЬНО ИСПОЛЬЗОВАТЬ ИНТЕРПРЕТАТОР PYTHON x32 ( ПОДРОБНЕЕ С М . ФУНКЦИЮ Configure ( ) )
. . code - block : : python
# UIDesktop: Взаимодействие с UI объектами приложений
from pyOpenRPA . Robot import UIDesktop
# 1С : UIO Селектор выбора базы
lDemoBaseUIOSelector = [ { " title " : " Запуск 1С :Предприятия " , " class_name " : " V8TopLevelFrameTaxiStarter " , " backend " : " uia " } ]
lUIOInfoList = UIDesktop . UIOSelector_Get_UIOInfoList ( lDemoBaseUIOSelector ) # Получить словарь параметров по UIO селектору.
: param inUIOSelector : UIO селектор , который определяет UIO объект , для которого будет произведено извлечение всех атрибутов на всех уровнях .
: type inUIOSelector : list , обязательный
: param inElement : UIO объект , от которого выполнить поиск дочерних UIO объектов по UIO селектору inUIOSelector . По умолчанию None - поиск среди всех приложений .
: type inElement : UIO объект , необязательный
: return : dict , пример : { " title " : None , " rich_text " : None , " process_id " : None , " process " : None , " handle " : None , " class_name " : None , " control_type " : None , " control_id " : None , " rectangle " : { " left " : None , " top " : None , " right " : None , " bottom " : None } , ' runtime_id ' : None }
"""
#Check the bitness
#Check the bitness
lSafeOtherProcess = UIOSelector_SafeOtherGet_Process ( inUIOSelector )
lSafeOtherProcess = UIOSelector_SafeOtherGet_Process ( inUIOSelector )
if lSafeOtherProcess is None :
if lSafeOtherProcess is None :
@ -930,17 +959,25 @@ def UIOSelector_Get_UIOInfoList (inUIOSelector, inElement=None):
lResultList = lPIPEResponseDict [ " Result " ]
lResultList = lPIPEResponseDict [ " Result " ]
return lResultList
return lResultList
####################################################################################################
#old: - PywinautoExtTryToRestore
#Try to restore (maximize) window, if it's was minimized
#(особенность uia backend - он не может прицепиться к окну, если оно свернуто)
#inSpecificationList - UIOSelector
#old name - PywinautoExtTryToRestore
def UIOSelector_TryRestore_Dict ( inSpecificationList ) :
def UIOSelector_TryRestore_Dict ( inSpecificationList ) :
"""
"""
Try to restore ( maximize ) window , if it ' s minimized. (!IMPORTANT! When use UIA framework minimized windows doesn ' t appear by the UIOSelector . You need to try restore windows and after that try to get UIO )
Восстановить окно приложения на экране по UIO селектору inSpecificationList , если оно было свернуто . Функция обернута в try . . except - ошибок не возникнет .
: param inSpecificationList : UIOSelector - List of items , which contains condition attributes
! ВНИМАНИЕ ! ДАННАЯ ФУНКЦИОНАЛЬНОСТЬ УЖЕ ИСПОЛЬЗУЕТСЯ В РЯДЕ ДРУГИХ ФУНКЦИЙ Т А К К А К АДРЕССАЦИЯ ПО UIA FRAMEWORK НЕДОСТУПНА , ЕСЛИ ПРИЛОЖЕНИЕ С В Е Р Н У Т О .
: return :
! ВНИМАНИЕ ! ДАННАЯ ФУНКЦИОНАЛЬНОСТЬ В АВТОМАТИЧЕСКОМ РЕЖИМЕ ПОДДЕРЖИВАЕТ В С Е РАЗРЯДНОСТИ ПРИЛОЖЕНИЙ ( 32 | 64 ) , КОТОРЫЕ ЗАПУЩЕНЫ В СЕСИИ . PYTHON x64 ИМЕЕТ ВОЗМОЖНОСТЬ ВЗЗАИМОДЕЙСТВИЯ С x32 UIO ОБЪЕКТАМИ , Н О МЫ РЕКОМЕНДУЕМ ДОПОЛНИТЕЛЬНО ИСПОЛЬЗОВАТЬ ИНТЕРПРЕТАТОР PYTHON x32 ( ПОДРОБНЕЕ С М . ФУНКЦИЮ Configure ( ) )
. . code - block : : python
# UIDesktop: Взаимодействие с UI объектами приложений
from pyOpenRPA . Robot import UIDesktop
# 1С : UIO Селектор выбора базы
lDemoBaseUIOSelector = [ { " title " : " Запуск 1С :Предприятия " , " class_name " : " V8TopLevelFrameTaxiStarter " , " backend " : " uia " } ]
UIDesktop . UIOSelector_TryRestore_Dict ( lDemoBaseUIOSelector ) # Попытка восстановления свернутого окна по UIO селектору.
: param inSpecificationList : UIO селектор , который определяет UIO объект , для которого будет произведено извлечение всех атрибутов на всех уровнях .
: type inSpecificationList : list , обязательный
"""
"""
lResult = { }
lResult = { }
try :
try :
@ -954,17 +991,24 @@ def UIOSelector_TryRestore_Dict(inSpecificationList):
except Exception :
except Exception :
True == False
True == False
return lResult
return lResult
####################################################################################################
#Get the list of the UI object activities
#old: - ElementActionGetList
#!!!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!!
#inControlSpecificationArray - UIOSelector
#old name - ElementActionGetList
def UIOSelector_Get_UIOActivityList ( inUIOSelector ) :
def UIOSelector_Get_UIOActivityList ( inUIOSelector ) :
"""
"""
Get the list of the UI object activities
Получить список доступных действий / функций по UIO селектору inUIOSelector . Описание возможных активностей см . ниже .
: param inUIOSelector : UIOSelector - List of items , which contains condition attributes
! ВНИМАНИЕ ! ДАННАЯ ФУНКЦИОНАЛЬНОСТЬ В АВТОМАТИЧЕСКОМ РЕЖИМЕ ПОДДЕРЖИВАЕТ В С Е РАЗРЯДНОСТИ ПРИЛОЖЕНИЙ ( 32 | 64 ) , КОТОРЫЕ ЗАПУЩЕНЫ В СЕСИИ . PYTHON x64 ИМЕЕТ ВОЗМОЖНОСТЬ ВЗЗАИМОДЕЙСТВИЯ С x32 UIO ОБЪЕКТАМИ , Н О МЫ РЕКОМЕНДУЕМ ДОПОЛНИТЕЛЬНО ИСПОЛЬЗОВАТЬ ИНТЕРПРЕТАТОР PYTHON x32 ( ПОДРОБНЕЕ С М . ФУНКЦИЮ Configure ( ) )
: return :
. . code - block : : python
# UIDesktop: Взаимодействие с UI объектами приложений
from pyOpenRPA . Robot import UIDesktop
# 1С : UIO Селектор выбора базы
lDemoBaseUIOSelector = [ { " title " : " Запуск 1С :Предприятия " , " class_name " : " V8TopLevelFrameTaxiStarter " , " backend " : " uia " } ]
lActivityList = UIDesktop . UIOSelector_Get_UIOActivityList ( lDemoBaseUIOSelector ) # Получить список активностей по UIO селектору.
: param inUIOSelector : UIO селектор , который определяет UIO объект , для которого будет представлен перечень доступных активностей .
: type inUIOSelector : list , обязательный
"""
"""
#Check the bitness
#Check the bitness
lSafeOtherProcess = UIOSelector_SafeOtherGet_Process ( inUIOSelector )
lSafeOtherProcess = UIOSelector_SafeOtherGet_Process ( inUIOSelector )
@ -997,21 +1041,30 @@ def UIOSelector_Get_UIOActivityList (inUIOSelector):
lResult = lPIPEResponseDict [ " Result " ]
lResult = lPIPEResponseDict [ " Result " ]
return lResult
return lResult
####################################################################################################
#old: - ElementRunAction
#Run the activity in UIO (UI Object)
#!!!!!Safe call is included (you can set activity and UIDesktop will choose the bitness and return the result)!!!!!
#inUIOSelector
#inActionName - UIOActivity (name) from Pywinauto
#old name - ElementRunAction
def UIOSelectorUIOActivity_Run_Dict ( inUIOSelector , inActionName , inArgumentList = None , inkwArgumentObject = None ) :
def UIOSelectorUIOActivity_Run_Dict ( inUIOSelector , inActionName , inArgumentList = None , inkwArgumentObject = None ) :
"""
"""
Run the activity in UIO ( UI Object )
Выполнить активность inActionName над UIO объектом , полученным с помощью UIO селектора inUIOSelector . Описание возможных активностей см . ниже .
: param inUIOSelector : UIOSelector - List of items , which contains condition attributes
! ВНИМАНИЕ ! ДАННАЯ ФУНКЦИОНАЛЬНОСТЬ В АВТОМАТИЧЕСКОМ РЕЖИМЕ ПОДДЕРЖИВАЕТ В С Е РАЗРЯДНОСТИ ПРИЛОЖЕНИЙ ( 32 | 64 ) , КОТОРЫЕ ЗАПУЩЕНЫ В СЕСИИ . PYTHON x64 ИМЕЕТ ВОЗМОЖНОСТЬ ВЗЗАИМОДЕЙСТВИЯ С x32 UIO ОБЪЕКТАМИ , Н О МЫ РЕКОМЕНДУЕМ ДОПОЛНИТЕЛЬНО ИСПОЛЬЗОВАТЬ ИНТЕРПРЕТАТОР PYTHON x32 ( ПОДРОБНЕЕ С М . ФУНКЦИЮ Configure ( ) )
: param inActionName : UIOActivity ( name ) activity name string from Pywinauto
: param inArgumentList :
. . code - block : : python
: param inkwArgumentObject :
: return :
# UIDesktop: Взаимодействие с UI объектами приложений
from pyOpenRPA . Robot import UIDesktop
# 1С : UIO Селектор выбора базы
lDemoBaseUIOSelector = [ { " title " : " Запуск 1С :Предприятия " , " class_name " : " V8TopLevelFrameTaxiStarter " , " backend " : " uia " } ]
lActivityResult = UIDesktop . UIOSelectorUIOActivity_Run_Dict ( lDemoBaseUIOSelector , " click " ) # выполнить действие над UIO объектом с помощью UIO селектора.
: param inUIOSelector : UIO селектор , который определяет UIO объект , для которого будет представлен перечень доступных активностей .
: type inUIOSelector : list , обязательный
: param inActionName : наименование активности , которую требуется выполнить над UIO объектом
: type inActionName : str , обязательный
: param inArgumentList : список передаваемых неименованных аргументов в функцию inActionName
: type inArgumentList : list , необязательный
: param inkwArgumentObject : словарь передаваемых именованных аргументов в функцию inActionName
: type inkwArgumentObject : dict , необязательный
: return : возвращает результат запускаемой функции с наименованием inActionName над UIO объектом
"""
"""
if inArgumentList is None : inArgumentList = [ ] # 2021 02 22 Minor fix by Ivan Maslov
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
if inkwArgumentObject is None : inkwArgumentObject = { } # 2021 02 22 Minor fix by Ivan Maslov
@ -1407,6 +1460,22 @@ def UIOSelector_SearchProcessNormalize_UIOSelector (inControlSpecificationArray)
#inElementInfo - UIOEI
#inElementInfo - UIOEI
#old name - ElementInfoExportObject
#old name - ElementInfoExportObject
def UIOEI_Convert_UIOInfo ( inElementInfo ) :
def UIOEI_Convert_UIOInfo ( inElementInfo ) :
"""
Техническая функция : Дообогащение словаря с параметрами UIO объекта по заданному UIO . element_info
. . code - block : : python
# UIDesktop: Взаимодействие с UI объектами приложений
from pyOpenRPA . Robot import UIDesktop
# 1С : UIO Селектор выбора базы
lDemoBaseUIOSelector = [ { " title " : " Запуск 1С :Предприятия " , " class_name " : " V8TopLevelFrameTaxiStarter " , " backend " : " uia " } ]
lUIO = UIDesktop . UIOSelector_Get_UIO ( lDemoBaseUIOSelector ) # Получить UIO объект по UIO селектору.
lUIOProcessInfoDict = UIDesktop . UIOEI_Convert_UIOInfo ( lUIO . element_info )
: param inElementInfo : экземпляр класса UIO . element_info , для которого требуется дообогатить словарь с параметрами ( в дальнейшем можно использовать как элемент UIO селектора ) .
: type inElementInfo : object , обязательный
: return : dict , пример : { " title " : None , " rich_text " : None , " process_id " : None , " process " : None , " handle " : None , " class_name " : None , " control_type " : None , " control_id " : None , " rectangle " : { " left " : None , " top " : None , " right " : None , " bottom " : None } , ' runtime_id ' : None }
"""
#Подготовить выходную структуру данных
#Подготовить выходную структуру данных
lResult = { " title " : None , " rich_text " : None , " process_id " : None , " process " : None , " handle " : None , " class_name " : None , " control_type " : None , " control_id " : None , " rectangle " : { " left " : None , " top " : None , " right " : None , " bottom " : None } , ' runtime_id ' : None }
lResult = { " title " : None , " rich_text " : None , " process_id " : None , " process " : None , " handle " : None , " class_name " : None , " control_type " : None , " control_id " : None , " rectangle " : { " left " : None , " top " : None , " right " : None , " bottom " : None } , ' runtime_id ' : None }
#Проверка name
#Проверка name