Вопрос:
1. Мой код:
print (‘##########’) app = pywinauto.application.Application() window_handle = pywinauto.findwindows.find_windows(title = u’My Dialog Name’) my_handle = window_handle[0] window = app.window_(handle = my_handle) for x in window.Children(): print (‘Child %s’ % x) print (‘##########’)
Вывод:
##########
Ребенок: < pywinauto.controls.HwndWrapper.HwndWrapper объект на 0x02C12890 >
Ребенок: < pywinauto.controls.win32_controls.ButtonWrapper объект на 0x02C12870 >
Ребенок: < pywinauto.controls.HwndWrapper.HwndWrapper объект на 0x02C128B0 >
Ребенок: < объект pywinauto.controls.win32_controls.StaticWrapper на 0x02C128F0 >
##########
Мне нужен текст Child: pywinauto.controls.win32_controls.StaticWrapper на 0x02C128F0 > . Для этого мне нужен дескриптор этого статического текста. Я предполагаю, что я должен иметь возможность выводить дескриптор статического текста из родительского диалога, но я понятия не имею, как это сделать. Я знаю, что как только у меня будет дескриптор, я могу просто использовать window.Texts().
Извините заранее за форматирование моего вопроса, сначала выбрав его здесь. Спасибо за любую помощь.
Лучший ответ:
Почему бы вам не попытаться найти свой “статический” с разрешением имени встроенного имени pywinauto? Скажем, у меня есть приложение “Калькулятор” с текстом “78” по его результату. Я подключаюсь к приложению и начинаю искать элемент “Статический” в диалоговом окне “Калькулятор”. Поскольку я не знаю точное имя, я просто пытаюсь это угадать. Я рисую свои отладочные контуры разных цветов, пока не найду необходимый элемент управления. После того, как я нашел элемент управления, я могу легко прочитать его текст. (Подробнее о pywinauto docs here об указании элементов управления в диалоговом окне.)
In [1]: from pywinauto.application import Application In [2]: app = Application() In [3]: app.connect(path=»calc.exe») Out[3]: <pywinauto.application.Application at 0x54362b0> In [4]: app.Calculator.Static.DrawOutline() Out[4]: In [5]: app.Calculator.Static2.DrawOutline(«red») Out[5] In [6]: app.Calculator.Static3.DrawOutline(«blue») Out[6] In [7]: app.Calculator.Static3.Texts() Out[7]: [u’78’]