使用 pywinauto,如何获取静态文本的文本 object,给定 parent 对话框的句柄

Using pywinauto, how do I get Text of static text object, given the handle of the parent dialog

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 ('##########')  

输出:
##########
Child: < pywinauto.controls.HwndWrapper.HwndWrapper object 在 0x02C12890>
Child: < pywinauto.controls.win32_controls.ButtonWrapper object 在 0x02C12870>
Child: < pywinauto.controls.HwndWrapper.HwndWrapper object 在 0x02C128B0>
Child: < pywinauto.controls.win32_controls.StaticWrapper object 在 0x02C128F0>
##########

我想要 Child 的文本:pywinauto.controls.win32_controls.StaticWrapper object at 0x02C128F0>。为此,我需要该静态文本的句柄。我假设我应该能够从 parent 对话框中获取静态文本的句柄,但我不知道如何获取。我知道一旦我有了句柄,我就可以使用 window.Texts()。

提前为我的问题的格式道歉,首先在这里计时。感谢您的任何帮助。

您为什么不尝试使用 pywinauto 内置名称解析来定位您的 "Static"?假设我有 运行 计算器应用程序,其结果显示文本“78”。我连接到应用程序并开始在 "Calculator" 对话框中寻找 "Static" 元素。因为我不知道确切的名字,所以我只是试着猜一下。我画出不同颜色的调试轮廓,直到找到我需要的控件。找到控件后,我可以轻松阅读其文本。 (阅读 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']