首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >SikuliX - 可视化自动化与测试

SikuliX - 可视化自动化与测试

作者头像
wangmcn
发布2025-10-13 10:00:57
发布2025-10-13 10:00:57
6180
举报
文章被收录于专栏:AllTests软件测试AllTests软件测试

1、前言

在日常办公与软件测试中,重复的界面点击、表单填写、数据核对等操作往往耗费大量时间,而传统自动化工具常受限于应用程序接口(API)或源代码访问权限。

SikuliX凭借“视觉识别”核心技术,通过屏幕图像定位元素,无需依赖底层接口即可实现自动化操作,完美解决GUI(图形用户界面)自动化痛点。

2、简介

SikuliX可实现运行Windows、Mac或部分Linux/Unix系统的桌面电脑屏幕“所见内容”的自动化操作。它借助OpenCV提供技术支持的图像识别功能,来定位图形用户界面(GUI)组件。在无法便捷访问目标GUI内部结构,或难以获取待操作应用程序、网页源代码的场景下,这一特性尤为实用。

SikuliX支持的脚本语言如下:

  • Python:支持2.7版本(由Jython提供支持)
  • RobotFramework:支持运行其文本脚本
  • Ruby:支持1.9及2.0版本(由JRuby提供支持)
  • JavaScript(由Java脚本引擎提供支持)
  • 此外,你还可在Java编程中使用SikuliX,也能将其与任何支持Java的编程语言/脚本语言(如 Jython、JRuby、Scala、Clojure等)结合,进行编程或脚本编写。

目前,SikuliX暂不支持任何移动设备,但可通过桌面电脑上的对应模拟器,或基于虚拟网络计算(VNC)解决方案使用。而基于Android调试桥(ADB)的Android设备适配方案,目前仍处于早期实验阶段。

除了在屏幕上定位图像外,SikuliX还可模拟鼠标与键盘操作,与识别到的GUI元素进行交互。该功能支持多显示器环境,即便在远程系统中使用,也仅存在部分限制。

官网地址:

https://sikulix.github.io/

3、安装

SikuliX基于Java开发,跨平台特性需依赖Java环境支持。

SikuliX提供IDE(集成开发环境,适合新手写脚本)和API(仅类库,适合开发者集成),普通用户优先选择SikuliX IDE。

访问SikuliX官方下载页(选择指定的版本):

https://raiman.github.io/SikuliX1/downloads.html

4、快速上手

1、打开SikuliX IDE。

(1)界面分为三大核心区域,功能明确且无冗余。

  • 菜单栏(顶部):含文件操作(新建/保存脚本)、运行控制(运行/暂停)、工具设置(图像识别精度、鼠标速度)。
  • 编辑区(左侧):脚本编写区域,支持语法高亮,可直接输入代码或插入截图(截图会自动生成图像引用代码)。
  • 控制台(右侧):显示脚本运行日志(如“成功点击图像”“未找到元素”),也可输入临时命令测试语法(如print("Hello")),是调试的关键工具。

(2)核心功能:截图与图像管理。

SikuliX通过捕获屏幕元素图像,脚本即可定位并执行操作,操作步骤如下:

  • 启动截图:点击编辑区工具栏的“相机”图标,或按下快捷键Ctrl+Shift+2(Windows/Linux)/Cmd+Shift+2(macOS),屏幕变暗,鼠标变为十字准星。
  • 精准捕获:拖动鼠标框选目标元素(如“确定按钮”“输入框”),建议只框选核心区域(避免包含动态背景,如时间、通知图标),松开鼠标后,截图自动插入编辑区,生成代码click("screenshot_1.png")。
  • 图像管理:每个脚本对应一个.sikuli文件夹(如test.sikuli),所有截图以png格式保存在其中,右键点击编辑区的图像引用,可选择“Replace Image”重新捕获或“Delete Image”删除。

2、基础语法。

SikuliX默认使用Python语法,可实现“定位 - 操作 - 判断”的完整自动化逻辑。

3、示例。

编辑脚本,输入用户名与密码登录操作。

执行结果(登录成功)。

脚本文件内容。

Demo.py文件内容。

代码语言:javascript
复制
# 公众号:AllTests软件测试

# 1. 点击打开浏览器
click("1757822498343.png")
# 等待浏览器启动(避免操作过快导致失败)
wait(5)

# 2. 点击地址栏,输入测试网址并回车
click("1757822562598.png")
type("https://www.saucedemo.com/" + Key.ENTER)
type(Key.ENTER)
wait(3) # 等待页面加载

# 3. 输入用户名
click("1757822926454.png")
type("standard_user")

# 4. 输入密码
click("1757822896160.png")
type("secret_sauce")

# 5. 点击登录
click("1757822969234.png")

# 6. 判断登录是否成功
if exists("1757823096123.png"):
    print("登录成功!")
else:
    print("登录失败!")

# 7. 关闭浏览器
click("1757823132506.png")
print("脚本执行完成!")
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-10-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AllTests软件测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档