Python pywinauto+lackey实现自动安装软件

本文介绍了如何使用Python的pywinauto和lackey模块自动执行带有图形界面的Windows软件安装包,包括安装步骤、截图定位元素以及代码示例,以向日葵远程控制软件安装为例进行说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目标:

Python可以通过pywinauto+lackey模块自动执行有窗口的软件安装包去安装软件。那么具体是如何实现的呢?下面一起来看看吧!

流程:

1、安装pyautorun

首先确保pywinauto及lackey模块已经安装,在CMD(以管理员身份运行)中执行pip install --upgrade pywinauto,系统将会自动安装pywinauto模块。

安装pywinauto完成后,以管理员身份运行pycharm(注意:如果不一管理员身份运行,后续debug的时候会报权限不足的错误)

2、安装lackey

方法一:先通过pip install lackey来安装。(方法一若不成功使用方法二)

方法二:直接下载Lackey-0.7.3-py3-none-any.whl安装文件,通过pip install Lackey-0.7.3-py3-none-any.whl来安装。下载地址:https://pan.baidu.com/s/1MDJ8KoLl_sWPSnsxj8wfqg 
提取码:rgml

方法三:通过镜像安装pip install lackey -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

3、实现自动安装软件

配合使用pywinauto来打开应用程序后,保存好定位的元素,通过定位元素选定操作内容。

接下来我们以安装向日葵远程控制软件为例,做演示。

        1、先将安装窗口上所有控件先截图保存好到固定目录中,例如可以在项目目录下新建一个photo的文件夹,将控件截图都放置在这个文件夹中。

        2、写代码

import pywinauto
import time
import lackey


path_SunloginClient = r'C:\Users\vision\Desktop\pythonProject\SunloginClient_10.5.0.29613_X64.exe'
app = pywinauto.Application().start(path_SunloginClient)
lackey.click('photo/SunloginClientInstall.PNG')
time.sleep(8)
lackey.click('photo/SunloginClientClose.PNG')
time.sleep(4)
lackey.click('photo/SunloginClientNext.PNG')
time.sleep(1)
lackey.click('photo/SunloginClientNext.PNG')
time.sleep(1)
lackey.click('photo/SunloginClientClose.PNG')
time.sleep(1)

path_SunloginClient = r'安装包如路径':定义安装包路径

app = pywinauto.Application().start():启动运行安装包

lackey.click('photo/SunloginClientInstall.PNG'):查找与图片一样的位置,将鼠标移动到该位置之后点击鼠标

如果是输入栏,可以使用lackey.type('输入内容')功能输入文字

UI测试框架是用于自动化测试用户界面(UI)的工具和库的集合。Python作为一种流行的编程语言,结合unittest、pywinauto和htmlTestRunner,可以构建一个强大的UI测试框架。 1. **unittest**:unittest是Python标准库中的一个单元测试框架,类似于Java中的JUnit。它提供了创建测试用例、组织测试套件和运行测试的功能。unittest的测试用例是通过继承TestCase类来创建的,并且可以使用各种断言方法来验证测试结果。 2. **pywinauto**:pywinauto是一个用于自动化Windows GUI应用程序的Python库。它提供了一组工具,可以模拟用户与Windows应用程序的交互,如点击按钮、输入文本等。pywinauto通过控件名称、文本或其他属性来识别和操作UI元素。 3. **htmlTestRunner**:htmlTestRunner是一个用于生成HTML测试报告的扩展库。它可以将unittest的测试结果生成为HTML格式的报告,方便查看和分析测试结果。 ### 示例代码 以下是一个简单的示例,展示如何使用这些工具构建一个UI测试框架: ```python import unittest from pywinauto import Application import HTMLTestRunner class MyAppTests(unittest.TestCase): def setUp(self): # 启动应用程序 self.app = Application().start("path_to_your_application.exe") self.dlg = self.app.window(title="MainWindowTitle") def test_button_click(self): # 查找并点击按钮 self.dlg['ButtonName'].click() # 断言按钮点击后的结果 self.assertTrue(self.dlg['ResultControl'].exists()) def tearDown(self): # 关闭应用程序 self.app.kill() if __name__ == "__main__": # 创建测试套件 suite = unittest.TestLoader().loadTestsFromTestCase(MyAppTests) # 生成HTML测试报告 with open("test_report.html", "w") as output: runner = HTMLTestRunner.HTMLTestRunner(output, title='UI Test Report', description='Test report for MyApp') runner.run(suite) ``` ### 解释 1. **setUp方法**:在每个测试用例执行前启动应用程序并获取主窗口的引用。 2. **test_button_click测试用例**:查找并点击按钮,然后断言点击后的结果。 3. **tearDown方法**:在每个测试用例执行后关闭应用程序。 ### 优点 - **自动化**:减少手动测试的工作量,提高测试效率。 - **可重复性**:测试用例可以多次运行,确保应用程序的稳定性。 - **易扩展**:可以轻松添加新的测试用例和测试套件。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XJB-Lanxi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值