前段时间写了做web程序界面自动化的简单例子,今天写一下windows gui程序界面自动化测例子吧。

  ps.咱中国人YinKaisheng封装的UIAutomation库也很好用,https://github.com/yinkaisheng/Python-UIAutomation-for-Windows

def openwordpad():
app = application.Application()
wordpad=app.start(r"C:\Program Files\Windows NT\Accessories\wordpad.exe")
wordpad.wordpadclass.RICHEDIT50W.TypeKeys("hello world it is good to see you here!".replace(' ','{SPACE}' ))
time.sleep(1)
#右键-复制一段文字-粘贴
wordpad.wordpadclass.RICHEDIT50W.TypeKeys('^a')
time.sleep(1)
wordpad.wordpadclass.RICHEDIT50W.RightClickInput(coords=(500, 100))
time.sleep(1)
wordpad.wordpadclass.RICHEDIT50W.ClickInput(coords=(550, 150))
#复制粘贴多次
for i in range(2):
wordpad.wordpadclass.RICHEDIT50W.RightClickInput(coords=(500, 300))
time.sleep(1)
wordpad.wordpadclass.RICHEDIT50W.ClickInput(coords=(550, 370))
#找到保存菜单 按alt键
#还是用快捷键保存吧。。。
wordpad.wordpadclass.RICHEDIT50W.TypeKeys('^s')
save_dlg= app.window_(title_re = u"保存为", class_name = "#32770")
save_dlg.edit.TypeKeys(u"c:\\testwordpad")
wordpad[u'保存为'][u'保存(S)'].SetFocus()
wordpad[u'保存为'][u'保存(S)'].Click()
wordpad.wordpadclass.TypeKeys('%{F4}')

  pywinauto用法还是比较简单的,网上也有不少介绍了。不过pywinauto对右键菜单识别并不好,所以不得已只能靠操作移动光标到指定坐标的方法来点击右键,这样兼容性就很差了。在官方的todolist中有这么一项

Make it easy to work with context(right click) menu

  不过pywinauto也已经有大半年没发新版了。。。

  最后,我还是那个观点,做界面自动化要根据实际情况,对于常年不变的界面有较大用处,如果界面经常变化就要灵活变通测试方式了。

pywinauto简单操作写字板的例子的更多相关文章

  1. 一起来学习Android自定义控件2-简单的写字板控件

    概述 上一篇文章我们对自定义控件进行了一个大体的知识介绍.今天就来学习自定义一个简单的写字板控件. 先来看看效果图 就是简单的根据手指写下的轨迹去画出内容 实现 在上一篇文章里提到了android官方 ...

  2. Android自己定义控件2-简单的写字板控件

    概述 上一篇文章我们对自己定义控件进行了一个大体的知识介绍. 今天就来学习自己定义一个简单的写字板控件. 先来看看效果图 就是简单的依据手指写下的轨迹去画出内容 实现 在上一篇文章里提到了androi ...

  3. C#中检测某个类(方法、程序集等各种部分)是否应用了指定的特性以及对特性的一些简单操作

    前言:不管是自定义的一些特性,或者是C#中内置的特性,均继承自Attribute这个类,这个类也提供了一些方法,方便我们使用. Attribute类有三个静态方法:1.IsDefined,如果有指定的 ...

  4. MongoDB快速入门学习笔记2 MongoDB的概念及简单操作

    1.以下列举普通的关系型数据库和MongoDB数据库简单概念上的区别: 关系型数据库 MongoDB数据库 说明 database database 数据库 table collection 数据库表 ...

  5. Visual Studio 2017中使用正则修改部分内容 如何使用ILAsm与ILDasm修改.Net exe(dll)文件 C#学习-图解教程(1):格式化数字字符串 小程序开发之图片转Base64(C#、.Net) jquery遍历table为每一个单元格取值及赋值 。net加密解密相关方法 .net关于坐标之间一些简单操作

    Visual Studio 2017中使用正则修改部分内容   最近在项目中想实现一个小工具,需要根据类的属性<summary>的内容加上相应的[Description]特性,需要实现的效 ...

  6. moloch1.8.0简单操作手册

    moloch1.8.0简单操作手册 Sessions 页面:Sessions主要通过非常简单的查询语言来构建表达式追溯数据流量,以便分析. SPIView 页面: SPIGraph页面:SPIGrap ...

  7. 手把手教你从零写一个简单的 VUE--模板篇

    教程目录1.手把手教你从零写一个简单的 VUE2.手把手教你从零写一个简单的 VUE--模板篇 Hello,我又回来了,上一次的文章教会了大家如何书写一个简单 VUE,里面实现了VUE 的数据驱动视图 ...

  8. x01.MagicCube: 简单操作

    看最强大脑,发现魔方还是比较好玩的,便买了一个,对照七步还原法,居然也能成功还原. 为什么不写一个魔方程序呢?在网上找了找,略作修改,进行简单操作,还是不错的,其操作代码如下: protected o ...

  9. js简单操作Cookie

    贴一段js简单操作Cookie的代码: //获取指定名称的cookie的值 function getCookie(objName) { var arrStr = document.cookie.spl ...

随机推荐

  1. Codeforces 1154F - Shovels Shop - [DP]

    题目链接:https://codeforces.com/contest/1154/problem/F 题解: 首先,可以确定的是: 1.$(x,y)$ 里 $x>k$ 的都不可能用: 2.肯定买 ...

  2. Python——开发一个自动化微信投票器【附代码实例方法】

    一个研究Python实践,最近研究一个投票的东东,主要是想测试利用Python实现刷微信投票. 本文纯粹为了记录一下 webdriver直接操作页面按钮的方法: #!/usr/bin/python # ...

  3. IDEA中创建maven项目后解决main文件夹下目录不全的问题

    IDEA创建maven-archetype-webapp项目的时候,创建完成后发现在main文件夹下没有java,resource等源文件夹. 解决方法: 1.选择File->Project S ...

  4. 如何修改运行中的docker容器的端口映射和挂载目录

    在docker run创建并运行容器的时候,可以通过-p指定端口映射规则.但是,我们经常会遇到刚开始忘记设置端口映射或者设置错了需要修改.当docker start运行容器后并没有提供一个-p选项或设 ...

  5. mysql语句,插入id随机生成

    insert into 表名 VALUES(uuid(),…) 还有一个uuid_short(),只有数字 insert into 表名 VALUES(uuid_short(),…)

  6. Hadoop生态集群YARN详解

    一,前言 Hadoop 2.0由三个子系统组成,分别是HDFS.YARN和MapReduce,其中,YARN是一个崭新的资源管理系统,而MapReduce则只是运行在YARN上的一个应用,如果把YAR ...

  7. 浅析MySQL InnoDB的隔离级别

    MySQL InnoDB存储引擎中事务的隔离级别有哪些?对应隔离级别的实现机制是什么? 本文就将对上面这两个问题进行解答,分析事务的隔离级别以及相关锁机制. 隔离性简介 隔离性主要是指数据库系统提供一 ...

  8. idea没配置Tomcat容器报错及解决方法

    servlet报错,提示没有一个容器,需要一个容器来运行,说明没有tomcat容器. 看看idea的配置有没有配置tomcat? 果然没有配置tomcat容器(正常画红框的地方会出现配置的tomcat ...

  9. 福州大学软件工程1916 | W班 作业成绩排名汇总

    评分链接: 第一次作业-准备篇 https://www.cnblogs.com/deerCode/p/10527237.html 第二次作业-结对第一次-文献摘要热词统计原型设计 https://ww ...

  10. Python 字符串操作 starswitch() find() re.IGNORECASE replace() join()

    检测开头&结尾开头:startswith()url = 'http://www.python.org' url.startswith('http') >>>True 结尾:e ...