基于 Python+UIautomation 的 WindowsGUI 自动化测试实战 (一)- 记事本
作者:虫无涯
- 2023-03-06 陕西
本文字数:1873 字
阅读完需:约 6 分钟
1 测试需求
模拟用户操作,打开记事本进行内容输入
2 测试步骤
2.1 用例 1
打开记事本;
窗口最大化;
输入"
人生苦短,我用Python!"
;关闭窗口;
不保存直接退出。
2.2 用例 2
打开记事本;
窗口最大化
输入:
Python之禅!
优美胜于丑陋(Python 以编写优美的代码为目标)
明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)
简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)
复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)
扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)
间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)
可读性很重要(优美的代码是可读的)
即便假借特例的实用性之名,也不可违背这些规则(这些规则至高无上)
不要包容所有错误,除非你确定需要这样做(精准地捕获异常,不写 except:pass 风格的代码)
当存在多种可能,不要尝试去猜测
而是尽量找一种,最好是唯一一种明显的解决方案(如果不确定,就用穷举法)
虽然这并不容易,因为你不是 Python 之父(这里的 Dutch 是指 Guido )
做也许好过不做,但不假思索就动手还不如不做(动手之前要细思量)
如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然(方案测评标准)
命名空间是一种绝妙的理念,我们应当多加利用(倡导与号召)"
复制代码
关闭窗口;
不保存直接退出。
3 实现脚本
# -*- coding:utf-8 -*-
import unittest
import time
import uiautomation
import subprocess
class 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 实现效果
划线
评论
复制
发布于: 刚刚阅读数: 4
版权声明: 本文为 InfoQ 作者【虫无涯】的原创文章。
原文链接:【http://xie.infoq.cn/article/9eb404691a66f59178079ee7d】。文章转载请联系作者。
虫无涯
关注
专注测试领域各种技术研究、分享和交流~ 2019-12-11 加入
CSDN测试领域优质创作者 | CSDN博客专家 | 阿里云专家博主 | 华为云享专家 | 51CTO专家博主
评论