基于Sikuli GUI图像识别框架的PC客户端自动化测试实践
一、GUI图像识别框架元祖:Sikuli

- Python 语言级别 2.7(由Jython支持)
- 支持运行RobotFramework文本脚本
- Ruby 语言级别 1.9 和 2.0(由JRuby支持)
- JavaScript(受 Java 脚本引擎支持)
- 应用程序或网页的日常自动化任务
- 玩游戏
- IT系统和网络的管理
二、Sikuli运行原理

三、Sikuli安装
四、Sikuli IDE主界面基本使用


- 一个脚本对应一个目录,目录中对应脚本中的图标截图、python脚本,
五、Sikuli 脚本语法
- 定位APP窗口:myApp.window()
- 聚焦到当前APP:myApp.focus()
- 判断元素是否存在:exists()
- 点击某个元素或图标:click()
- 输入文本内容:type("http://www.baidu.com")
- 按下键盘按键:type(Key.ENTER) 按键名要大写
六、Sikuli 应用示例
import time
import random myApp=App("yueyun-im") # 声明APP实例
if not myApp.window(): # 判断当前是否处于APP窗口
openApp("D:\\yueyun-im\\yueyun-im.exe") # 如果不处于APP窗口,则打开指定位置EXE
myApp.focus() # 聚焦于APP
if exists("K7iX.png"): # 判断图标是否存在
click("K7iX.png") # 点击指定图标按钮
if not exists("1655945972853.png"):
click("1655946081065.png")
click("1655945972853.png")
#while 'p' in 'python':
for i in range(10):
type("TEST-SIKULI-MSG-"+str(i))
time.sleep(0.2) # 休眠3秒
#click("1655946081065.png")
type(Key.ENTER) # 按下键盘的ENTER键,按键名要大写
type(Key.ENTER)
myApp.close() # 关闭APP
七、Sikuli 优势及局限
1.优势
2.局限
Sikuli 使用小结
- 尽管sikuli用来实现复杂的测试场景不太现实,这也是所有GUI自动化测试无法改变的现实。但用来做一些特定场景的测试还是游刃有余,比如:
- 对于web自动化、APP自动化主要用该端特定的自动化框架,如selenium、appium,sikuli作为辅助、可以和selenium等结合使用;
- 对于特定的、复杂的场景,如游戏界面、flash应用等难以识别到元素的应用界面,可以使用sikuli;
- 今天在测试场景②的过程中也发现了一个bug:【当前聊天窗口,连续下载图片过程中,程序闪退】。虽然硬说是sikuli测出来的bug有些牵强,但本身自动化测试也不是用来发现bug的,sikuli也算是出了很大一份力。只要能合理地利用,任何不起眼的工具都可以发挥它的价值!
更多实用干货,同步首发于微信公众号【测试开发实战】,欢迎关注!

基于Sikuli GUI图像识别框架的PC客户端自动化测试实践的更多相关文章
- 基于netty实现rpc框架-spring boot客户端
上篇讲了RPC服务端的实现.原理就是解析netty通道数据拿到类.方法及入参等信息,然后通过java反射机制调用本地接口返回结果.没有用到很复杂的技术. 这篇我们将客户端的实现.说白了客户端的任务很简 ...
- PC客户端自动化测试工具--pywinauto
1.安装 pywinauto pip install pywinauto 2.打开PC的.exe可执行文件的,一种方式就够用了 from pywinauto import application ap ...
- 基于图像识别框架Airtest的Windows项目自动化测试实践
写在前面 上一篇分享了<基于Sikuli GUI图像识别框架的PC客户端自动化测试实践>,但sikuli看起来怎么都像是上个世纪的界面风格,且功能过于简陋.而同样基于图像识别框架的Airt ...
- python 实现 PC 客户端自动化快速入门:pywinauto !
本文转载自:http://www.lemfix.com/topics/420 一.前言 我们柠檬班的小可爱,在学完我们柠檬班自动化的课程之后,就掌握了接口自动化,web自动化,app自动化,这些工 ...
- [1]开发准备-使用C#.NET开发基于本地数据缓存的PC客户端
小记:本人是PHPer,对C#.NET的开发只能说看得懂,也写得了功能略简单的PC客户端程序,下面的是本人开发一款名叫“理财速记”的PC客户端软件的全过程记录,期间包括比较繁琐的C#.NET资料查询等 ...
- 基于滴答清单 Web 开发的 PC 客户端
基于滴答清单 Web 开发的 PC 客户端 关于「滴答清单」 滴答清单是一款不可多得的 GTD 效率工具,它有着清晰明了的界面设计.恰到好处的功能设置.稳定的同步服务,如果你还缺少一款简洁而有效的 G ...
- 搭建QQ聊天通信的程序:(1)基于 networkcomms.net 创建一个WPF聊天客户端服务器应用程序 (1)
搭建QQ聊天通信的程序:(1)基于 networkcomms.net 创建一个WPF聊天客户端服务器应用程序 原文地址(英文):http://www.networkcomms.net/creating ...
- 用node-webkit 开发 PC 客户端
7月 3 2013 导言 node-webkit 是一个很神奇的桌面客户端项目,正如这个项目的名字,这个项目是由node 和 webkit 构成,简单来说,就是你可以用HTML 5和 node 进 ...
- 开发WebApp之PC客户端
HTML5的跨平台性还是很好的,苹果.Android手机都可以用,所在最近使用Jquery Mobile开发了一个手机端应用程序,一次开发,多个平台使用. 但我们的很多客户使用的是还是IE浏览器,有的 ...
随机推荐
- 报‘galleryElements’
是因为组件的data(){ //没有return{ }引起的 }
- Three.js 打造缤纷夏日3D梦中情岛 🌊
声明:本文涉及图文和模型素材仅用于个人学习.研究和欣赏,请勿二次修改.非法传播.转载.出版.商用.及进行其他获利行为. 背景 深居内陆的人们,大概每个人都有过大海之梦吧.夏日傍晚在沙滩漫步奔跑:或是在 ...
- 魔改了一下bootstrap-treeview组件,发布个NPM包体验一下
前言 之前在这篇文章 基于.NetCore开发博客项目 StarBlog - (8) 分类层级结构展示 中说到,我为了让文章分类列表支持层级结构,用了一个树形组件,不过这个组件太老了,使用的Boots ...
- Solon 1.8.0 发布,云原生微服务开发框架
相对于 Spring Boot 和 Spring Cloud 的项目 启动快 5 - 10 倍 qps 高 2- 3 倍 运行时内存节省 1/3 ~ 1/2 打包可以缩小到 1/2 ~ 1/10(比如 ...
- SCI论文写作注意事项
1. 先写结论:(划定范围,以防添加无效的内容) 并非一开始就把整个结论都写出来,而是把
- Arraylist集合、对象数组
Arraylist集合 ArrayList是List接口的一个实现类,它是程序中最常见的一种集合. 他的特点:在增加或删除指定位置的元素时,会创建新的数组,效率比较低,因此不适合做大量的增删操作,Ar ...
- BUUCTF-大白
大白 使用16进制打开没发现什么异常的,根据提示来看图片可能没有显示完整 将第七位修改为02即可正常查看图片.
- Javaweb-Servlet学习
1.Servlet简介 Servlet就是sun公司开发动态web的一门技术 Sun在这些API中提供一个借口叫做:Servlet,如果你想开发一个Servlet程序,只需要完成两个小步骤: 编写一个 ...
- javascript写淡入淡出效果的轮播图
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Vue2自定义插件的写法-Vue.use()
最近在用vue2完善一个项目,顺便温习下vue2的基础知识点! 有些知识点恰好没用到时间一长就会淡忘,这样对自己是一种损失. 定义一个对象 对象里可以有任何内容 但install的函数是必不可少的,因 ...