Python - окно управления с pywinauto, когда окно свернуто или скрыто
Что я пытаюсь сделать:
Я пытаюсь создать скрипт на python с pywinauto для автоматической установки notepad ++ в фоновом режиме (скрытый или свернутый), notepad++ является лишь примером, поскольку я отредактирую его для работы с другим программным обеспечением.
Проблема:
Проблема в том, что я хочу сделать это, пока установщик скрыт или свернут, но если я переместлю мышь, скрипт перестанет работать.
Вопрос:
Как я могу выполнить этот скрипт и заставить его работать, в то время как установщик notepad ++ скрыт или свернут.
Это мой код до сих пор:
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')
1 ответ
Проблема здесь:
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()
Я исправлю это в следующем выпуске pywinauto, создав методы CheckByClick
а также CheckByClickInput
соответственно.
[РЕДАКТИРОВАТЬ 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')