Pywinauto - 如何阅读弹出窗口中的文本 window 来识别它?
Pywinauto - How to read the text within a pop up window to identify it?
我正在尝试远程控制 windows 应用程序,该应用程序有时会在使用 pywinauto 启动时显示警告 window。
下面的代码识别 window 因为它没有菜单。
我想阅读弹出文本以在弹出窗口 window 中查找短语 "Please contact your system administrator." 以了解它是
对了
mywindows = pywinauto.findwindows.find_windows(title_re=".*MyProgramTitle")
# proof that two windows are found
print(len(mywindows))
for handle in mywindows:
print('\nhandle {}'.format(handle))
app = Application().connect(handle=handle)
navwin = app.window(handle=handle )
if not navwin.menu_items():
# no menu - I bet it's a pop up
print('{} is the window I\'m looking for'.format(handle))
navwin.print_control_identifiers()
以上代码打印出所有windows信息,包括
"Static - 'Location mapping failed. Please contact your system administrator.'"
但我需要捕获该打印输出以进一步处理它。
作为一个 hacky 解决方案,我查看了源代码
print_control_identifiers()
并发现这种循环遍历 window
控件的方法
navwin.print_control_identifiers()
for x in navwin.descendants():
print (x.window_text())
print (x.class_name())
find_windows
是非常低级的自动化入口点。使用 WindowSpecification 对象,您可以等待打开所需 dialog/control 或仅检查它是否存在(所有这些都具有自定义超时)。
在 Getting Started Guide 中查看更详细的解释。
您可以使用 exists()
或 visible()
方法(return 布尔值)而不是 wait('exists')
或 wait('visible')
,如果失败会引发异常。
你的情况可能是这样的:
static = app.DialogName.child_window(title_re='.*Please contact your system administrator.',
class_name_re='Static')
if static.exists(timeout=20): # if it opens no later than 20 sec.
app.DialogName.OK.click()
我正在尝试远程控制 windows 应用程序,该应用程序有时会在使用 pywinauto 启动时显示警告 window。
下面的代码识别 window 因为它没有菜单。
我想阅读弹出文本以在弹出窗口 window 中查找短语 "Please contact your system administrator." 以了解它是 对了
mywindows = pywinauto.findwindows.find_windows(title_re=".*MyProgramTitle")
# proof that two windows are found
print(len(mywindows))
for handle in mywindows:
print('\nhandle {}'.format(handle))
app = Application().connect(handle=handle)
navwin = app.window(handle=handle )
if not navwin.menu_items():
# no menu - I bet it's a pop up
print('{} is the window I\'m looking for'.format(handle))
navwin.print_control_identifiers()
以上代码打印出所有windows信息,包括 "Static - 'Location mapping failed. Please contact your system administrator.'"
但我需要捕获该打印输出以进一步处理它。
作为一个 hacky 解决方案,我查看了源代码
print_control_identifiers()
并发现这种循环遍历 window
navwin.print_control_identifiers()
for x in navwin.descendants():
print (x.window_text())
print (x.class_name())
find_windows
是非常低级的自动化入口点。使用 WindowSpecification 对象,您可以等待打开所需 dialog/control 或仅检查它是否存在(所有这些都具有自定义超时)。
在 Getting Started Guide 中查看更详细的解释。
您可以使用 exists()
或 visible()
方法(return 布尔值)而不是 wait('exists')
或 wait('visible')
,如果失败会引发异常。
你的情况可能是这样的:
static = app.DialogName.child_window(title_re='.*Please contact your system administrator.',
class_name_re='Static')
if static.exists(timeout=20): # if it opens no later than 20 sec.
app.DialogName.OK.click()