Python: ventana de control con pywinauto mientras la ventana está minimizada u oculta
automation ui-automation (1)
El problema está aquí:
Wizard[''Create Shortcut on Desktop''].wait(''enabled'').check_by_click()
check_by_click()
utiliza el método
click_input()
que mueve el cursor real del mouse y realiza un clic realista.
Utilice el método
check()
lugar.
[EDITAR] Si el instalador no maneja
BM_SETCHECK
correctamente, la solución puede verse así:
checkbox = Wizard[''Create Shortcut on Desktop''].wait(''enabled'')
if checkbox.get_check_state() != pywinauto.win32defines.BST_CHECKED:
checkbox.click()
Lo arreglaré en la próxima versión de pywinauto creando métodos
check_by_click
y
check_by_click_input
respectivamente.
[EDIT 2] Probé tu script con mi corrección y funciona perfectamente (y muy rápido) con y sin movimientos del mouse. Win7 x64, Python 2.7 de 32 bits, pywinauto 0.6.x, se ejecuta como administrador.
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'')
Lo que estoy tratando de hacer:
Estoy tratando de crear un script en python con pywinauto para instalar automáticamente notepad ++ en segundo plano (oculto o minimizado), notepad ++ es solo un ejemplo, ya que lo editaré para que funcione con otro software.
Problema:
El problema es que quiero hacerlo mientras el instalador está oculto o minimizado, pero si muevo el mouse, el script dejará de funcionar.
Pregunta:
¿Cómo puedo ejecutar este script y hacerlo funcionar, mientras el instalador de notepad ++ está oculto o minimizado?
Este es mi código hasta ahora :
import sys, os, pywinauto
pwa_app = pywinauto.application.Application()
app = pywinauto.Application().Start(r''npp.6.8.3.Installer.exe'')
Wizard = app[''Installer Language'']
Wizard.NextButton.Click()
Wizard = app[''Notepad++ v6.8.3 Setup'']
Wizard.Wait(''visible'')
Wizard[''Welcome to the Notepad++ v6.8.3 Setup''].Wait(''ready'')
Wizard.NextButton.Click()
Wizard[''License Agreement''].Wait(''ready'')
Wizard[''I &Agree''].Click()
Wizard[''Choose Install Location''].Wait(''ready'')
Wizard.Button2.Click()
Wizard[''Choose Components''].Wait(''ready'')
Wizard.Button2.Click()
Wizard[''Create Shortcut on Desktop''].Wait(''enabled'').CheckByClick()
Wizard.Install.Click()
Wizard[''Completing the Notepad++ v6.8.3 Setup''].Wait(''ready'', timeout=30)
Wizard[''CheckBox''].Wait(''enabled'').Click()
Wizard.Finish.Click()
Wizard.WaitNot(''visible'')