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