我是Python新手。我想自动化软件安装过程。情景如下
运行安装文件。在第一个屏幕上,它有两个按钮,取消。点击下一步,它进入下一个屏幕,有两个按钮,接下来,取消和一些输入数据是必需的。提供详细信息后,将显示完成或取消按钮。
在这里,我想编写一个自动执行此活动的python脚本。它应该识别按钮点击它,应该在任何需要的地方输入数据并完成安装。
实现这一功能
答案 0 :(得分:9)
正如Rawing所说,pywinauto是Windows安装程序的不错选择。这是一个很好的示例视频:http://pywinauto.github.io/
等待下一页使用类似的内容:app.WizardPageTitle.wait('ready')
安装程序完成后:app.FinishPage.wait_not('visible')
对于编辑框输入:app.WizardPage.Edit.type_keys('some input path', with_spaces=True)
对于按钮点击,我建议click_input()
作为更可靠的方法
如果要在许多计算机上自动安装应用程序,可以创建远程桌面或VNC会话,并在该会话中运行Python脚本的本地副本。只是不要最小化RDP或VNC窗口以防止GUI上下文丢失。丢失焦点是安全的,您可以在另一个窗口中继续在主机上工作,而不会影响远程安装
FastStone Image Viewer 4.6的简易安装脚本示例:
import os
from pywinauto.application import Application
fsv = Application(backend="win32").start("FSViewerSetup46.exe")
fsv.InstallDialog.NextButton.wait('ready', timeout=30).click_input()
fsv.InstallDialog.IAgreeRadioButton.wait('ready', timeout=30).click_input()
fsv.InstallDialog.Edit.Wait('ready', timeout=30).type_keys(os.getcwd() + "\FastStone Image Viewer", with_spaces=True)
fsv.InstallDialog.InstallButton.wait('ready', timeout=30).click_input()
fsv.InstallDialog.FinishButton.wait('ready', timeout=30).click_input()