基于Python+uiautomation的Windows GUI自动化测试概述

发布于:2024-10-24 编辑:匿名 来源:网络

1简介我一直在使用Python进行自动化测试。最近遇到需要对桌面软件进行自动化测试,即Windows GUI。

Python 的 GUI 自动化测试工具有很多,但它们都有不同的侧重点。这次我会详细解释为什么选择uiautomation进行测试。

2 PythonGUI 工具 2.1 常用 PythonGUI 编程工具的详细介绍,请参考:简介 wxPython 是 Python 语言的一个优秀的 GUI 图形库,可以让 Python 程序员轻松为 Kivy OS X 和 Android Flexx 创建具有完整功能键的完整 GUI 用户界面它是一个用于创建图形界面应用程序的纯Python工具包。它使用Web技术进行界面渲染。

您可以使用 Flexx 创建桌面应用程序,还可以将应用程序导出到独立的 HTML 文档。由于Flexx是用纯Python开发的,所以它是跨平台的。

PyQt PyQt4 支持 Qt4。它也是在 2008 年首次发布,但当时被称为 PyKDE,因为 SIP 和 PyQt 一开始就没有分开。

PyQt 是用 SIP 编写的。 PyQt提供GPL版本和商业版本Tkinter。

Pywin32允许你像VC一样使用PYTHON开发win32应用程序。 PyGTK 常用Python GUI自动化测试工具详细对比参考: 应用程序类,用于应用程序管理(打开和关闭应用程序等)、窗口管理(最小化、最大化、关闭窗口) Pywin32 win32gui、win32api、win32con 3个子模块,用于窗口管理(定位窗口、显示和关闭窗口、获取窗口位置等) pyautogui 说明 经过前面的介绍,我们主要使用用例来进行自动化测试,不再需要所有的 pythonGUI 编程工具。

常用的三种python GUI自动化测试工具支持的平台有限,所以经过一番折腾,看到一位高手在使用uiautomation,验证了该工具非常好用,而且很好用。3 uiautomation简介 3.1 作者的博客 uiautomation信息获取博客:一般内容 uiautomation是作者业余时间开发的一个供自己使用的python模块;所以安装时,直接: 代码语言:python 代码运行次数:0 复制Cloud Studio代码,运行 pip install uiautomationUIAutomation实现的自动化支持微软提供的各种界面开发框架,如Win32、MFC、Windows Forms、WPF、 Metro 应用程序、IE;另外,Qt、Firefox、Chrome实现了UI Automation Provider,也支持UIAutomation;作者使用Python和C++封装了UIAutomation,方便自己使用,可以快速开发自动化脚本; UIAutomation支持平台包括Windows XP (SP3)、Windows Vista、Windows 7、Windows 8、8.1和10; 4 如何使用 uiautomation 4.1 常用方法 代码语言:python 代码运行次数:0 复制 Cloud Studio 代码运行 1. WindowContrl(searchDepth,ClassName,SubName) # 查找窗口中的程序。

如果有中文则需要使用Unicode;你可以使用window.Exists(maxSearchSeconds)来判断这个窗口是否存在? 2. EditControl(searchFromControl) # 搜索编辑位置。找到后,可以使用DoubleClick()来改变计算机的焦点; edit.SetValue("string") 输入值; 3. Win32API.SendKeys("string") # 如果已经处于编辑位置,可以使用该方法输入值。

{Ctrl}为ctrl键,其他类似; {@8}格式可以输入8个@。这个功能对于数字也可以实现,但是不能用于字母……; 4. MenuItemControl(searchFromControl,Name) # 搜索菜单按钮; 5. ComboBoxControl(searchFromControl,AutomationI) # 搜索下拉框,然后使用Select("name")方法选择需要的选项;6.BottonControl(searchFromControl,Name,SubName) # 搜索按钮;7.automation.FindControl(firefoxWindow, lambda c:(isinstance(c,automation.EditControl)或isinstance(c,automation.ComboBoxControl)) and c.Name = = '输入您的搜索词') # 按条件搜索handle4.2 常用操作代码语言:python 代码运行次数:3 复制Cloud Studio代码并运行 Click() # Click; RightClik() # 右键单击??; SendKeys() # 发送字符; SetValue() # 传递值,一般用于EditControl; 4.3 windows程序常用操作代码语言:python 代码运行次数: 1 复制Cloud Studio代码并运行 subprocess.Popen('Name') # 用进程打开程序; window.Close() # 关闭窗口; window.SetActive() # 使用; window.SetTopMost() # 设置为顶层 window.ShowWindow(uiautomation.ShowWindow.Maximize) # 最大化窗口 window.CaptureToImage('Notepad.png') # 截屏 uiautomation .Win32API.PressKey(uiautomation.Keys.VK_CONTROL) # 按住 Ctrl 键 uiautomation.Win32API.ReleaseKey(uiautomation.Keys.VK_CONTROL) # 释放 Ctrl 键 Automation.GetConsoleWindow() # 返回运行 python 的控制台窗口,打开控制台自动化。

Logger.ColorfulWriteLine('\n我将打开 记事本和 自动化。请稍等一下。

') # 控制台传递值(彩色字体),正常值传递WriteLine; Automation.ShowDesktop() # 显示桌面; 4.4 抓取句柄直接运行自动化模块枚举窗口 从 doc 窗口运行 Automation.py 程序时,支持以下参数: 代码语言:python 代码运行次数:0 Copy Cloud Studio code run -t intValue 延迟枚举时间,以秒为单位 -r 从树根开始枚举,如果不指定,则从当前窗口开始枚举 -d intValue 枚举控件树的深度,如果不指定,则枚举整个树 -f 从焦点控件开始枚举,如果不指定,从当前窗口开始枚举 -c 从光标下控件枚举,如果不指定,从当前窗口开始枚举 -a 获取光标下的控件及所有父控件 -n 显示控件的完整名称,如果不指定,只显示前30个字符 -m 显示控件的更多属性,默认只显示控件的四个属性。代码语言:python 代码运行次数:0 复制Cloud Studio代码运行示例:automation.pyc –t3,3秒后枚举当前窗口中的所有控件automation.pyc –d2 –t3,3秒后枚举前三层控件当前窗口中automation.pyc –r –d1 –t0 -n,0秒后从根开始枚举前两层控件,并显示控件全名automation.pyc –c –t3,显示鼠标后3秒 光标下的控件信息 5 控件定位 使用Inspect.exe工具进行控件识别定位 在线下载软件,双击打开,如下: 此处插入图片说明 设置定位控件高亮 此处插入图片说明 示例:例如打开一个计算器 最后标识该控件的信息如下 此处插入图片说明 6 工程实例 6.1 实例说明 1. 打开本地计算器软件; 2. 输入 2 个计算结果 3. 对结果的准确性进行断言 6.2 示例代码 代码语言:python 代码运行次数:3 复制 Cloud Studio 代码并运行 # -*-coding:utf-8 -*-import unittestimportloggingimport timeimport uiautomationimport os# @unittest.skip("skip")class TestFaultTree(unittest.TestCase): def setUp(self) -> None: #初始化 os.system("calc") #打开计算器 time.sleep(2) self.calc = uiautomation.WindowControl(Name="Calculator") self. calc_list = ["二", "加", "八", "等于"] self.result = "10" deftearDown(self) -> None: time.sleep(1) self.calc.ButtonControl(Name= " 关闭计算器").Click() def test_toolbar(self): time.sleep(1) for i in range(0, len(self.calc_list)): self.calc.ButtonControl(Name=self.calc_list[i ] ).Click() time.sleep(0.5) calc_result = self.calc.TextControl(foundIndex=3).Name print("计算器的结果是:", calc_result) print("预期结果是:", self.result ) self.assertIn(self.result, calc_result)if __name__ == "__main__": unittest.main()7 示例效果,此处插入图片描述 8 将会发布一系列文章,主要讲解如何构建一个windows GUI自动化测试框架从0到1。

基于Python+uiautomation的Windows GUI自动化测试概述

站长声明

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

标签:

相关文章

  • 转转牵头投资建立B2B二手交易平台“菜货侠”,深度探索二手手机产业链

    转转牵头投资建立B2B二手交易平台“菜货侠”,深度探索二手手机产业链

    据投资界11月27日消息,领先的二手交易平台转转在中国,宣布联手线上二手回收平台Flash Recycling以及齐跃、一品等国内领先供应链企业共同投资成立公司,正式上线B2B二手交易平台“彩火霞”。 据了解,新公司将由转转控股并独立运营,联合创始人、副总裁、相昌峰担任新公司的

    06-18

  • Acciona Energia计划在昆士兰州建设600MW光伏电站

    Acciona Energia计划在昆士兰州建设600MW光伏电站

    据报道,西班牙可再生能源巨头Acciona Energia近日表示,已为其规划中的澳大利亚昆士兰州兆瓦级光伏电站签署了供电协议。 拟在该州格拉德斯通地区建设一个3GW大型绿色氢能项目来提供电力。 Acciona表示,昆士兰州政府已批准该公司Aldoga光伏电站的土地,该电站将为昆士兰州政

    06-08

  • 新光维医疗完成近4亿元B轮融资,重点关注内窥镜等医疗器械

    新光维医疗完成近4亿元B轮融资,重点关注内窥镜等医疗器械

    投资社区(ID:pedaily)据8月5日消息,新光维医疗今日宣布获得近4亿元A轮融资B融资。 本轮投资投资者包括Hudson Bay Capital Management、Prime Capital等新投资机构,现有股东Hillhouse Ventures、礼来亚洲基金、经纬中国等继续支持公司。 本轮融资将继续用于内窥镜及相关领

    06-18

  • 杭州5G产学研融合创新园启动

    杭州5G产学研融合创新园启动

    国内首个5G全覆盖、5G产学研条件齐全的创新园——中国(杭州)5G创新园在杭州余杭正式启动。 创新园旨在推动5G在智慧城市、智能网联汽车、工业互联网、社会服务等多个领域的融合应用和创新发展,打造5G创新高地。 5G作为新一代移动通信技术的发展方向,以其高速率、低时延、大

    06-06

  • 一年三轮融资,中银微电子获超亿元B轮融资

    一年三轮融资,中银微电子获超亿元B轮融资

    投资界(ID:pedaily)据1月2日消息,中银微电子宣布完成超亿元B轮融资元。 本轮融资由国投创投领投,老股东卓远资本等持续加大投资。 本次融资所筹资金将进一步用于企业级高速接口IP和Chiplet产品的研发,加速Chiplet产品的快速落地和人才引进。 中银微电子作为重大引进项目

    06-18

  • 知识产权质押信息平台将于近期上线

    知识产权质押信息平台将于近期上线

    国家发改委新闻发言人金贤东19日在例行新闻发布会上透露,知识产权质押信息平台已经建成,将于近期正式上线未来。 平台坚持公益性服务原则,将免费向社会公众提供知识产权质押登记信息、金融产品信息、企业信用信息查询、知识产权业务导航等综合服务。

    06-17

  • 晶芯生物完成近亿元天使轮融资,主导开发视觉诊疗一体化靶向核药物

    晶芯生物完成近亿元天使轮融资,主导开发视觉诊疗一体化靶向核药物

    晶芯生物医学科技(南京)有限公司(以下简称“晶芯生物”) 》)宣布完成近亿元天使轮融资 该轮融资由高榕资本领投,投资方包括VI Ventures、骊宸 Capital和老股东凯泰 Capital。 本轮融资将主要用于加速晶芯生物在研的多个创新靶向核药物推进至临床阶段,升级其核药物研发平

    06-18

  • 【创业24小时】2024年5月28日

    【创业24小时】2024年5月28日

    产业巨头公司爱优腾芒B2024年5月28日一季报:提升效率,求“执行力” 点击查看小红书电商店直播,买手的两项业务运营和商户运营合并。 点击查看叮咚买菜连续六个季度盈利。 前端仓库模式运行是否顺利?点击查看本地生活数据“自热火锅”:降价清仓卖不出去。 自热火锅为何会变

    06-18

  • 新项目NO.34|独家专访美克盛能源副总裁胡金双:数字能源与储能安全领域的“双独角兽”

    新项目NO.34|独家专访美克盛能源副总裁胡金双:数字能源与储能安全领域的“双独角兽”

    随着人类社会的电气化、信息化,我们在享受人类社会所取得的成就的同时科学技术,我们也在享受科学技术的成果。 承担温室效应和气候变化的成本。 大自然向人类发出了预警。 在“双碳”目标背景下,绿色能源如何惠及大众?如何创造更安全的绿色能源生活?本期《看见新项目》专

    06-18

  • 曾估值18亿,刘诗诗和赵丽颖投资的公司赴港IPO

    曾估值18亿,刘诗诗和赵丽颖投资的公司赴港IPO

    明星,刘诗诗的“高聘礼”即将上市。 7月20日,江苏稻草熊影业股份有限公司(以下简称“稻草熊影业”)向香港联交所提交招股说明书,正式启动上市程序。 招股书显示,稻草熊是一家国产剧制作人和发行商,旗下知名剧目有《蜀山战纪之剑侠传奇》、《局中人》等。 熊影业的投稿之

    06-18

  • 扎克伯格希望以 499 美元的价格,用最新的 VR 耳机来挑战 Apple

    扎克伯格希望以 499 美元的价格,用最新的 VR 耳机来挑战 Apple

    Quest 如果不出意外的话,将会发生一些事情。 这个经典的网络迷因也发生在 Meta 身上。 北京时间9月28日凌晨,Meta Connect大会原定于凌晨1点开始直播。 但不知为何推迟了30分钟,上演了一出“重新定义凌晨1点”的大戏。 作为当天发布会的主角的最新VR头戴设备Quest 3,扎克伯

    06-18

  • 炙手可热的金融科技该如何面对机遇与挑战?

    炙手可热的金融科技该如何面对机遇与挑战?

    9月15日22时04分09秒,长征二号FT2火箭将天宫二号空间实验室升空,冲向太空。 飞行器进入预定轨道后,空间实验室任务总指挥弗拉基米尔张又侠宣布,发射任务取得圆满成功!天宫二号是我国第一个真正的空间实验室。 它的设计寿命为两年。 为满足中期居住需求,载人居住环境得到

    06-17