
基于Python+UIautomation的WindowsGUI自动化测试实战(一)-记事本
发布日期:2021-05-09 15:17:24
浏览次数:12
分类:精选文章
本文共 2714 字,大约阅读时间需要 9 分钟。
记事本
1 测试需求
模拟用户操作,打开记事本进行内容输入
2 测试步骤
2.1 用例1
- 打开记事本;
- 窗口最大化;
- 输入"
人生苦短,我用Python!"
; - 关闭窗口;
- 不保存直接退出。
2.2 用例2
- 打开记事本;
- 窗口最大化
- 输入:
Python之禅!优美胜于丑陋(Python 以编写优美的代码为目标)明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)可读性很重要(优美的代码是可读的)即便假借特例的实用性之名,也不可违背这些规则(这些规则至高无上)不要包容所有错误,除非你确定需要这样做(精准地捕获异常,不写 except:pass 风格的代码)当存在多种可能,不要尝试去猜测而是尽量找一种,最好是唯一一种明显的解决方案(如果不确定,就用穷举法)虽然这并不容易,因为你不是 Python 之父(这里的 Dutch 是指 Guido )做也许好过不做,但不假思索就动手还不如不做(动手之前要细思量)如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然(方案测评标准)命名空间是一种绝妙的理念,我们应当多加利用(倡导与号召)"
- 关闭窗口;
- 不保存直接退出。
3 实现脚本
# -*- coding:utf-8 -*-import unittestimport timeimport uiautomationimport subprocessclass TestNotePad(unittest.TestCase): def setUp(self) -> None: # 初始化 subprocess.Popen("notepad.exe") # 打开记事本 time.sleep(1) self.notepad = uiautomation.WindowControl(Name="无标题 - 记事本") time.sleep(1) print("===============", self.notepad) self.notepad.ButtonControl(Name="最大化").Click() def tearDown(self) -> None: time.sleep(1) self.notepad.ButtonControl(Name="关闭").Click() time.sleep(0.5) self.notepad_1 = uiautomation.WindowControl(Name = "记事本") self.notepad_1.SetTopmost() self.notepad_1.ButtonControl(Name="不保存(N)").Click() def test_notepad(self): self.notepad.SetTopmost() time.sleep(1) text_content = "人生苦短,我用Python!" self.notepad.EditControl(Name="文本编辑器").SendKeys(text_content) def test_notepad_text(self): self.notepad.SetTopmost() time.sleep(1) text_content_1 = ' '*47 + "Python之禅!\n\ 优美胜于丑陋(Python 以编写优美的代码为目标)\n\ 明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)\n\ 简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)\n\ 复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)\n\ 扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)\n\ 间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)\n\ 可读性很重要(优美的代码是可读的)\n\ 即便假借特例的实用性之名,也不可违背这些规则(这些规则至高无上)\n\ 不要包容所有错误,除非你确定需要这样做(精准地捕获异常,不写 except:pass 风格的代码)\n\ 当存在多种可能,不要尝试去猜测\n\ 而是尽量找一种,最好是唯一一种明显的解决方案(如果不确定,就用穷举法)\n\ 虽然这并不容易,因为你不是 Python 之父(这里的 Dutch 是指 Guido )\n\ 做也许好过不做,但不假思索就动手还不如不做(动手之前要细思量)\n\ 如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然(方案测评标准)\n\ 命名空间是一种绝妙的理念,我们应当多加利用(倡导与号召)" self.notepad.EditControl(Name="文本编辑器").SendKeys(text_content_1)if __name__ == "__main__": unittest.main()
4 实现效果
【分享、共勉、共进、提升】更多、更全、更新的软件测试领域知识,请关注:

发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年04月18日 23时48分17秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
对Spring aop的理解
2021-05-09
highcharts 从后台动态改变数据
2021-05-09
【Autofac打标签模式】PropertySource和Value
2021-05-09
有道云笔记 同步到我的博客园
2021-05-09
阿里云“网红"运维工程师白金:做一个平凡的圆梦人
2021-05-09
AnalyticDB for PostgreSQL 6.0 新特性介绍
2021-05-09
Alibaba Cloud Linux 2 LTS 正式发布,提供更高性能和更多保障!
2021-05-09
从单体迈向 Serverless 的避坑指南
2021-05-09
卡顿人生,如何拯救?
2021-05-09
对容器镜像的思考和讨论
2021-05-09
【OpenYurt 深度解析】边缘网关缓存能力的优雅实现
2021-05-09
互联网泛娱乐直播安全的解决之道
2021-05-09
java实现哈弗曼树
2021-05-09
李笑来必读书籍整理
2021-05-09
vue书籍整理
2021-05-09
产品类书籍整理
2021-05-09
记Java中有关内存的简单认识
2021-05-09
Mybatis配置解析
2021-05-09
在.NET中使用DiagnosticSource
2021-05-09