Pywinauto (Win32) не найдет редактирование, пока я вручную нажимаю на него - как заставить скрытый элемент управления длPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Pywinauto (Win32) не найдет редактирование, пока я вручную нажимаю на него - как заставить скрытый элемент управления дл

Сообщение Anonymous »

Я автоматизирую устаревшее приложение Win32 с бэкэнд Pywinauto Win32. Когда я сбрасываю дерево управления, я вижу, что на панели существует элемент управления редактированием с именем edit62 , но любая попытка получить доступ к нему не сработает с помощью elementnotfounderror - до тех пор, пока я вручную нажимаю или вкладывает в свою родительку. Только после этого взаимодействия Dean Panel.edit62 становятся видимыми для Pywinauto.from pywinauto import Application

# Connect to the running app
app = Application(backend="win32").connect(title_re="Domínio Folha.*")
main_win = app.window(title_re="Domínio Folha.*")

# Locate the “Cadastro de Empregados” panel
panel = main_win.child_window(
title="Cadastro de Empregados",
class_name="FNWND3190"
)

# Print identifiers at depth=3
panel.print_control_identifiers(depth=3)
< /code>
Выходной фрагмент (только кнопки появляются на глубине 3): < /p>
| pbdw190 - '' (L491, T266, R1449, B344)
| ['|
| child_window(class_name="pbdw190")
| |
| | Edit - '' (L491, T266, R491, B266)
| | ['Edit62']
| | child_window(class_name="Edit")
| |
| | Edit - '' (L491, T266, R491, B266)
| | ['Edit63']
| | child_window(class_name="Edit")
| |
| | PBEDIT190 - '928' (L401, T249, R491, B267)
| | ['928', '928PBEDIT190', 'PBEDIT190139']
| | child_window(title="928", class_name="PBEDIT190")

< /code>
Затем я попробую: < /p>
# This raises ElementNotFoundError
panel.Edit62.wait('exists ready', timeout=5)
< /code>
Но если я вручную нажимаю или нажимаю вкладку, чтобы настоящий пользовательский интерфейс сосредоточился на этом регионе, то панель.edit62 успешно разрешается. < /p>
Что я попробовал: < /p>
panel.set_focus() and even Win32’s SetForegroundWindow
< /code>
Увеличение тайм -аутов < /p>
wrapper.invalidate_cache()
< /code>
Ни один из них не дает Edit62, пока я физически нажимаю на панель. EDIT62 Control (и другие динамически загруженные дети), чтобы стать видимым в Pywinauto без ручного клика или вкладки? Существует ли рекомендуемый вызов API или последовательность сообщений для отправки, поэтому приложение загружает это управление заранее?
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/796 ... ce-a-hidde
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»