Pywinauto 未检测到新的 Window 跟进问题
Pywinauto Doesn't Detect New Window Follow Up Question
指的是回答这个问题
我有一个类似的问题,我点击“新建”按钮后出现 window 输入内容。
我的问题是这个新 window 没有在 print_control_identifiers() 中列出。以下是我到目前为止的全部代码,直到新的 window 弹出窗口
app = Application(backend="uia").connect(title_re="Celestica SpectrumPro.*", timeout=20)
dlg = app.window(title_re="Celestica SpectrumPro.*")
app.dlg.Edit2.type_keys("XXXXXXX")
app.dlg.Edit.type_keys("YYYYYY")
app.dlg.Login.click()
app.dlg.wait("exists enabled visible ready")
app.dlg.New.click()
在最后一行之后,现在我必须获取刚刚弹出的新child window。
下面是尝试#1 及其错误
newDLG = app.window(title="SHOP ORDER Configuration")
dlg.newDLG.print_control_identifiers()\
pywinauto.findwindows.ElementNotFoundError: {'title_re': 'Celestica SpectrumPro.*', 'backend': 'uia', 'process': 12244}
下面是尝试#2 及其错误
newDLG = dlg.window(title="SHOP ORDER Configuration")
app.dlg.newDLG.print_control_identifiers()
pywinauto.findbestmatch.MatchError: Could not find 'newDLG' in 'dict_keys(['Button', 'SpectrumPro WEBButton', 'SpectrumPro WEB',.......])
尝试#3 是当我尝试参考堆栈溢出问题的解决方案时遇到同样的问题
newDLG = app.dlg.child_window(title="SHOP ORDER Configuration")
app.dlg.newDLG.print_control_identifiers()
pywinauto.findbestmatch.MatchError: Could not find 'newDLG' in 'dict_keys(['Button', 'SpectrumPro WEBButton', 'SpectrumPro WEB',....])
当我使用 Inspect.exe 时,有新的 window 按钮、文本输入等的详细信息。但它们不存在于 Inspect.exe 树中。所以我不知道这个新window的parent是谁。
有谁知道我如何连接到这个弹出的新window
我找到了解决方案,以防有人遇到同样的问题
我必须使用新的 application().connect 连接新的 window,因为只有这个新表单 window 使用 win32 后端。
newApp = Application(backend="win32").connect(title_re="SHOP ORDER.*")
之后我仍然无法找到 window 使用下面的方法
newDLG = app.window(title_re="SHOP ORDER Configuration")
我不得不使用魔法属性名称来获取 window
newApp.SHOPORDERConfiguration.print_control_identifiers()
指的是回答这个问题
我有一个类似的问题,我点击“新建”按钮后出现 window 输入内容。 我的问题是这个新 window 没有在 print_control_identifiers() 中列出。以下是我到目前为止的全部代码,直到新的 window 弹出窗口
app = Application(backend="uia").connect(title_re="Celestica SpectrumPro.*", timeout=20)
dlg = app.window(title_re="Celestica SpectrumPro.*")
app.dlg.Edit2.type_keys("XXXXXXX")
app.dlg.Edit.type_keys("YYYYYY")
app.dlg.Login.click()
app.dlg.wait("exists enabled visible ready")
app.dlg.New.click()
在最后一行之后,现在我必须获取刚刚弹出的新child window。 下面是尝试#1 及其错误
newDLG = app.window(title="SHOP ORDER Configuration")
dlg.newDLG.print_control_identifiers()\
pywinauto.findwindows.ElementNotFoundError: {'title_re': 'Celestica SpectrumPro.*', 'backend': 'uia', 'process': 12244}
下面是尝试#2 及其错误
newDLG = dlg.window(title="SHOP ORDER Configuration")
app.dlg.newDLG.print_control_identifiers()
pywinauto.findbestmatch.MatchError: Could not find 'newDLG' in 'dict_keys(['Button', 'SpectrumPro WEBButton', 'SpectrumPro WEB',.......])
尝试#3 是当我尝试参考堆栈溢出问题的解决方案时遇到同样的问题
newDLG = app.dlg.child_window(title="SHOP ORDER Configuration")
app.dlg.newDLG.print_control_identifiers()
pywinauto.findbestmatch.MatchError: Could not find 'newDLG' in 'dict_keys(['Button', 'SpectrumPro WEBButton', 'SpectrumPro WEB',....])
当我使用 Inspect.exe 时,有新的 window 按钮、文本输入等的详细信息。但它们不存在于 Inspect.exe 树中。所以我不知道这个新window的parent是谁。 有谁知道我如何连接到这个弹出的新window
我找到了解决方案,以防有人遇到同样的问题
我必须使用新的 application().connect 连接新的 window,因为只有这个新表单 window 使用 win32 后端。
newApp = Application(backend="win32").connect(title_re="SHOP ORDER.*")
之后我仍然无法找到 window 使用下面的方法
newDLG = app.window(title_re="SHOP ORDER Configuration")
我不得不使用魔法属性名称来获取 window
newApp.SHOPORDERConfiguration.print_control_identifiers()