当前位置:网站首页>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
边栏推荐
- View触摸分析
- Unity C# 网络学习(九)——WWWFrom
- The DOTPLOT function in the epidisplay package of R language visualizes the frequency of data points in different intervals in the form of point graphs, specifies the grouping parameters with the by p
- vue中缓存页面 keepAlive使用
- One copy ten, CVPR oral was accused of plagiarizing a lot, and it was exposed on the last day of the conference!
- The heavyweight white paper was released. Huawei continues to lead the new model of smart park construction in the future
- Notes on writing questions in C language -- table tennis competition
- 详解C语言编程题:任意三条边能否构成三角形,输出该三角形面积并判断其类型
- 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
- Naacl2022: (code practice) good visual guidance promotes better feature extraction, multimodal named entity recognition (with source code download)
猜你喜欢

这才是优美的文件系统挂载方式,亲测有效

获取两个dataframe的交并差集

【云原生】 ”人人皆可“ 编程的无代码 iVX 编辑器

15 BS object Node name Node name String get nested node content

One copy ten, CVPR oral was accused of plagiarizing a lot, and it was exposed on the last day of the conference!
![[solo π] ADB connects multiple mobile phones](/img/44/4bd88725434fb67c9237645f024071.png)
[solo π] ADB connects multiple mobile phones

Bank of Beijing x Huawei: network intelligent operation and maintenance tamps the base of digital transformation service

关于 selenium.common.exceptions.WebDriverException: Message: An unknown server-side error 解决方案(已解决)

文献1

使用 Abp.Zero 搭建第三方登录模块(二):服务端开发
随机推荐
子查询的使用
clustermeet
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
Cluster addslots establish a cluster
Unity uses skybox panoramic shader to make panorama preview. There is a gap. Solution
It's natural for the landlord to take the rent to repay the mortgage
设计人员拿到的工程坐标系等高线CAD图如何加载进图新地球
IP certificate application process of sectigo
房东拿租金去还房贷是天经地义的嘛
The DOTPLOT function in the epidisplay package of R language visualizes the frequency of data points in different intervals in the form of point graphs, specifies the grouping parameters with the by p
挖财注册开户安全吗,有没有什么风险?
Numpy basic use
使用 Abp.Zero 搭建第三方登录模块(二):服务端开发
Redis集群消息
clustermeet
Keil4打开单片机工程一片空白,cpu100%程序卡死的问题解决
获取两个dataframe的交并差集
SAP gui 770 下载
Redis-集群
R语言dplyr包summarise_at函数计算dataframe数据中多个数据列(通过向量指定)的均值和中位数、指定na.rm参数配置删除缺失值