问题出在这里:
Wizard['Create Shortcut on Desktop'].Wait('enabled').CheckByClick()
CheckByClick()使用ClickInput()方法移动真正的鼠标光标并执行逼真的单击.
请改用Check()方法.
[编辑]如果安装程序没有正确处理BM_SETCHECK,则解决方法可能如下所示:
checkbox = Wizard['Create Shortcut on Desktop'].Wait('enabled')
if checkbox.GetCheckState() != pywinauto.win32defines.BST_CHECKED:
checkbox.Click()
我将通过分别创建方法CheckByClick和CheckByClickInput在下一个pywinauto版本中修复它.
[编辑2]
我用我的修复程序尝试了你的脚本,它可以完美地(并且非常快)有鼠标移动和不移动. Win7 x64,32位Python 2.7,pywinauto 0.5.3,以管理员身份运行.
import sys, os, pywinauto
app = pywinauto.Application().Start(r'npp.6.8.3.Installer.exe')
Wizard = app['Installer Language']
Wizard.Minimize()
Wizard.NextButton.Click()
Wizard = app['Notepad++ v6.8.3 Setup']
Wizard.Wait('visible')
Wizard.Minimize()
Wizard['Welcome to the Notepad++ v6.8.3 Setup'].Wait('ready')
Wizard.NextButton.Click()
Wizard.Minimize()
Wizard['License Agreement'].Wait('ready')
Wizard['I &Agree'].Click()
Wizard.Minimize()
Wizard['Choose Install Location'].Wait('ready')
Wizard.Button2.Click()
Wizard.Minimize()
Wizard['Choose Components'].Wait('ready')
Wizard.Button2.Click()
Wizard.Minimize()
checkbox = Wizard['Create Shortcut on Desktop'].Wait('enabled')
if checkbox.GetCheckState() != pywinauto.win32defines.BST_CHECKED:
checkbox.Click()
Wizard.Install.Click()
Wizard['Completing the Notepad++ v6.8.3 Setup'].Wait('ready', timeout=30)
Wizard.Minimize()
Wizard['CheckBox'].Wait('enabled').Click()
Wizard.Finish.Click()
Wizard.WaitNot('visible')