Sikuli 基于图形识别的自动化测试技术

简介: Sikuli 基于图形识别的自动化测试技术

作为一名测试人员,测试过程如果遇到应用程序界面结构庞大,页面设计频繁变动,对页面元素定位比较困难的的情况,又需要进行大量重复操作的测试,我们有什么快速解决问题的方法呢?也许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,可以进行拖拽式的编写方式。

如下所示:

893×1073 103 KB
这种方式运行时要依赖于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完成复杂的大型自动化测试,还不是一个最佳选择,但是它小而美的特点还是可以应用于测试的很多场景的

相关文章
|
7天前
|
前端开发 JavaScript 测试技术
前端测试技术中,如何提高集成测试的效率?
前端测试技术中,如何提高集成测试的效率?
|
7天前
|
运维 监控 安全
运维自动化:提升效率与可靠性的关键技术
在信息技术飞速发展的今天,企业对IT系统的稳定性和高效性要求越来越高。运维自动化作为实现这一目标的重要手段,通过软件工具来模拟、执行和管理IT运维任务,不仅大幅提高了工作效率,还显著增强了系统的可靠性。本文将探讨运维自动化的概念、实施步骤以及面临的挑战,旨在为读者提供一份关于如何有效实施运维自动化的指南。
|
7天前
|
数据采集 前端开发 安全
前端测试技术
前端测试是确保前端应用程序质量和性能的重要环节,涵盖了多种技术和方法
|
1月前
|
存储 监控 网络协议
服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
【10月更文挑战第11天】服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
109 32
|
14天前
|
前端开发 JavaScript 测试技术
前端小白逆袭之路:如何快速掌握前端测试技术,确保代码质量无忧!
【10月更文挑战第30天】前端开发技术迭代迅速,新手如何快速掌握前端测试以确保代码质量?本文将介绍前端测试的基础知识,包括单元测试、集成测试和端到端测试,以及常用的测试工具如Jest、Mocha、Cypress等。通过实践和学习,你也能成为前端测试高手。
33 4
|
19天前
|
编解码 安全 Linux
网络空间安全之一个WH的超前沿全栈技术深入学习之路(10-2):保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali——Liinux-Debian:就怕你学成黑客啦!)作者——LJS
保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali以及常见的报错及对应解决方案、常用Kali功能简便化以及详解如何具体实现
|
19天前
|
人工智能 安全 Linux
网络空间安全之一个WH的超前沿全栈技术深入学习之路(4-2):渗透测试行业术语扫盲完结:就怕你学成黑客啦!)作者——LJS
网络空间安全之一个WH的超前沿全栈技术深入学习之路(4-2):渗透测试行业术语扫盲完结:就怕你学成黑客啦!)作者——LJS
|
19天前
|
安全 大数据 Linux
网络空间安全之一个WH的超前沿全栈技术深入学习之路(3-2):渗透测试行业术语扫盲)作者——LJS
网络空间安全之一个WH的超前沿全栈技术深入学习之路(3-2):渗透测试行业术语扫盲)作者——LJS
|
19天前
|
SQL 安全 网络协议
网络空间安全之一个WH的超前沿全栈技术深入学习之路(1-2):渗透测试行业术语扫盲)作者——LJS
网络空间安全之一个WH的超前沿全栈技术深入学习之路(1-2):渗透测试行业术语扫盲)作者——LJS
|
1月前
|
机器学习/深度学习 人工智能 边缘计算
AI技术趋势:从自动化到智能化的演变
AI技术趋势:从自动化到智能化的演变