如何在 Python 中制作 Pywinauto 单击不同语言的按钮?

How to make Pywinauto in Python click a button in a different language?

我只是无法让 Pywinauto 工作。 基本上我希望它打开系统设置(已经弄明白了)然后单击 "Change Settings",但在我的语言(德语)中是 "Einstellungen ändern"。 我试过这个:

from pywinauto import Desktop, Application, keyboard 
from pywinauto.application import Application 

app = Application().start("control system") 
#so far it works, after that I've tried two options 
#1  
app.window_(title_re="System").window_(title="Einstellungen ändern").click()
#2
app.window_(best_match="System" ).window_(best_match="Einstellungen ändern").click()

我已经使用从 Inspect.exe 获得的 AutomationId 尝试了这两个选项,而不是 "System" 或 "Einstellungen ändern" 我已经尝试了 ClickInput()而不是 click().

有什么想法吗?

有几个问题:

  • 正确的后端是 "uia",必须为 Application 对象指定。
  • 启动器进程生成一个子进程,需要重新连接到该子进程。

此代码适用于我的英文版 Win10:

from pywinauto.application import Application 

app = Application(backend="uia").start("control system")
app = Application(backend="uia").connect(title="System", timeout=20)

app.window(title="System").child_window(title="Change settings").invoke()
# app.window(title="System").child_window(title="Einstellungen ändern").invoke()

.click_input() 应该也可以。后端 "uia" 将方法 .click() 定义为 .invoke() 的别名,仅用于 control_type="Button",因为 InvokePattern 对于不同的控件类型可能具有不同的含义。


注意:点击 "Change settings" 后,出现的 "System properties" window 是 运行 在另一个需要方法 .connect() 的进程中,并且可能会分开 Application 为方便起见。