Python - Control window with pywinauto while the window is minimized or hidden
Solution 1:
The problem is here:
Wizard['Create Shortcut on Desktop'].wait('enabled').check_by_click()
check_by_click()
uses click_input()
method that moves real mouse cursor and performs a realistic click.
Use check()
method instead.
[EDIT] If the installer doesn't handle BM_SETCHECK
properly the workaround may look so:
checkbox = Wizard['Create Shortcut on Desktop'].wait('enabled')
if checkbox.get_check_state() != pywinauto.win32defines.BST_CHECKED:
checkbox.click()
I will fix it in the next pywinauto release by creating methods check_by_click
and check_by_click_input
respectively.
[EDIT 2] I tried your script with my fix and it works perfectly (and very fast) with and without mouse moves. Win7 x64, 32-bit Python 2.7, pywinauto 0.6.x, run as administrator.
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()
checkbox = Wizard['Create Shortcut on Desktop'].wait('enabled')
if checkbox.get_check_state() != 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.wait_not('visible')