我遇到过这个问题,并且我有正确的 gui 元素

问题描述 投票:0回答:1

这个问题我已经通过打印类程序apptitle的标识使用了正确的元素和类[错误]此错误显示: (https://i.stack.imgur.com/xJ22H.png)

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

    



python pywinauto
1个回答
0
投票

这显然是错误的用法:

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

© www.soinside.com 2019 - 2024. All rights reserved.