簡體   English   中英

Python - 在窗口最小化或隱藏時使用pywinauto控制窗口

[英]Python - Control window with pywinauto while the window is minimized or hidden

我正在嘗試做什么:

我正在嘗試使用pywinauto在python中創建腳本以在后台自動安裝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')

問題出在這里:

Wizard['Create Shortcut on Desktop'].wait('enabled').check_by_click()

check_by_click()使用click_input()方法移動真實鼠標光標並執行逼真的單擊。

請改用check()方法。

[編輯]如果安裝程序沒有正確處理BM_SETCHECK ,則解決方法可能如下所示:

checkbox = Wizard['Create Shortcut on Desktop'].wait('enabled')
if checkbox.get_check_state() != pywinauto.win32defines.BST_CHECKED:
    checkbox.click()

我將通過分別創建方法check_by_clickcheck_by_click_input在下一個pywinauto版本中修復它。


[編輯2]我用我的修復程序嘗試了你的腳本,無論有沒有鼠標移動,它都可以完美地工作(而且非常快)。 Win7 x64,32位Python 2.7,pywinauto 0.6.x,以管理員身份運行。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM