首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python -在窗口最小化或隐藏时使用pywinauto控制窗口

Python -在窗口最小化或隐藏时使用pywinauto控制窗口
EN

Stack Overflow用户
提问于 2015-09-29 14:25:43
回答 1查看 21.2K关注 0票数 9

我想做的是:

我试图用pywinauto在python中创建一个脚本,以便在后台自动安装notepad++ (隐藏或最小化),notepad++只是一个例子,因为我将编辑它以与其他软件一起工作。

问题:

问题是,当安装程序被隐藏或最小化时,我想要这样做,但是如果我移动鼠标,脚本将停止工作。

问题:

当notepad++安装程序被隐藏或最小化时,我如何执行这个脚本并使它工作。

,到目前为止这是我的代码,

代码语言:javascript
运行
复制
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')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-29 14:54:53

问题在于:

代码语言:javascript
运行
复制
Wizard['Create Shortcut on Desktop'].wait('enabled').check_by_click()

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

使用check()方法代替。

如果安装程序没有正确地处理BM_SETCHECK,则编辑解决方法可能是这样的:

代码语言:javascript
运行
复制
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位Python2.7,pywinauto0.6.x,作为管理员运行.

代码语言:javascript
运行
复制
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')
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32846550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档