Python-使用pywinauto控制窗口,同时将窗口最小化或隐藏

发布于 2021-01-29 19:08:44

我正在尝试做的是:

我正在尝试使用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')
关注者
0
被浏览
139
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    问题在这里:

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

    check_by_click()使用click_input()移动真实鼠标光标并执行逼真的点击的方法。

    使用check()方法代替。

    [EDIT]如果安装程序无法BM_SETCHECK正确处理,则解决方法如下所示:

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

    我将通过分别创建方法check_by_click和在下一个pywinauto版本中对其进行修复check_by_click_input


    [编辑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')
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看