@ -120,7 +120,7 @@ def UIOSelector_Get_UIOList (inSpecificationList,inElement=None,inFlagRaiseExcep
: type inSpecificationList : list , обязательный
: param inElement : Родительский элемент , от которого выполнить поиск UIO объектов по заданному UIO селектору . Если аргумент не задан , платформа выполнит поиск UIO объектов среди всех доступных приложений windows , которые запущены на текущей сессии
: type inElement : UIO объект , опциональный
: param inFlagRaiseException : True - формировать ошибку exception , если платформа не обнаружина ни одного UIO объекта по заданному UIO селектору . False - обратный случай . По умолчанию True
: param inFlagRaiseException : True - формировать ошибку exception , если платформа не обнаружина ни одного UIO объекта по заданному UIO селектору . False - обратный случай ( может привести к ошибочным результатам ) . По умолчанию True .
: type inFlagRaiseException : bool , опциональный
: return : Список UIO объектов , которые удовлетворяют условиям UIO селектора
'''
@ -246,8 +246,8 @@ def UIOSelector_Get_UIOList (inSpecificationList,inElement=None,inFlagRaiseExcep
if inElement is None and len ( lResultList ) == 0 and inFlagRaiseException :
raise pywinauto . findwindows . ElementNotFoundError ( " Robot can ' t find element by the UIOSelector " )
return lResultList
except Exception :
if inFlagRaiseException : raise ValueError ( " Н е удается получить UIOList" )
except Exception as e :
if inFlagRaiseException : raise e
else : return [ ]
#old:PywinautoExtElementGet
@ -272,16 +272,13 @@ def UIOSelector_Get_UIO (inSpecificationList,inElement=None,inFlagRaiseException
'''
lResult = None
#Получить родительский объект если на вход ничего не поступило
lResultList = UIOSelector_Get_UIOList ( inSpecificationList , inElement , False )
lResultList = UIOSelector_Get_UIOList ( inSpecificationList , inElement , inFlagRaiseException )
if len ( lResultList ) > 0 :
lResult = lResultList [ 0 ]
#Условие, если результирующий список пустой и установлен флаг создания ошибки (и inElement is None - не следствие рекурсивного вызова)
if lResult is None and inFlagRaiseException :
raise pywinauto . findwindows . ElementNotFoundError ( " Robot can ' t find element by the UIOSelector " )
return lResult
#old:-
def UIOSelector_Exist_Bool ( inUIOSelector ):
def UIOSelector_Exist_Bool ( inUIOSelector , inFlagRaiseException = True ):
''' L-,W+: Проверить существование хотя бы 1-г о UIO объекта по заданному UIO селектору
! ВНИМАНИЕ ! ДАННАЯ ФУНКЦИОНАЛЬНОСТЬ В АВТОМАТИЧЕСКОМ РЕЖИМЕ ПОДДЕРЖИВАЕТ В С Е РАЗРЯДНОСТИ ПРИЛОЖЕНИЙ ( 32 | 64 ) , КОТОРЫЕ ЗАПУЩЕНЫ В СЕСИИ . PYTHON x64 ИМЕЕТ ВОЗМОЖНОСТЬ ВЗЗАИМОДЕЙСТВИЯ С x32 UIO ОБЪЕКТАМИ , Н О МЫ РЕКОМЕНДУЕМ ДОПОЛНИТЕЛЬНО ИСПОЛЬЗОВАТЬ ИНТЕРПРЕТАТОР PYTHON x32 ( ПОДРОБНЕЕ С М . ФУНКЦИЮ Configure ( ) )
@ -296,6 +293,8 @@ def UIOSelector_Exist_Bool (inUIOSelector):
: param inUIOSelector : UIO Селектор , который определяет критерии поиска UIO объектов
: type inUIOSelector : list , обязательный
: param inFlagRaiseException : True - формировать ошибку exception , если платформа не обнаружина ни одного UIO объекта по заданному UIO селектору . False - обратный случай ( может привести к ошибочным результатам ) . По умолчанию True .
: type inFlagRaiseException : bool , опциональный
: return : True - существует хотя бы 1 UIO объект . False - не существует ни одного UIO объекта по заданному UIO селектору
'''
lResult = False
@ -303,7 +302,9 @@ def UIOSelector_Exist_Bool (inUIOSelector):
lSafeOtherProcess = UIOSelector_SafeOtherGet_Process ( inUIOSelector )
if lSafeOtherProcess is None :
#Получить родительский объект если на вход ничего не поступило
lResultList = UIOSelector_Get_UIOList ( inUIOSelector , None , False )
try :
lResultList = UIOSelector_Get_UIOList ( inUIOSelector , None , inFlagRaiseException )
except pywinauto . findwindows . ElementNotFoundError : return False
if len ( lResultList ) > 0 :
lResult = True
else :
@ -323,7 +324,7 @@ def UIOSelector_Exist_Bool (inUIOSelector):
return lResult
#old: -
def UIOSelectorsSecs_WaitAppear_List ( inSpecificationListList , inWaitSecs = 86400.0 , inFlagWaitAllInMoment = False ):
def UIOSelectorsSecs_WaitAppear_List ( inSpecificationListList , inWaitSecs = 86400.0 , inFlagWaitAllInMoment = False , inFlagRaiseException = True ):
''' L-,W+: Ожидать появление хотя бы 1-г о / всех UIO объектов по заданным UIO селекторам
! ВНИМАНИЕ ! ДАННАЯ ФУНКЦИОНАЛЬНОСТЬ В АВТОМАТИЧЕСКОМ РЕЖИМЕ ПОДДЕРЖИВАЕТ В С Е РАЗРЯДНОСТИ ПРИЛОЖЕНИЙ ( 32 | 64 ) , КОТОРЫЕ ЗАПУЩЕНЫ В СЕСИИ . PYTHON x64 ИМЕЕТ ВОЗМОЖНОСТЬ ВЗЗАИМОДЕЙСТВИЯ С x32 UIO ОБЪЕКТАМИ , Н О МЫ РЕКОМЕНДУЕМ ДОПОЛНИТЕЛЬНО ИСПОЛЬЗОВАТЬ ИНТЕРПРЕТАТОР PYTHON x32 ( ПОДРОБНЕЕ С М . ФУНКЦИЮ Configure ( ) )
@ -346,6 +347,8 @@ def UIOSelectorsSecs_WaitAppear_List (inSpecificationListList,inWaitSecs=86400.0
: type inSpecificationListList : list , обязательный
: param inWaitSecs : Количество секунд , которые отвести на ожидание UIO объектов . По умолчанию 24 часа ( 86400 секунд )
: type inWaitSecs : float , необязательный
: param inFlagRaiseException : True - формировать ошибку exception , если платформа не обнаружина ни одного UIO объекта по заданному UIO селектору . False - обратный случай ( может привести к ошибочным результатам ) . По умолчанию True .
: type inFlagRaiseException : bool , опциональный
: param inFlagWaitAllInMoment : True - Ожидать до того момента , пока не появятся все запрашиваемые UIO объекты на рабочей области
: return : Список индексов , которые указывают на номер входящих UIO селекторов , которые были обнаружены на рабочей области . Пример : [ 0 , 2 ]
'''
@ -360,7 +363,7 @@ def UIOSelectorsSecs_WaitAppear_List (inSpecificationListList,inWaitSecs=86400.0
#Итерация проверки
lIndex = 0
for lItem in inSpecificationListList :
lItemResultFlag = UIOSelector_Exist_Bool ( lItem )
lItemResultFlag = UIOSelector_Exist_Bool ( lItem , inFlagRaiseException = True )
#Если обнаружен элемент - добавить е г о индекс в массив
if lItemResultFlag :
lResultList . append ( lIndex )
@ -380,7 +383,7 @@ def UIOSelectorsSecs_WaitAppear_List (inSpecificationListList,inWaitSecs=86400.0
return lResultList
#old: -
def UIOSelectorsSecs_WaitDisappear_List ( inSpecificationListList , inWaitSecs = 86400.0 , inFlagWaitAllInMoment = False ):
def UIOSelectorsSecs_WaitDisappear_List ( inSpecificationListList , inWaitSecs = 86400.0 , inFlagWaitAllInMoment = False , inFlagRaiseException = True ):
''' L-,W+: Ожидать исчезновение хотя бы 1-г о / всех UIO объектов по заданным UIO селекторам
! ВНИМАНИЕ ! ДАННАЯ ФУНКЦИОНАЛЬНОСТЬ В АВТОМАТИЧЕСКОМ РЕЖИМЕ ПОДДЕРЖИВАЕТ В С Е РАЗРЯДНОСТИ ПРИЛОЖЕНИЙ ( 32 | 64 ) , КОТОРЫЕ ЗАПУЩЕНЫ В СЕСИИ . PYTHON x64 ИМЕЕТ ВОЗМОЖНОСТЬ ВЗЗАИМОДЕЙСТВИЯ С x32 UIO ОБЪЕКТАМИ , Н О МЫ РЕКОМЕНДУЕМ ДОПОЛНИТЕЛЬНО ИСПОЛЬЗОВАТЬ ИНТЕРПРЕТАТОР PYTHON x32 ( ПОДРОБНЕЕ С М . ФУНКЦИЮ Configure ( ) )
@ -403,6 +406,8 @@ def UIOSelectorsSecs_WaitDisappear_List (inSpecificationListList,inWaitSecs=8640
: type inSpecificationListList : list , обязательный
: param inWaitSecs : Количество секунд , которые отвести на ожидание исчезновения UIO объектов . По умолчанию 24 часа ( 86400 секунд )
: type inWaitSecs : float , необязательный
: param inFlagRaiseException : True - формировать ошибку exception , если платформа не обнаружина ни одного UIO объекта по заданному UIO селектору . False - обратный случай ( может привести к ошибочным результатам ) . По умолчанию True .
: type inFlagRaiseException : bool , опциональный
: param inFlagWaitAllInMoment : True - Ожидать до того момента , пока не исчезнут все запрашиваемые UIO объекты на рабочей области
: return : Список индексов , которые указывают на номер входящих UIO селекторов , которые были обнаружены на рабочей области . Пример : [ 0 , 2 ]
'''
@ -418,7 +423,7 @@ def UIOSelectorsSecs_WaitDisappear_List (inSpecificationListList,inWaitSecs=8640
#Итерация проверки
lIndex = 0
for lItem in inSpecificationListList :
lItemResultFlag = UIOSelector_Exist_Bool ( lItem )
lItemResultFlag = UIOSelector_Exist_Bool ( lItem ,inFlagRaiseException = inFlagRaiseException )
#Если обнаружен элемент - добавить е г о индекс в массив
if not lItemResultFlag :
lResultList . append ( lIndex )
@ -438,7 +443,7 @@ def UIOSelectorsSecs_WaitDisappear_List (inSpecificationListList,inWaitSecs=8640
return lResultList
#old: -
def UIOSelectorSecs_WaitAppear_Bool ( inSpecificationList , inWaitSecs ):
def UIOSelectorSecs_WaitAppear_Bool ( inSpecificationList , inWaitSecs , inFlagRaiseException = True ):
''' L-,W+: Ожидать появление 1-г о UIO объекта по заданному UIO селектору
! ВНИМАНИЕ ! ДАННАЯ ФУНКЦИОНАЛЬНОСТЬ В АВТОМАТИЧЕСКОМ РЕЖИМЕ ПОДДЕРЖИВАЕТ В С Е РАЗРЯДНОСТИ ПРИЛОЖЕНИЙ ( 32 | 64 ) , КОТОРЫЕ ЗАПУЩЕНЫ В СЕСИИ . PYTHON x64 ИМЕЕТ ВОЗМОЖНОСТЬ ВЗЗАИМОДЕЙСТВИЯ С x32 UIO ОБЪЕКТАМИ , Н О МЫ РЕКОМЕНДУЕМ ДОПОЛНИТЕЛЬНО ИСПОЛЬЗОВАТЬ ИНТЕРПРЕТАТОР PYTHON x32 ( ПОДРОБНЕЕ С М . ФУНКЦИЮ Configure ( ) )
@ -455,16 +460,18 @@ def UIOSelectorSecs_WaitAppear_Bool (inSpecificationList,inWaitSecs):
: type inSpecificationList : list , обязательный
: param inWaitSecs : Количество секунд , которые отвести на ожидание UIO объекта . По умолчанию 24 часа ( 86400 секунд )
: type inWaitSecs : float , необязательный
: param inFlagRaiseException : True - формировать ошибку exception , если платформа не обнаружина ни одного UIO объекта по заданному UIO селектору . False - обратный случай ( может привести к ошибочным результатам ) . По умолчанию True .
: type inFlagRaiseException : bool , опциональный
: return : True - UIO объект был обнаружен . False - обратная ситуациая
'''
lWaitAppearList = UIOSelectorsSecs_WaitAppear_List ( [ inSpecificationList ] , inWaitSecs )
lWaitAppearList = UIOSelectorsSecs_WaitAppear_List ( [ inSpecificationList ] , inWaitSecs , inFlagRaiseException = inFlagRaiseException )
lResult = False
if len ( lWaitAppearList ) > 0 :
lResult = True
return lResult
#old name - -
def UIOSelectorSecs_WaitDisappear_Bool ( inSpecificationList , inWaitSecs ):
def UIOSelectorSecs_WaitDisappear_Bool ( inSpecificationList , inWaitSecs ,inFlagRaiseException = True ):
''' L-,W+: Ожидать исчезновение 1-г о UIO объекта по заданному UIO селектору
! ВНИМАНИЕ ! ДАННАЯ ФУНКЦИОНАЛЬНОСТЬ В АВТОМАТИЧЕСКОМ РЕЖИМЕ ПОДДЕРЖИВАЕТ В С Е РАЗРЯДНОСТИ ПРИЛОЖЕНИЙ ( 32 | 64 ) , КОТОРЫЕ ЗАПУЩЕНЫ В СЕСИИ . PYTHON x64 ИМЕЕТ ВОЗМОЖНОСТЬ ВЗЗАИМОДЕЙСТВИЯ С x32 UIO ОБЪЕКТАМИ , Н О МЫ РЕКОМЕНДУЕМ ДОПОЛНИТЕЛЬНО ИСПОЛЬЗОВАТЬ ИНТЕРПРЕТАТОР PYTHON x32 ( ПОДРОБНЕЕ С М . ФУНКЦИЮ Configure ( ) )
@ -481,9 +488,11 @@ def UIOSelectorSecs_WaitDisappear_Bool (inSpecificationList,inWaitSecs):
: type inSpecificationList : list , обязательный
: param inWaitSecs : Количество секунд , которые отвести на исчезновение UIO объекта . По умолчанию 24 часа ( 86400 секунд )
: type inWaitSecs : float , необязательный
: param inFlagRaiseException : True - формировать ошибку exception , если платформа не обнаружина ни одного UIO объекта по заданному UIO селектору . False - обратный случай ( может привести к ошибочным результатам ) . По умолчанию True .
: type inFlagRaiseException : bool , опциональный
: return : True - UIO объект был обнаружен . False - обратная ситуациая
'''
lWaitDisappearList = UIOSelectorsSecs_WaitDisappear_List ( [ inSpecificationList ] , inWaitSecs )
lWaitDisappearList = UIOSelectorsSecs_WaitDisappear_List ( [ inSpecificationList ] , inWaitSecs ,inFlagRaiseException = inFlagRaiseException )
lResult = False
if len ( lWaitDisappearList ) > 0 :
lResult = True
@ -912,7 +921,7 @@ def UIO_GetCtrlIndex_Int(inElement):
return lResult
#old: - PywinautoExtElementsGetInfo
def UIOSelector_Get_UIOInfoList ( inUIOSelector , inElement = None ):
def UIOSelector_Get_UIOInfoList ( inUIOSelector , inElement = None , inFlagRaiseException = True ):
""" L-,W+: Техническая функция: Получить список параметров последних уровней UIO селектора по UIO объектам, которые удовлетворяют входящим inUIOSelector, поиск по которым будет производится от уровня inElement.
! ВНИМАНИЕ ! ДАННАЯ ФУНКЦИОНАЛЬНОСТЬ В АВТОМАТИЧЕСКОМ РЕЖИМЕ ПОДДЕРЖИВАЕТ В С Е РАЗРЯДНОСТИ ПРИЛОЖЕНИЙ ( 32 | 64 ) , КОТОРЫЕ ЗАПУЩЕНЫ В СЕСИИ . PYTHON x64 ИМЕЕТ ВОЗМОЖНОСТЬ ВЗЗАИМОДЕЙСТВИЯ С x32 UIO ОБЪЕКТАМИ , Н О МЫ РЕКОМЕНДУЕМ ДОПОЛНИТЕЛЬНО ИСПОЛЬЗОВАТЬ ИНТЕРПРЕТАТОР PYTHON x32 ( ПОДРОБНЕЕ С М . ФУНКЦИЮ Configure ( ) )
@ -929,13 +938,15 @@ def UIOSelector_Get_UIOInfoList (inUIOSelector, inElement=None):
: type inUIOSelector : list , обязательный
: param inElement : UIO объект , от которого выполнить поиск дочерних UIO объектов по UIO селектору inUIOSelector . По умолчанию None - поиск среди всех приложений .
: type inElement : UIO объект , необязательный
: param inFlagRaiseException : True - формировать ошибку exception , если платформа не обнаружина ни одного UIO объекта по заданному UIO селектору . False - обратный случай ( может привести к ошибочным результатам ) . По умолчанию True .
: type inFlagRaiseException : bool , опциональный
: 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
lSafeOtherProcess = UIOSelector_SafeOtherGet_Process ( inUIOSelector )
if lSafeOtherProcess is None :
#Получить родительский объект если на вход ничего не поступило
lResultList = UIOSelector_Get_UIOList ( inUIOSelector , inElement )
lResultList = UIOSelector_Get_UIOList ( inUIOSelector , inElement , inFlagRaiseException )
lIterator = 0
for lItem in lResultList :
lResultList [ lIterator ] = UIOEI_Convert_UIOInfo ( lResultList [ lIterator ] . element_info )
@ -989,7 +1000,7 @@ def UIOSelector_TryRestore_Dict(inSpecificationList):
return lResult
#old: - ElementActionGetList
def UIOSelector_Get_UIOActivityList ( inUIOSelector ):
def UIOSelector_Get_UIOActivityList ( inUIOSelector ,inFlagRaiseException = True ):
""" L-,W+: Получить список доступных действий/функций по UIO селектору inUIOSelector. Описание возможных активностей см. ниже.
! ВНИМАНИЕ ! ДАННАЯ ФУНКЦИОНАЛЬНОСТЬ В АВТОМАТИЧЕСКОМ РЕЖИМЕ ПОДДЕРЖИВАЕТ В С Е РАЗРЯДНОСТИ ПРИЛОЖЕНИЙ ( 32 | 64 ) , КОТОРЫЕ ЗАПУЩЕНЫ В СЕСИИ . PYTHON x64 ИМЕЕТ ВОЗМОЖНОСТЬ ВЗЗАИМОДЕЙСТВИЯ С x32 UIO ОБЪЕКТАМИ , Н О МЫ РЕКОМЕНДУЕМ ДОПОЛНИТЕЛЬНО ИСПОЛЬЗОВАТЬ ИНТЕРПРЕТАТОР PYTHON x32 ( ПОДРОБНЕЕ С М . ФУНКЦИЮ Configure ( ) )
@ -1004,12 +1015,14 @@ def UIOSelector_Get_UIOActivityList (inUIOSelector):
: param inUIOSelector : UIO селектор , который определяет UIO объект , для которого будет представлен перечень доступных активностей .
: type inUIOSelector : list , обязательный
: param inFlagRaiseException : True - формировать ошибку exception , если платформа не обнаружина ни одного UIO объекта по заданному UIO селектору . False - обратный случай ( может привести к ошибочным результатам ) . По умолчанию True .
: type inFlagRaiseException : bool , опциональный
"""
#Check the bitness
lSafeOtherProcess = UIOSelector_SafeOtherGet_Process ( inUIOSelector )
if lSafeOtherProcess is None :
#Получить объект
lObject = UIOSelector_Get_UIO ( inUIOSelector )
lObject = UIOSelector_Get_UIO ( inUIOSelector ,inFlagRaiseException = inFlagRaiseException )
lActionList = dir ( lObject )
lResult = dir ( lObject )
#Выполнить чистку списка от неактуальных методов
@ -1037,7 +1050,7 @@ def UIOSelector_Get_UIOActivityList (inUIOSelector):
return lResult
#old: - ElementRunAction
def UIOSelectorUIOActivity_Run_Dict ( inUIOSelector , inActionName , in ArgumentList= None , inkwArgumentObject = None ) :
def UIOSelectorUIOActivity_Run_Dict ( inUIOSelector , inActionName , in FlagRaiseException= True , in ArgumentList= None , inkwArgumentObject = None ) :
""" L-,W+: Выполнить активность inActionName над UIO объектом, полученным с помощью UIO селектора inUIOSelector. Описание возможных активностей см. ниже.
! ВНИМАНИЕ ! ДАННАЯ ФУНКЦИОНАЛЬНОСТЬ В АВТОМАТИЧЕСКОМ РЕЖИМЕ ПОДДЕРЖИВАЕТ В С Е РАЗРЯДНОСТИ ПРИЛОЖЕНИЙ ( 32 | 64 ) , КОТОРЫЕ ЗАПУЩЕНЫ В СЕСИИ . PYTHON x64 ИМЕЕТ ВОЗМОЖНОСТЬ ВЗЗАИМОДЕЙСТВИЯ С x32 UIO ОБЪЕКТАМИ , Н О МЫ РЕКОМЕНДУЕМ ДОПОЛНИТЕЛЬНО ИСПОЛЬЗОВАТЬ ИНТЕРПРЕТАТОР PYTHON x32 ( ПОДРОБНЕЕ С М . ФУНКЦИЮ Configure ( ) )
@ -1054,6 +1067,8 @@ def UIOSelectorUIOActivity_Run_Dict(inUIOSelector, inActionName, inArgumentList=
: type inUIOSelector : list , обязательный
: param inActionName : наименование активности , которую требуется выполнить над UIO объектом
: type inActionName : str , обязательный
: param inFlagRaiseException : True - формировать ошибку exception , если платформа не обнаружина ни одного UIO объекта по заданному UIO селектору . False - обратный случай ( может привести к ошибочным результатам ) . По умолчанию True .
: type inFlagRaiseException : bool , опциональный
: param inArgumentList : список передаваемых неименованных аргументов в функцию inActionName
: type inArgumentList : list , необязательный
: param inkwArgumentObject : словарь передаваемых именованных аргументов в функцию inActionName
@ -1068,7 +1083,7 @@ def UIOSelectorUIOActivity_Run_Dict(inUIOSelector, inActionName, inArgumentList=
#Run activity if SafeOtherProcess is None
if lSafeOtherProcess is None :
#Определить объект
lObject = UIOSelector_Get_UIO ( inUIOSelector )
lObject = UIOSelector_Get_UIO ( inUIOSelector ,inFlagRaiseException = inFlagRaiseException )
#Получить метод для вызова
lFunction = getattr ( lObject , inActionName )
#Выполнить действие