一、初识SikuliX
1.SikuliX
SikuliX是通过图像识别,来定位图像和键盘、鼠标来操作GUI(图形化用户界面),实现跨平台的桌面类应用自动化。
SikuliX: 基于Jython(用Java编写的高级的、面向对象的、开放源代码的编程语言)的API以及Sikuli IDE(Sikuli集成开发环境),支持Python和Ruby。
2.与其他UI自动化工具对比
与其他的UI自动化工具相比,Sikuli的优势在于,它不需要去写出一行行代码;而是用屏幕截图的方式,用截出来的图形以参数形式传入引用。它是基于像素的,所以即使页面上的元素没有像id, name这些常规属性,我们也可以通过图像识别进行UI的交互操作( 它使用OpenCV支持的图像识别 ,来识别和控制GUI组件)
二、关于SikuliX
SikuliIDE和Sikuli Script就是现在的SikuliX,最新版本是SikuliX1.1.0
1. Sikuli IDE 的 6大组成部分
SikuliX提供了一个简易的脚本开发环境Sikuli IDE,Sikuli IDE界面由菜单栏、工具栏、侧边栏、编辑区,控制台和状态栏 6部分组成。工具栏和侧边栏为主要部分。
①. 工具栏定义了自动化测试中需要用到的功能组件,如屏幕截图、插入图片、屏幕区域、运行测试的按钮、逐步测试按钮
② . 侧边栏主要定义了自动化脚本要用到的方法。
SikuliX测试界面包括了测试脚本编辑区,和测试结果显示区。
2. Sikuli脚本组成结构
编辑完的Sikuli脚本,在Windows上保存时,将保存为后缀为.sikuli的文件夹,其中该文件夹中包括脚本将使用到的所有png图片、.py的源代码文件 和一份显示源码的HTML文件
3. 生成可执行文件
编写并调试完的Sikuli脚本,通过菜单栏上file->Export executable生成以 .skl为后缀的可执行文件
4. 运行可执行文件
使用命令行工具或者直接文件即可便捷地执行该脚本
脚本执行过程中:利用图像检索算法分析匹配当前屏幕中对应的控件,并对其应用相应的鼠标和键盘操作。这种方式使得我们在编写时,无需关系繁琐的应用程序相关API。
5. SikuliX的优点
- 与平台无关,跨平台测试,可以实现任意类型的GUI测试,并可以解决web测试中的浏览器兼容性测试问题。
- 可读性强,将GUI对象的屏幕截图作为函数的参数直接传入引用,整个代码的局域清晰明了用图形表示逻辑关系更生动、形象,容易理解,便于维护。
- 提供.jar包,便于构建大型的测试框架,实现各类测试工具之间的互补。
- 用例设计与程序实施可分离,用例设计人员可以只关注图型逻辑关系和测试检查点,不需要懂得具体开发与程序语言基础;程序实施人员可以只进行编程而不过多参与设计。
6. SikuliX的局限性
- 由于对于截图的检索依赖于实时的桌面显示,若出现程序逻辑之外的界面遮挡或者焦点切换(弹出窗口),对程序执行会造成影响
- 图像识别,过度依赖屏幕截图,使其跨平台性能大减,严重依赖于操作系统等各种环境,如果环境变化,恐怕会不停修改脚本。