Как прочитать название заголовка с помощью Pywinauto

Как прочитать название заголовка ниже, это код

from pywinauto.application import *
import time
app=Application.Start("apps.exe")
app.window_(title="aps a.b.c.d")
time.sleep(2)

После этого кода выдается ошибка типа window is not found.

Итак, мой вопрос в том, как передать aps a.b.c.d в заголовок окна.


person user1575730    schedule 07.08.2012    source источник
comment
Не совсем понятно, что вы пытаетесь здесь сделать, поскольку предоставленный вами код не вызывает никаких ошибок (я пробовал его с помощью Notepad.exe, и он работает). Что именно вы пытаетесь сделать здесь, и что не работает? Можете ли вы предоставить код, который показывает ошибку?   -  person Raceyman    schedule 07.08.2012
comment
У меня есть экран с именем aps a.b.c.d, когда я работаю с приведенным выше кодом, выдающим ошибку. Окно не найдено.   -  person user1575730    schedule 08.08.2012
comment
@user157530 user157530 Тогда здесь должно быть что-то еще, но вы не предоставили много данных для работы. Какой точный текст ошибки? Какую версию Python вы используете? Какую версию pywinauto вы используете? Какую версию Windows вы используете?   -  person Raceyman    schedule 08.08.2012


Ответы (1)


Я заметил, что 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