如何在 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
为方便起见。
我只是无法让 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
为方便起见。