基于Python+UIautomation的WindowsGUI自动化测试实战(一)-记事本

简介: 基于Python+UIautomation的WindowsGUI自动化测试实战(一)-记事本

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 实现效果

在这里插入图片描述

目录
相关文章
|
2月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
335 7
|
2月前
|
数据采集 Web App开发 数据安全/隐私保护
实战:Python爬虫如何模拟登录与维持会话状态
实战:Python爬虫如何模拟登录与维持会话状态
|
2月前
|
弹性计算 人工智能 前端开发
在阿里云ECS上部署n8n自动化工作流:U2实例实战
本文介绍如何在阿里云ECS的u2i/u2a实例上部署开源工作流自动化平台n8n,利用Docker快速搭建并配置定时任务,实现如每日抓取MuleRun新AI Agent并推送通知等自动化流程。内容涵盖环境准备、安全组设置、实战案例与优化建议,助力高效构建低维护成本的自动化系统。
511 5
|
2月前
|
存储 数据采集 监控
Python文件操作全攻略:从基础到高级实战
本文系统讲解Python文件操作核心技巧,涵盖基础读写、指针控制、异常处理及大文件分块处理等实战场景。结合日志分析、CSV清洗等案例,助你高效掌握文本与二进制文件处理,提升程序健壮性与开发效率。(238字)
333 1
|
2月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
276 0
|
2月前
|
机器学习/深度学习 监控 数据挖掘
Python 高效清理 Excel 空白行列:从原理到实战
本文介绍如何使用Python的openpyxl库自动清理Excel中的空白行列。通过代码实现高效识别并删除无数据的行与列,解决文件臃肿、读取错误等问题,提升数据处理效率与准确性,适用于各类批量Excel清理任务。
370 0
|
2月前
|
数据采集 运维 监控
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
本文系统解析爬虫与自动化核心技术,涵盖HTTP请求、数据解析、分布式架构及反爬策略,结合Scrapy、Selenium等框架实战,助力构建高效、稳定、合规的数据采集系统。
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
|
3月前
|
运维 Linux 网络安全
自动化真能省钱?聊聊运维自动化如何帮企业优化IT成本
自动化真能省钱?聊聊运维自动化如何帮企业优化IT成本
127 4
|
5月前
|
运维 监控 安全
从实践到自动化:现代运维管理的转型与挑战
本文探讨了现代运维管理从传统人工模式向自动化转型的必要性与路径,分析了传统运维的痛点,如效率低、响应慢、依赖经验等问题,并介绍了自动化运维在提升效率、降低成本、增强系统稳定性与安全性方面的优势。结合技术工具与实践案例,文章展示了企业如何通过自动化实现运维升级,推动数字化转型,提升业务竞争力。

推荐镜像

更多