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