pywinauto: использование более одного окна приложения - PullRequest
2 голосов
/ 14 мая 2010

У меня есть приложение с графическим интерфейсом, которое может создавать много похожих окон на рабочем столе. Все окна имеют одинаковый заголовок. Я должен перечислить все диалоги с одинаковыми заголовками и провести несколько тестов для каждого из таких диалогов.

Если я позвоню:

dialog = app['Window Name']

pywinauto возвращает объект WindowSpecification, который полезен наряду с доступом к элементам управления по имени.

Когда я звоню:

dialogs = app.windows_(title='Window Name')

pywinauto возвращает мне список экземпляров HwndWrapper, которые не очень полезны.

Как получить список окон с указанным заголовком, но в виде объектов WindowSpecification?

1 Ответ

4 голосов
/ 15 мая 2010

Вы не можете на самом деле.Спецификация WindowSpecification - это единая спецификация для всех окон, которые соответствуют предоставленным критериям.Когда вы работаете с экземпляром WindowSpecification, вы часто взаимодействуете с экземпляром HwndWrapper, который WindowSpecification находит для вас и получает к нему доступ.

Поэтому я думаю, что ответом является работа с HwndWrapper, возвращенным app.windows_ () (аналогичнок единственному HwndWrapper, возвращенному WindowSpecification.WrapperObject ()

Примечание. Если вы всегда пытаетесь сузить список окон, просматривая определенные элементы управления в окне, - затем используйте app ['Window Name'] [«Уникальное имя элемента управления»]. Parent () должен возвращать окно.

Основное различие между WindowSpecification и HwndWrapper состоит в том, что WindowSpecification еще не существует, а экземпляр HwndWrapper отражает конкретный дескриптор нижележащего окна.Это позволяет WindowSpecification реализовывать код, который ожидает окна или проверяет их наличие.

...