当前位置:网站首页>Sikuli 基于图形识别的自动化测试技术
Sikuli 基于图形识别的自动化测试技术
2022-06-26 14:52:00 【霍格沃兹测试开发学社】
作为一名测试人员,测试过程如果遇到应用程序界面结构庞大,页面设计频繁变动,对页面元素定位比较困难的的情况,又需要进行大量重复操作的测试,我们有什么快速解决问题的方法呢?也许Sikuli可以成为你的选择之一,它可以让你摆脱对控件API的依赖,通过实时检索当前屏幕的图像,获取可操作对象,模拟用户行为,校验真实的屏幕展示结果。
什么是Sikuli?
Sikuli自动化测试,是将屏幕上展示的内容,通过图像识别,用来定位到元素的位置,并进行操作GUI组件,最后也可以通过识别图片中的内容来判断操作是否成功。这样使得测试人员可以通过截图来代替编写代码,从而降低测试成本,简化编写测试脚本的流程。
Sikuli是在墨西哥维乔印第安人的语言里是”上帝之眼”的意思,目标是让电脑能像人一样去看真实的世界,并与之交互。
Sikuli的开发者
Sikuli是一个开放源码的最初的用户界面设计组织在麻省理工学院的研究项目,现在是保持并进一步协调与开源社区开发的Sikuli实验室在美国科罗拉多州博尔德大学。这是支持的,部分由国家科学基金会奖IIS-0447800,广达电脑的一部分的TParty项目。Sikuli 的MIT许可证下发布的。
下载和安装
版本1.1.3以下官方下载页面是
https://launchpad.net/sikuli/sikulix
新版本的1.1.4以上在
https://raiman.github.io/SikuliX1/downloads.html
如果使用1.1.3版本以下的,下载文件中直接双击打开sikulix.jar文件便是sikuli提供IDE,可以进行拖拽式的编写方式。
如下所示:
这种方式运行时要依赖于IDE,不方便使用脚本启动去执行测试,所以有另外两种方式,直接编写python脚本来执行。
01
纯python环境-Lackey库
Lackey是Python的一个自动化库,专为易用性和Sikuli自动化脚本的交叉兼容而生。它提供了一个简单但强大的API,用来查找屏幕上的图片,以及使用鼠标和键盘的基本用户输入。
√
Lackey依赖库
①
numpy
②
pillow
③
opencv
④
keyboard
安装命令:pip install Lackey
脚本中导入方式:from lackey import *
该库支持截图类型有.bmp, .pbm, .ras, .jpg, .tiff, and .png
find("***.png"):查找元素,不存在抛出异常
exists("***.png"):查找元素,返回true或false
wait("***.png",5):等待指定秒数,查找元素
click("***.png"):点击元素
dubleClick("***.png"):双击元素
input_(“text”):输入文本
……
实现了一个类似monkey工具的脚本示例如下(将所有截图放在工程里的btn_pictrues目录下即可):
02
写python脚本调用sikulixapi.jar中的API
** **准备环境
1
安装jython: pip install JPype1
2
安装 VCForPython27
3
安装JDK,并配置%JAVA_HOME%
可能遇到的坑
调用getDefaultJVMPath,找不到JAVA_HOME;或者启动java虚拟机会崩溃。可能是由于java和python安装版本位数不同导致的,两个同为32位或者64位软件才能正常运行。
注: 使用java -d32 或者 -d64查看32还是64位;终端中输入python,如下图查看查看32还是64位。
总结
Sikuli的优点是简单容易上手,支持多种编程语言(python/java),但是缺点也很明显。图片的分辨率色彩和尺寸等对程序执行结果影响很大,一台设备上执行成功的脚本可能一直到另一台设备上不能成功,需要重新截图。而且只能检测当前桌面上显示的内容,后台进程无法操作,pc端的所有用户操作并没有完全支持,sikuli本身还不完善,还在开发升级阶段。所以使用sikuli完成复杂的大型自动化测试,还不是一个最佳选择,但是它小而美的特点还是可以应用于测试的很多场景的
获取更多相关资料戳:https://qrcode.ceba.ceshiren.com/link?name=article&project_id=qrcode&from=jianshu×tamp=1656224665&author=wuyue
边栏推荐
- kubernetes的Controller之deployment
- SAP 销售数据 实际发货数据导出 销量
- 【云原生】 ”人人皆可“ 编程的无代码 iVX 编辑器
- Unity C# 网络学习(八)——WWW
- 网上找客户经理办理股票开户安全吗??
- Numpy基本使用
- Minister of investment of Indonesia: Hon Hai is considering establishing electric bus system and urban Internet of things in its new capital
- [solo π] ADB connects multiple mobile phones
- The tablestack function of the epidisplay package of R language makes a statistical summary table (descriptive statistics of groups, hypothesis test, etc.), does not set the by parameter to calculate
- Unity 利用Skybox Panoramic着色器制作全景图预览有条缝隙问题解决办法
猜你喜欢

JVM 输出 GC 日志导致 JVM 卡住,我 TM 人傻了

15 bs对象.节点名称.节点名称.string 获取嵌套节点内容

This is the graceful file system mounting method, which is effective through personal testing

Authoritative announcement on the recruitment of teachers in Yan'an University in 2022

赠书 | 《认知控制》:我们的大脑如何完成任务?

Notes on writing questions in C language -- table tennis competition

【soloπ】adb连接单个多个手机

C语言刷题随记 —— 乒乓球比赛

使用 Abp.Zero 搭建第三方登录模块(一):原理篇

Use abp Zero builds a third-party login module (II): server development
随机推荐
R language dplyr package summary_ The at function calculates the mean and median of multiple data columns (specified by vectors) in the dataframe data, and specifies na RM parameter configuration dele
R语言使用epiDisplay包的aggregate函数将数值变量基于因子变量拆分为不同的子集,计算每个子集的汇总统计信息、使用aggregate.data.frame函数计算分组汇总统计信息
SAP gui 770 下载
R语言epiDisplay包的dotplot函数通过点图的形式可视化不同区间数据点的频率、使用by参数指定分组参数可视化不同分组的点图分布、使用cex.X.axis参数指定X轴轴刻度数值标签字体的大小
Halcon C# 设置窗体字体,自适应显示图片
Use abp Zero builds a third-party login module (II): server development
Pod of kubernetes
redis集群的重新分片与ASK命令
Excerpt from three body
R语言caTools包进行数据划分、scale函数进行数据缩放、class包的knn函数构建K近邻分类器
Numpy基本使用
View触摸分析
Sectigo的IP证书申请流程
【云原生】 ”人人皆可“ 编程的无代码 iVX 编辑器
重磅白皮书发布,华为持续引领未来智慧园区建设新模式
Is it safe for flush to register and open an account? Is there any risk?
使用RestCloud ETL Shell组件实现定时调度DataX离线任务
R language uses GLM function to build Poisson logarithm linear regression model, processes three-dimensional contingency table data to build saturation model, uses step function to realize stepwise re
Is it safe to open a stock account with the account manager online??
NAACL2022:(代码实践)好的视觉引导促进更好的特征提取,多模态命名实体识别(附源代码下载)...