Car*_*ros 7 python automation ui-automation pywinauto
我正在做的事情:
我正在尝试使用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')
Run Code Online (Sandbox Code Playgroud)
问题出在这里:
Wizard['Create Shortcut on Desktop'].wait('enabled').check_by_click()
Run Code Online (Sandbox Code Playgroud)
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()
Run Code Online (Sandbox Code Playgroud)
我将通过创建方法解决它在未来pywinauto释放check_by_click和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')
Run Code Online (Sandbox Code Playgroud)