基于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浏览器,有的 ...
随机推荐
- Web 后端的一生之敌:分页器
分页器是 Web 开发中常见的功能,看似简单的却经常隐藏着各种奇怪的坑,堪称 WEB 后端开发的一生之敌. 常见问题 边翻页边写入导致内容重复 某位用户正在浏览我的博客,他看到第一页最后一篇文章是 & ...
- MAUI候选版本3发布啦
我们很高兴发布.NET 多平台应用程序UI (.NET MAUI) 候选版本3,这个版本包含一系列新的改进.与以前的候选版本一样,RC3 包含在"上线"支持政策中,这意味着Micr ...
- 【算法】冒泡排序(Bubble Sort)(一)
冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是 ...
- MySQL(8) - MySQL的事务机制
MySQL数据库的事务机制 1.1.事务的概念和特性 1.2.事务的隔离级别 repeatable read是mysql默认的事务隔离级别 #事务A #事务A,临时修改工资,未commit, STAR ...
- 129_Power Pivot&Power BI DAX不同维度动态展示&动态坐标轴
博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 某天在和那还是叫我大铁吧 交流关于季度&月度同时展示的问题,感概中国式报表真的需求很微妙. 下面来看看到 ...
- 对于vjudge在有些网络下无法打开的问题
因为有些网络会屏蔽vjudge,所以打开 镜像网址 不行再试试这个:最新镜像网址
- CSS中html的标签元素分类
在CSS中,html中的标签元素大体被分为三种不同的类型: 块状元素.内联元素(又叫行内元素)和内联块状元素. 常用的块状元素有: <div>.<p>.<h1&g ...
- 学学dotnet core中的身份验证和授权-1-概念
前言 身份验证: Authentication 授权: Authorization net core 中的身份验证和授权这两个部分,是相辅相成的.当初我在学在部分的时候,是看的 net core 官网 ...
- while循环结构
一.循环: 1.场景: ①.用户名和密码,反复输入 ②.计算1-100之间 ③.游戏,重生 ④.-- 2.方式 ①.while ②.for 3.while格式 while 条件:要循环执行的代码 布尔 ...
- AtCoder ABC 250 总结
AtCoder ABC 250 总结 总体 连续若干次一样的结果:30min 切前 4 题,剩下卡在 T5 这几次卡在 T5 都是一次比一次接近, 什么 dp 前缀和打挂,精度被卡,能水过的题连水法都 ...