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完成复杂的大型自动化测试,还不是一个最佳选择,但是它小而美的特点还是可以应用于测试的很多场景的

相关文章
|
2天前
|
机器学习/深度学习 人工智能 物联网
智能家居技术的未来:从自动化到人工智能
本文探讨了智能家居技术的发展趋势,从早期的自动化设备到现在的人工智能集成系统。文章首先介绍了智能家居的基本概念和历史发展,然后详细分析了当前智能家居技术的主要特点,包括物联网、机器学习和用户交互界面。接着,文章讨论了智能家居技术面临的挑战,如隐私保护、数据安全和技术标准化问题。最后,展望了未来智能家居技术的发展方向,包括更加智能化的家居管理、环境自适应能力和高级用户定制服务。文章旨在为读者提供一个关于智能家居技术发展的全面视角,并引发对未来生活方式的思考。
|
12天前
|
物联网 测试技术 持续交付
软件测试的艺术与科学:探索自动化测试框架未来技术的融合与创新:探索区块链、物联网和虚拟现实的交汇点
【8月更文挑战第30天】在软件开发的海洋中,测试是确保航行安全不可或缺的灯塔。本文将带领读者揭开软件测试神秘的面纱,深入理解自动化测试框架的重要性和实现方法。通过实际案例,我们将一起探索如何构建高效、可靠的自动化测试系统,从而保障软件质量,提升开发效率。
|
12天前
|
机器学习/深度学习 人工智能 自然语言处理
利用AI技术实现自动化文章生成
【8月更文挑战第31天】本文将介绍如何利用人工智能(AI)技术实现自动化文章生成。我们将通过一个简单的Python代码示例,展示如何使用自然语言处理(NLP)和机器学习算法来生成一篇关于“AI技术”的文章。这个示例将帮助我们理解AI技术在文本生成领域的应用,并激发我们对未来可能的创新和应用的思考。
|
12天前
|
人工智能 安全 物联网
智能家居技术的未来:从自动化到人工智能的演变
随着技术的飞速发展,智能家居已经从简单的自动化控制进化到了集成人工智能的高级阶段。本文将探讨智能家居技术的发展轨迹,分析其如何通过人工智能、物联网和数据分析等技术提升家居生活的便利性、安全性和效率。我们将以实际案例说明未来智能家居的趋势,并讨论在实现这一愿景过程中所面临的挑战与机遇。
|
20天前
|
Web App开发 JSON 测试技术
精通Postman接口测试:关联技术与自动化实践指南
这篇文章详细介绍了如何使用Postman进行接口测试,包括关联技术、自动化实践,以及如何通过环境变量和全局变量解决接口之间的关联性问题。
21 0
精通Postman接口测试:关联技术与自动化实践指南
|
1月前
|
机器学习/深度学习 人工智能 安全
智能家居技术的未来:从智能音箱到全屋自动化
探索智能家居技术的前沿,本文将带你了解如何通过集成创新技术,如物联网(IoT)、人工智能(AI)和机器学习,将简单的智能音箱转变为全面的全屋自动化系统。我们将深入探讨这些技术如何相互协作,提高家居生活的便捷性、安全性和能效,同时展望未来智能家居可能带来的变革。
|
1月前
|
机器学习/深度学习 存储 人工智能
智能家居技术的未来:从自动化到AI的演进
【8月更文挑战第11天】 本文将探索智能家居技术的演变历程和未来趋势,从最初的自动化设备到现在集成人工智能(AI)的系统。我们将深入了解AI如何改变我们与家居环境的互动,以及这些变化对日常生活的影响。文章旨在为读者提供智能家居技术发展的宏观视角,同时揭示AI在未来家居生活中扮演的核心角色。
50 2
|
1月前
|
机器学习/深度学习 人工智能 安全
智能家居技术的未来:从自动化到人工智能的演进
本文深入探讨了智能家居技术的发展轨迹,从早期的自动化控制到现在集成人工智能技术的高级应用。文章将展示如何通过创新技术增强家居安全、效率和舒适度,同时指出未来智能家居面临的挑战与机遇。
|
11天前
|
运维 Kubernetes 监控
自动化运维:使用Python脚本实现系统监控云原生技术实践:Kubernetes在现代应用部署中的角色
【8月更文挑战第31天】在现代IT运维管理中,自动化已成为提高效率和准确性的关键。本文将通过一个Python脚本示例,展示如何实现对服务器的自动监控,包括CPU使用率、内存占用以及磁盘空间的实时监测。这不仅帮助运维人员快速定位问题,也减轻了日常监控工作的负担。文章以通俗易懂的语言,逐步引导读者理解并实践自动化监控的设置过程。 【8月更文挑战第31天】本文旨在探索云原生技术的核心—Kubernetes,如何革新现代应用的开发与部署。通过浅显易懂的语言和实例,我们将一窥Kubernetes的强大功能及其对DevOps文化的影响。你将学会如何利用Kubernetes进行容器编排,以及它如何帮助你的
|
11天前
|
C# 开发者 Windows
WPF遇上Office:一场关于Word与Excel自动化操作的技术盛宴,从环境搭建到代码实战,看WPF如何玩转文档处理的那些事儿
【8月更文挑战第31天】Windows Presentation Foundation (WPF) 是 .NET Framework 的重要组件,以其强大的图形界面和灵活的数据绑定功能著称。本文通过具体示例代码,介绍如何在 WPF 应用中实现 Word 和 Excel 文档的自动化操作,包括文档的读取、编辑和保存等。首先创建 WPF 项目并设计用户界面,然后在 `MainWindow.xaml.cs` 中编写逻辑代码,利用 `Microsoft.Office.Interop` 命名空间实现 Office 文档的自动化处理。文章还提供了注意事项,帮助开发者避免常见问题。
34 0