当前位置: 首页 > 面试题库 >

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

冯祺
2023-03-14
问题内容

我正在尝试做的是:

我正在尝试使用pywinauto在python中创建脚本以在后台自动安装notepad (隐藏或最小化),notepad

只是一个示例,因为我将对其进行编辑以与其他软件一起使用。

问题:

问题是我想在隐藏安装程序或最小化安装程序的情况下执行此操作,但是如果我移动鼠标,脚本将停止工作。

题:

在隐藏或最小化notepad ++安装程序的情况下,如何执行此脚本并使之运行。

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

import sys, os, pywinauto

pwa_app = pywinauto.application.Applicathtml" target="_blank">ion()

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()方法代替。

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


 类似资料:
  • 问题内容: 我需要将注意力集中在指定的窗口上,而我头上看到的唯一方法是将其前面的所有窗口最小化,直到找到正确的窗口为止。 我该怎么做? Windows 7,没有特定的工具包…。 每种类型的窗口,例如,firefox和控制台命令 问题答案: 您需要通过窗口枚举并匹配窗口标题才能获得所需的窗口。下面的代码搜索标题为“ firefox”的窗口并设置焦点: 为了最小化窗口,下面的行:

  • 我是Javafx新手,我正在从事Javafx项目。我想最小化javafx窗口。我使用初级阶段。initStyle(舞台风格。未装饰)。我还想将clickevent添加到fxml中的imageview中。

  • 我想初始化一个窗口为最大化,但我不知道如何做。我在Windows7上使用Python3.3和Tkinter 8.6。我想答案就在这里:http://www.tcl.tk/man/Tcl/Tkcmd/wm.htmam.m8但是我不知道如何将它输入到我的python脚本中 此外,我需要得到窗口的宽度和高度(既是最大化的,如果用户重新缩放它之后),但我想我可以自己找到。

  • 问题内容: 我正在用Python写一个IRC机器人。 我希望为Linux和Windows制作独立的二进制文件。主要是希望机器人启动时隐藏控制台窗口,而用户则不能看到该窗口。 我该怎么办? 问题答案: 只需将其保存为.pyw扩展名即可。这将阻止控制台窗口打开。 在Windows系统上,没有“可执行模式”的概念。Python安装程序会自动将.py文件与python.exe关联,以便双击Python文件

  • 问题内容: 我有一个简单的Python脚本,该脚本使用selenium和webdriver在Chrome窗口中打开Facebook并自动登录。当我运行它时,Chromedriver控制台窗口将打开并保持打开状态,即使在整个程序执行完毕后,也要自行关闭它。 有没有办法隐藏此控制台窗口?我曾尝试为脚本保留一个“ .pyw”扩展名,但这无济于事,因为它不是脚本的控制台窗口,而是我希望隐藏的Chromed

  • 问题内容: 我有一个使用Qt的Python程序(实际上是PyQt4),当我从main.py启动它时,我得到了一个控制台窗口和GUI窗口(当然是在Windows上)。 然后,我用py2exe编译程序,并成功创建main.exe。但是,如果我运行main.exe(程序的用户将执行此操作),Python的控制台窗口仍会出现,并且我所有的调试文本都将输出到该窗口。 我想在我的应用程序运行时隐藏cmd线窗口