如何在Python中使Pywinauto单击其他语言的按钮?

时间:2019-01-04 15:25:19

标签: python python-3.x automation ui-automation pywinauto

我只是不能让Pywinauto工作。 基本上,我希望它打开系统设置(已经弄清楚了),然后单击“更改设置”,但以我的语言(德语)为“ 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而不是“ System”或“ Einstellungenändern”的AutomationId尝试了这两个选项,并且尝试了ClickInput()而不是click()

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

有几个问题:

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

此代码适用于我的英语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对于各种控件类型可能具有不同的含义。


注意:在单击“更改设置”后,出现的“系统属性”窗口正在另一个进程中运行,该进程再次需要方法.connect(),并且可能为了方便起见可能需要单独的Application实例。