使用pywinauto,在给定父对话框的句柄的情况下,如何获取静态文本对象的Text

时间:2016-09-29 00:01:27

标签: python-2.7 childwindow pywinauto

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()。

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

1 个答案:

答案 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']