有没有办法在 pywinauto 中重用已经找到的控件?

Is there a way to reuse an already found control in pywinauto?

我在一个项目中使用了 pywinauto,它运行良好。在某些屏幕上,当有很多控件时,搜索会花费一些时间,但我可以处理。

我想知道是否有一种方法可以重复使用控件而不需要再次搜索它? 例如我想点击多次的按钮。

例如。代码:

main_app = Application(backend="uia").connect(path=app_path)
button = main_app.child_window(auto_id="Button1", control_type="Button")
button.click_input()
button.click_input()

每次我使用 click_input() 都需要相同的时间,我认为这是因为它每次都在重做搜索。有没有办法让第二次调用更快?

对于按钮,我可以获得按钮的坐标,并使用 mouse.click_input(coords) 或其他东西,但我想了解更一般的信息,比如我想在也编辑一下。

谢谢!

您可以将找到的包装器保存到一个变量中:

button_spec = main_app.child_window(auto_id="Button1", control_type="Button")
button = button_spec.wrapper_object()
# or
button = button_spec.wait('enabled', timeout=10) # if you need to wait more than default 5 sec.
button.click_input()
button.click_input()