Я заметил, что pywinauto может вызывать очень тонкие ошибки синхронизации. Если это ваша проблема, это даже не плохо.
Тот факт, что процесс был запущен, не означает, что окно существует и полностью сформировано. ваш сон должен быть после Application.Start(). Но это небрежное решение, которое не будет работать на всех системах во всех ситуациях.
Я прибегал к использованию len(pwa_app.windows_()) и pwa_app.top_window_(), чтобы убедиться, что приложение находится в нужном мне состоянии.
Это, однако, имеет свои недостатки. кажется, что функции для функций могут вызывать исключения при создании или уничтожении окна. Поэтому вместо обычного вызова time.sleep() я обычно использую что-то вроде этого.
#Do While Loop; continuous retry on exception
condition = True
while condition:
try:
window_count = len( app.windows_() )
except:
continue
if window_count == num:
condition = False
else:
time.sleep( WAITTIME )
Я был бы рад, если бы кто-нибудь мог объяснить мне лучший метод. Я не смог найти упоминания об этих проблемах в документации. Хотя это не элегантно и нагружает ЦП, оно работает в 100% случаев.
ИЗМЕНИТЬ
Просматривая Stack Overflow, я обнаружил, что pywinauto предоставляет функцию . это делает точно то, что делает мой пример.
person
8bitwide
schedule
16.11.2013