python automation ui-automation pywinauto

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'')