pywinauto - 如何处理警报 window 控件
pywinauto -how to handle alert window control
我已经在 VB 完成了表格。我无法访问 child window 控件。例如,单击提交按钮后出现警告框。这是我的代码:
# used backend="uia"
import sys
import pyautogui
from pywinauto.application import Application
import time
print("test")
app=Application().start()
app.Form1.Edit4.type_keys("go")
app.Form1.Edit3.type_keys("12")
app.Form1.Male.click()
app.Form1.ComboBox.type_keys("in")
app.Form1.Edit2.type_keys("33")
app.Form1.Submit.click()
app.Form1.Submit.print_control_identifiers()
app.Success.print_control_identifiers()
app.Form1.Success.click()
成功是childwindow的名字。
您写到您使用了 backend="uia"
,但代码 Application().start()
使用默认后端 "win32"
。您必须使用 Application(backend="uia").start()
选择 "uia"。
注意:对于 "win32" 后端,警报 window 是 top-level window。所以你需要 app.Success.OK.click()
来点击确定按钮。对于后端="uia" 警报 window 将是 child of "Form1".
编辑:此代码应该有效:
app.Form1.Success.OKButton.click() # alias of .invoke();
# see IsInvokePatternSupported == True in Inspect.exe
# or
app.Form1.Success.OKButton.click_input() # real click
EDIT2:可能是时间问题。 pywinauto 等待对话框出现的默认超时时间为 5 秒。如果超过 5 秒后出现对话框,您需要这样的东西:app.Form1.Success.wait('visible', timeout=20)
.
另一个可能的问题是 app.Form1.Submit.click()
调用 InvokePattern
的阻塞行为。有时此模式实现会等待对话框关闭(尽管这是应用程序方面的问题)。您可能必须将其更改为 app.Form1.Submit.click_input()
.
我已经在 VB 完成了表格。我无法访问 child window 控件。例如,单击提交按钮后出现警告框。这是我的代码:
# used backend="uia"
import sys
import pyautogui
from pywinauto.application import Application
import time
print("test")
app=Application().start()
app.Form1.Edit4.type_keys("go")
app.Form1.Edit3.type_keys("12")
app.Form1.Male.click()
app.Form1.ComboBox.type_keys("in")
app.Form1.Edit2.type_keys("33")
app.Form1.Submit.click()
app.Form1.Submit.print_control_identifiers()
app.Success.print_control_identifiers()
app.Form1.Success.click()
成功是childwindow的名字。
您写到您使用了 backend="uia"
,但代码 Application().start()
使用默认后端 "win32"
。您必须使用 Application(backend="uia").start()
选择 "uia"。
注意:对于 "win32" 后端,警报 window 是 top-level window。所以你需要 app.Success.OK.click()
来点击确定按钮。对于后端="uia" 警报 window 将是 child of "Form1".
编辑:此代码应该有效:
app.Form1.Success.OKButton.click() # alias of .invoke();
# see IsInvokePatternSupported == True in Inspect.exe
# or
app.Form1.Success.OKButton.click_input() # real click
EDIT2:可能是时间问题。 pywinauto 等待对话框出现的默认超时时间为 5 秒。如果超过 5 秒后出现对话框,您需要这样的东西:app.Form1.Success.wait('visible', timeout=20)
.
另一个可能的问题是 app.Form1.Submit.click()
调用 InvokePattern
的阻塞行为。有时此模式实现会等待对话框关闭(尽管这是应用程序方面的问题)。您可能必须将其更改为 app.Form1.Submit.click_input()
.