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()。
提前为我的问题格式化道歉,首先在这里计时。感谢您的任何帮助。
答案 0 :(得分:2)
为什么不尝试使用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']