问题在这里:
Wizard['Create Shortcut on Desktop'].wait('enabled').check_by_click()
check_by_click()
使用click_input()
移动真实鼠标光标并执行逼真的点击的方法。
使用check()
方法代替。
[EDIT]如果安装程序无法BM_SETCHECK
正确处理,则解决方法如下所示:
check@R_414_2419@ = Wizard['Create Shortcut on Desktop'].wait('enabled')
if check@R_414_2419@.get_check_state() != pywinauto.win32defines.BST_CHECKED:
check@R_414_2419@.click()
我将通过分别创建方法check_by_click
和在下一个pywinauto版本中对其进行修复check_by_click_input
。
[编辑2]我使用修复程序尝试了您的脚本,无论是否移动鼠标,脚本都可以完美(非常快)地运行。Win7 x64、32位Python 2.7,pywinauto 0.6.x,以管理员身份运行。
import sys
import os
from pywinauto import Application
app = Application(backend="win32").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()
check@R_414_2419@ = Wizard['Create Shortcut on Desktop'].wait('enabled')
if check@R_414_2419@.get_check_state() != pywinauto.win32defines.BST_CHECKED:
check@R_414_2419@.click()
Wizard.Install.click()
Wizard['Completing the Notepad++ v6.8.3 Setup'].wait('ready', timeout=30)
Wizard.minimize()
Wizard['Check@R_414_2419@'].wait('enabled').click()
Wizard.Finish.click()
Wizard.wait_not('visible')