基于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浏览器,有的 ...
随机推荐
- arts-week10
Algorithm 905. Sort Array By Parity - LeetCode Review Who's Afraid of the Big Bad Preloader? 一文读懂前端缓 ...
- Python 微博搜索爬虫
微博搜索爬虫 网页分析 由于网页端反爬虫机制比较完善所以才去移动端进行爬虫. url地址:https://m.weibo.cn/ 搜索框,输入关键词进行搜索 对网页进行抓包,找到相关数据 查看数据是否 ...
- Sentinel与OpenFeign 服务熔断那些事
点赞再看,养成习惯,微信搜索[牧小农]关注我获取更多资讯,风里雨里,小农等你,很高兴能够成为你的朋友. 项目源码地址:公众号回复 sentinel,即可免费获取源码 在上一篇中,我们讲解了 Senti ...
- Winforms选择文件夹、文件
更新记录: 2022年5月28日 初始记录 选择文件夹 if (this.folderBrowserDialog1.ShowDialog() == DialogResult.OK) { //获得用户选 ...
- 6G显卡显存不足出现CUDA Error:out of memory解决办法
从6月初开始,6G显存的显卡开始出现CUDA Error:out of memory的问题,这是因为dag文件一直在增加,不过要增加到6G还需要最少两年的时间. 现在出现问题的原因是1.内核太古老 ...
- ThreadLocal的简单理解
目录 一.背景 二.ThreadLocal解决的问题 三.如何创建一个ThreadLocal实例 四.ThreadLocal如何做到线程变量隔离 1.理解3个类 2.看下set方法是如何实现的 3.看 ...
- HashSet存储自定义类型元素和LinkedHashSet集合
HashSet集合存储自定义类型元素 HashSet存储自定义类型元素 set集合报错元素唯一: ~存储的元素(String,Integer,-Student,Person-)必须重写hashCode ...
- SpringMVC-01
1. 概述 1.1 概念 SpringMVC是一种基于Java实现MVC模型的轻量级Web框架 优点 使用简单,开发便捷(相比于Servlet) 灵活性强 项目请求响应架构演进: 软件三层 软件三层 ...
- 研发效能生态完整图谱&DevOps工具选型必看
本文主要梳理了研发效能领域完整的方向图谱以及主流工具,其中对少部分工具也做了一些点评.看了之后,大家可以对研发效能这个领域有个整体认识,同时研发效能落地的时候也有对应的工具(黑话叫抓手)可以选择. 我 ...
- 使用vs2022编译assimp,并基于OpenGL加载模型
Assimp :全称为Open Asset Import Library,这是一个模型加载库,可以导入几十种不同格式的模型文件(同样也可以导出部分模型格式).只要Assimp加载完了模型文件,我们就可 ...