Сценарии pywinauto работают по-разному при выполнении запроса файла к cmd - PullRequest
0 голосов
/ 05 июня 2018

Я новичок в python & pywinauto и пытаюсь сделать скрипт для приложения Windows.Но сценарии работают по-разному в исполняемом файле («python test.py») и cmd.

Вот код.

import pywinauto

app = pywinauto.application.Application()
app.start(r"C:\customPrograms\ControlStation.exe")

app.window(title_re=u'Login').Wait('visible', timeout=60, retry_interval=1)

dlg = app.Login
dlg.Edit1.TypeKeys("testSuper")
dlg.PasswordEdit.TypeKeys("test")
dlg.OK.SetFocus()
dlg.OK.click()

app.window(title_re=u'Room select').Wait('visible', timeout=60, 
retry_interval=1)

roomdlg = app.Roomselect
roomdlg.Connect.click()

app = pywinauto.Application().connect(title='tmpSuper - local')
app.testSuper.MenuBar.MenuBarClickInput('#4->#1->#0', app)
app.testSuper.People.click()

, когда я запускаю этот сценарий в виде файла (тест Python.py), у меня ошибка как ссылка. введите описание изображения здесь

Когда я запускал скрипты один за другим в CMD, ошибки не было.это работает отлично. введите описание изображения здесь

В чем разница между этими двумя способами?Каков наилучший способ выполнения сценариев автоматизации?

К вашему сведению, я использую python 3.6 и pywinauto 0.6.4

Спасибо заранее за вашу помощь!

1 Ответ

0 голосов
/ 06 июня 2018

Это типичная проблема синхронизации (вы не можете воспроизвести ее шаг за шагом, потому что есть задержка между выполнением шагов вручную).roomdlg.Connect.click() ожидает существующую кнопку «Подключить», но не включенного состояния.Таким образом, сообщение об ошибке имеет смысл.

Решение должно быть таким:

roomdlg.Connect.wait("enabled") # timeout is optional param, default is 5 sec.
roomdlg.Connect.click()

В некоторых приложениях могут быть проблемы, такие как отложенная подписка обработчиков OnClick(), даже если кнопка уже включена.В этом случае вам может потребоваться app.wait_cpu_usage_lower(), чтобы указать, что загрузка ЦП процесса приложения ниже порогового значения.

Текущий документ о таймингах находится здесь: https://pywinauto.readthedocs.io/en/latest/wait_long_operations.html (хотя его необходимо расширить с помощью настроек глобальных таймингов).

...