这个问题我已经通过打印类程序apptitle的标识使用了正确的元素和类[错误]此错误显示: ()
from pywinauto import Application, findwindows
import pywinauto.application
from pywinauto.keyboard import send_keys
path=r"C:\Users\Administrator\Desktop\Hardware change\hard-disk-serial-number-changer-1.0-installer.exe"
apptitle="Hard Disk Serial Number Changer"
try:
app=Application(backend="uia").connect(title=apptitle)
except findwindows.ElementNotFoundError:
print("App is not connected")
try:
app=Application(backend="uia").start(path)
app.wait_until("ready")
edit_control = app.child_window(auto_id="460840", control_type="Edit")
print("Edit control found:", edit_control)
print("Control rectangle:", edit_control.rectangle())
edit_control.click()
app.wait_cpu_usage_lower(threshold=1, timeout=5, usage_interval=1)
send_keys('^a')
send_keys('{{BACKSPACE}}')
except pywinauto.application.AppStartError:
print("Directory not found or app is not specified")
except pywinauto.findwindows.ElementNotFoundError:
print("You have included incorrect gui elements")
这显然是错误的用法:
app.wait_until("ready")
Application对象代表一个进程,而不是一个窗口。您必须为顶级窗口创建搜索条件(如 Selenium 中的定位器):
app.window(title=apptitle).wait("ready")
edit_control_spec = app.window(title=apptitle).child_window(auto_id="460840", control_type="Edit")
print("Edit control found:", edit_control_spec.wrapper_object())
在未来的版本中,
.wrapper_object()
将更名为.find()
。
但是当您调用
edit_control_spec.click()
时,它会隐式调用 .wrapper_object()
并为找到的包装器调用方法 .click()
。