Тест PyWinAuto GUI - PullRequest
       39

Тест PyWinAuto GUI

0 голосов
/ 25 августа 2018

В моей текущей работе мне нужно автоматизировать тесты для стороннего приложения для логического программирования на базе Windows.1) Я хочу запустить приложение, 2) Указать окно для работы, 3) Найти все элементы управления и свойства 4) Наконец, получить выходные значения из элементов управления Может кто-нибудь, пожалуйста, помогите?Спасибо!

Вот мой код:

#import the pywinauto.application module
from pywinauto.application import Application 
# create an applicaiton instance and execute the application
app = Application(backend="uia").start('calc.exe')  
# creating window specification
dlg_spec = app.window(title='Calculator')
# window lookup to deal with the window/control
dlg_spec.wrapper_object().minimize()
dlg_spec.minimize()
# Printing the control identifiers
app.Properties.print_control_identifiers()

Я получаю TimeoutError и ElementNotFoundError (в строке 4)

1 Ответ

0 голосов
/ 01 сентября 2018

Калькулятор немного сложнее на данный момент (ууу!). Реализация Windows 10 calc.exe создает другой процесс. Я могу сказать больше: его иерархия элементов управления пользовательским интерфейсом не вписывается в границы одного процесса (на самом деле): для одного приложения существует несколько процессов. У нас есть планы по обнаружению нового процесса нереста при запуске приложения, но он еще не в Pywinauto. Но углубление в .children() или .descendants() следует всей иерархии через границы процесса (единственная важная вещь: кто является родителем).

Текущий пример для calc.exe выглядит так (см. Последние win10_calculator.py в репо):

from pywinauto import Desktop, Application

app = Application(backend="uia").start('calc.exe')

dlg = Desktop(backend="uia").Calculator # window specification
dlg.type_keys('2*3=')
dlg.print_control_identifiers() # this is also window spec method

dlg.minimize()
# minimized window needs some tricks to find it and restore
Desktop(backend="uia").window(title='Calculator', visible_only=False).restore()
...