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()
метод вместо этого.
[EDIT] если установщик не обрабатывает 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')