#python #wpf #automation #pywinauto #inspect
#python #wpf #автоматизация #pywinauto #Осмотр
Вопрос:
Пытаюсь автоматизировать серверную часть приложения wpf = uia, для индикатора выполнения мне нужно получить динамически изменяющийся атрибут «value», но когда я использовал window_text(), я получаю «, затем я попытался передать управление в этой оболочке, pywinauto.application.controls.uia_controls.UIAElementInfo(ctrl).name
получив эту ошибку TypeError("UIAElementInfo object can be initialized " "with integer or IUIAutomationElement instance only!
) и, наконец, попытался передать элемент в следующий класс Progresswrapper pywinauto.controls.common_controls.ProgressWrapper(element_info).get_position()
я получаю, что element_info должен быть hwndwrapper.
это мой код app.py
-
запустите app.exe
app = pywinauto.application.Application(backend='uia').start('app.exe')
-
идентификация окна
wind = app.window(auto_id="someid")
-
поиск элемента управления индикатором выполнения
ctrl = wind.window(auto_id='progress')
-
получение текста индикатора выполнения элемента управления
ctrl.window_text()
Ответ №1:
Метод ctrl.get_value()
— это то, что вам нужно. Вам не следует пытаться создавать оболочки вручную, если вы не знаете, что делаете.
Комментарии:
1. Что, если это не сработает? Для
ListItemWrapper
я получаюAttributeError: 'ListItemWrapper' object has no attribute 'value'
. Однако, Inspect.exe показывает правильное значение.2. Метод
.get_value()
и свойствоValue
имеют разные имена. Пожалуйста, отредактируйте свой вопрос, добавив больше кода, который вы пытаетесь. Имена методов Pywinauto не обязательно должны быть такими же, как в Inspect.exe .3. Также, пожалуйста, переключите Inspect.exe в режим автоматизации пользовательского интерфейса из MSAA.
4. Хм, интересно. Да,
get_value
работает нормально, спасибо!