@ -558,14 +558,23 @@ def Get_OSBitnessInt ():
if pywinauto . sysinfo . is_x64_OS ( ) :
lResult = 64
return lResult
# ################################################################################################
# old: -
def UIOSelector_SafeOtherGet_Process ( inUIOSelector ) :
'''
Safe get other process or None if destination app is the other / same bitness
"""
Получить процесс робота другой разрядности ( если приложение UIO объекта выполняется в другой разрядности ) . Функция возвращает None , если разрядность робота совпадает с разрядностью приложения UIO объекта , либо если при инициализации робота не устанавливался интерпретатор другой разрядности .
: param inUIOSelector : UIO Selector of the UI object
: return : None or process ( of the other bitness )
'''
. . code - block : : python
# UIDesktop: Взаимодействие с UI объектами приложений
from pyOpenRPA . Robot import UIDesktop
# 1С : UIO Селектор выбора базы
lDemoBaseUIOSelector = [ { " title " : " Запуск 1С :Предприятия " , " class_name " : " V8TopLevelFrameTaxiStarter " , " backend " : " uia " } , { " title " : " DEMO " , " depth_start " : 5 , " depth_end " : 5 } ]
lOtherBitnessProcess = UIDesktop . UIOSelector_SafeOtherGet_Process ( lDemoBaseUIOSelector ) # Вернуть процесс робота, схожей разрядности
: param inUIOSelector : UIO селектор , который определяет критерии поиска UIO объекта
: type inUIOSelector : list , обязательный
: return : Процесс робота схожей разрядности
"""
#Default value
lResult = None
#Go check bitness if selector exists
@ -575,15 +584,44 @@ def UIOSelector_SafeOtherGet_Process(inUIOSelector):
if lUIOSelectorAppBitness and Utils . ProcessBitness . mSettingsDict [ " BitnessProcessCurrent " ] != lUIOSelectorAppBitness :
lResult = Utils . ProcessBitness . OtherProcessGet ( )
return lResult
# #################################################################################################
# old: GetControl
def PWASpecification_Get_UIO ( inControlSpecificationArray ) :
'''
#Backend def selection - attribute "backend" ("win32" || "uia") in 1-st list element
#old name - GetControl
"""
Получить UIO объект по PWA ( pywinauto ) селектору . ( https : / / pywinauto . readthedocs . io / en / latest / code / pywinauto . findwindows . html ) . Мы рекомендуем использовать метод UIOSelector_UIO_Get , так как UIO селектор обладает большей функциональностью .
: param inControlSpecificationArray : List of dict , dict in pywinauto . find_windows notation
: return : list of UIO object
'''
. . code - block : : python
# UIDesktop: Взаимодействие с UI объектами приложений
from pyOpenRPA . Robot import UIDesktop
# 1С : UIO Селектор выбора базы
lDemoBaseUIOSelector = [ { " title " : " Запуск 1С :Предприятия " , " class_name " : " V8TopLevelFrameTaxiStarter " , " backend " : " uia " } ]
lUIOObject = UIDesktop . PWASpecification_Get_UIO ( lDemoBaseUIOSelector ) # Получить UIO объект по PWA селектору
: param inControlSpecificationArray : PWA селектор , который определяет критерии поиска UIO объекта
Допустимые ключи PWA селектора :
- class_name содержимое атрибута class UIO объекта
- class_name_re содержимое атрибута class UIO объекта , которое удовлетворяет установленному р е г . выражению
- process идентификатор процесса , в котором находится UIO объект
- title содержимое атрибута title UIO объекта
- title_re содержимое атрибута title UIO объекта , которое удовлетворяет установленному р е г . выражению
- top_level_only признак поиска только на верхнем уровне приложения . По умолчанию True
- visible_only признак поиска только среди видимых UIO объектов . По умолчанию True
- enabled_only признак поиска только среди разблокированных UIO объектов . По умолчанию False
- best_match содержимое атрибута title UIO объекта максимально приближено к заданному
- handle идентификатор handle искомого UIO объекта
- ctrl_index индекс UIO объекта среди всех дочерних объектов в списке родительского
- found_index индекс UIO объекта среди всех обнаруженных
- predicate_func пользовательская функция проверки соответсвия UIO элемента
- active_only признак поиска только среди активных UIO объектов . По умолчанию False
- control_id идентификатор control_id искомого UIO объекта
- control_type тип элемента ( применимо , если backend == " uia " )
- auto_id идентификатор auto_id искомого UIO объекта ( применимо , если backend == " uia " )
- framework_id идентификатор framework_id искомого UIO объекта ( применимо , если backend == " uia " )
- backend вид технологии подключения к поиску UIO объекта ( " uia " или " win32 " )
: type inControlSpecificationArray : list , обязательный
: return : UIO объект
"""
#Определение backend
lBackend = mDefaultPywinautoBackend
if " backend " in inControlSpecificationArray [ 0 ] :
@ -629,14 +667,44 @@ def PWASpecification_Get_UIO(inControlSpecificationArray):
#Добавить объект в результирующий массив
lResultList . append ( lTempObject )
return lResultList
##################################################################################################
def PWASpecification_Get_PWAApplication ( inControlSpecificationArray ) :
'''
#Backend selection - attribute "backend" ("win32" || "uia") in 1-st list element
"""
Получить значение атрибута backend по PWA ( pywinauto ) селектору . Мы рекомендуем использовать метод UIOSelector_UIO_Get , так как UIO селектор обладает большей функциональностью .
: param inControlSpecificationArray : List of dict , dict in pywinauto . find_windows notation
: return : process application object
'''
. . code - block : : python
# UIDesktop: Взаимодействие с UI объектами приложений
from pyOpenRPA . Robot import UIDesktop
# 1С : UIO Селектор выбора базы
lDemoBaseUIOSelector = [ { " title " : " Запуск 1С :Предприятия " , " class_name " : " V8TopLevelFrameTaxiStarter " , " backend " : " uia " } ]
lBackendStr = UIDesktop . PWASpecification_Get_PWAApplication ( lDemoBaseUIOSelector ) # Получить backend по PWA селектору
: param inControlSpecificationArray : PWA селектор , который определяет критерии поиска UIO объекта
Допустимые ключи PWA селектора :
- class_name содержимое атрибута class UIO объекта
- class_name_re содержимое атрибута class UIO объекта , которое удовлетворяет установленному р е г . выражению
- process идентификатор процесса , в котором находится UIO объект
- title содержимое атрибута title UIO объекта
- title_re содержимое атрибута title UIO объекта , которое удовлетворяет установленному р е г . выражению
- top_level_only признак поиска только на верхнем уровне приложения . По умолчанию True
- visible_only признак поиска только среди видимых UIO объектов . По умолчанию True
- enabled_only признак поиска только среди разблокированных UIO объектов . По умолчанию False
- best_match содержимое атрибута title UIO объекта максимально приближено к заданному
- handle идентификатор handle искомого UIO объекта
- ctrl_index индекс UIO объекта среди всех дочерних объектов в списке родительского
- found_index индекс UIO объекта среди всех обнаруженных
- predicate_func пользовательская функция проверки соответсвия UIO элемента
- active_only признак поиска только среди активных UIO объектов . По умолчанию False
- control_id идентификатор control_id искомого UIO объекта
- control_type тип элемента ( применимо , если backend == " uia " )
- auto_id идентификатор auto_id искомого UIO объекта ( применимо , если backend == " uia " )
- framework_id идентификатор framework_id искомого UIO объекта ( применимо , если backend == " uia " )
- backend вид технологии подключения к поиску UIO объекта ( " uia " или " win32 " )
: type inControlSpecificationArray : list , обязательный
: return : " win32 " или " uia "
"""
inControlSpecificationArray = copy . deepcopy ( inControlSpecificationArray )
#Определение backend
lBackend = mDefaultPywinautoBackend
@ -666,16 +734,23 @@ def PWASpecification_Get_PWAApplication(inControlSpecificationArray):
#Скорректировано из-за недопонимания структуры
lTempObject = lRPAApplication
return lTempObject
###########################################################################################################
#old: AutomationSearchMouseElement
def UIOSelector_SearchChildByMouse_UIO ( inElementSpecification ) :
'''
UIOSelector ( see description on the top of the document )
#old name - AutomationSearchMouseElement
"""
Инициировать визуальный поиск UIO объекта с помощью указателя мыши . При наведении указателя мыши UIO объект выделяется зеленой рамкой . Остановить режим поиска можно с помощью зажима клавиши ctrl left на протяжении нескольких секунд . После этого в веб окне студии будет отображено дерево расположения искомого UIO объекта .
: param inElementSpecification : UIOSelector of the UI Object
: return : pywinauto element wrapper instance or None
'''
. . code - block : : python
# UIDesktop: Взаимодействие с UI объектами приложений
from pyOpenRPA . Robot import UIDesktop
# 1С : UIO Селектор выбора базы
lDemoBaseUIOSelector = [ { " title " : " Запуск 1С :Предприятия " , " class_name " : " V8TopLevelFrameTaxiStarter " , " backend " : " uia " } ]
lUIO = UIDesktop . UIOSelector_SearchChildByMouse_UIO ( lDemoBaseUIOSelector ) # Инициировать поиск дочернего UIO объекта, который расположен внутри lDemoBaseUIOSelector.
: param inElementSpecification : UIO селектор , который определяет критерии поиска родительского UIO объекта , в котором будет производиться поиск дочернего UIO объекта
: type inElementSpecification : list , обязательный
: return : UIO объект или None ( если UIO не был обнаружен )
"""
lGUISearchElementSelected = None
#Настройка - частота обновления подсвечивания
lTimeSleepSeconds = 0.4
@ -713,15 +788,26 @@ def UIOSelector_SearchChildByMouse_UIO(inElementSpecification):
#Вернуть результат поиска
return lElementFoundedList
####################################################################################################
#old name - AutomationSearchMouseElementHierarchy
#old: - AutomationSearchMouseElementHierarchy
def UIOSelector_SearchChildByMouse_UIOTree ( inUIOSelector ) :
'''
! ! ! ! Safe call is included ( you can set activity and UIDesktop will choose the bitness and return the result ) ! ! ! ! !
"""
Получить список уровней UIO объекта с указнием всех имеющихся атрибутов по входящему UIO селектору .
! ВНИМАНИЕ ! ДАННАЯ ФУНКЦИОНАЛЬНОСТЬ В АВТОМАТИЧЕСКОМ РЕЖИМЕ ПОДДЕРЖИВАЕТ В С Е РАЗРЯДНОСТИ ПРИЛОЖЕНИЙ ( 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 " } ]
lBackendStr = UIDesktop . UIOSelector_SearchChildByMouse_UIOTree ( lDemoBaseUIOSelector ) # Получить список атрибутов всех родительских элементов lDemoBaseUIOSelector.
: param inUIOSelector : UIO селектор , который определяет UIO объект , для которого будет произведено извлечение всех атрибутов на всех уровнях .
: type inUIOSelector : list , обязательный
: return : list , список атрибутов на каждом уровне UIO объекта
"""
: param inUIOSelector : UIOSelector of the UI Object
: return : ?
'''
lItemInfo = [ ]
#Check the bitness
lSafeOtherProcess = UIOSelector_SafeOtherGet_Process ( inUIOSelector )