如何在java中使用sikuli进行自动化测试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在java中使用sikuli进行自动化测试相关的知识,希望对你有一定的参考价值。

Sikuli 提供了一个简易的脚本开发环境。缺省界面由菜单栏、工具栏、侧边栏、编辑区、控制台和状态栏六部分组成,如图 1 所示。

工具栏中提供了两组共计 5 个常用工具按钮及文本搜索框:

屏幕截图(Take screenshot):点击该按钮,进入屏幕截图状态,拖拽辅助线选取需要截取的界面元素,释放鼠标左键的同时,自动将该截图插入到编辑区中光标当前位置。使用快捷键 Ctrl+Shift+2(Command+Shift+2)也可激活截图状态,以完成对于弹出菜单、下拉框一类的控件的实时截图。该快捷键亦可通过主菜单 File->Preferences 进行自定义。

插入图片(Insert image):除直接截图外,用户也可通过点击该按钮导入已有的 PNG 格式图片文件。

建立屏幕区域(Create region):点击该按钮,进入屏幕区域选择状态,拖拽定位十字线选取屏幕区域。释放鼠标左键,即可将当前选中区域的屏幕坐标信息插入到编辑区中。

运行(Run):点击执行当前脚本。快捷键为 Ctrl+R(Command+R)。

慢速运行(Run in slow motion):点击后以较慢的速度执行当前脚本,以红色圆形外框显式标识每一次图像查找定位动作,便于程序调试中进行焦点追踪。快捷键为 Ctrl+Alt+R(Command+Alt+R)。

左侧侧边栏中分类列出了部分常用函数,点击函数名可快速将其插入到编辑区,若该函数需截图作为参数,则自动转入屏幕截图状态。下方的状态栏可用于查看当前行号,与行首 Tab 缩进的层级 ( 列号 )。

参考技术A 首先不得不承认这是个牛逼的工具,之前看到我们有同事在用,脚本里可以直接贴图片。具体的使用教程建议可以看看这个ppt : http://wenku.baidu.com/link?url=8L9WJpXR6DJLr27lsb_mYqM4ZIXMwibsm0yU4YzZhtLVQ4fdDP2wgy2TdfYOjoIlI2i3nO-EKBr9jGKQ41idbk9me4ZsReke9H38ZI2_FsK
也欢迎和我们聊聊测试相关的问题,微信公众号 搜狗测试~
参考技术B 建议使用jython

Sikuli--基于像素的图像识别(JAVA)

SikuliX简介及安装

package wincalc;

import org.sikuli.script.Screen;

public class SikuliDemo {
	// Sikuli是基于PC图像识别的自动化测试工具。
	// 目前绝大多数GUI工具均需要依赖与程序类型进行特征识别(属性识别)
	// TestComplete/CodeUi/Selenium/Appium/UIautomatior/WatiR
	// 面对不同的程序类型,则无法有效大处理,SikuliX图像识别可以通吃
	// Skuli对其他移动端的支持不够友好。对python的支持不友好,JPype
	// 图像识别匹配度和容错能力是其技术可用性的关键
	public static void main(String[] args) throws Exception {
		// SikuliX提供大核心类
		// 1、Region 界面部分区域识别,效率高
		// 2、Screen 全屏识别,效率低

		// 定义当前文件夹
		String imgPath = System.getProperty("user.dir") + "/wincalc";
		// 实例化Screen
		Screen s = new Screen();
		// 启动win系统计算器
		Runtime.getRuntime().exec("calc.exe");
		// 暂停2秒
		Thread.sleep(2000);
		// 点击事件
		s.click(imgPath + "/3.png");
		s.click(imgPath + "/+.png");
		s.click(imgPath + "/5.png");
		s.click(imgPath + "/=.png");
		Thread.sleep(2000);
		// 判断结果
		boolean test = s.exists(imgPath + "/8.png").isValid();
		if (test) {
			s.click(imgPath + "/exit.png");
			System.out.println("ok");
		} else {
			System.out.println("no");
		}
	}
}

  

以上是关于如何在java中使用sikuli进行自动化测试的主要内容,如果未能解决你的问题,请参考以下文章

如何在java中使用sikuli进行自动化测试

如何使用sikuli在ios手机做图形自动化

使用sikuli软件进行自动化编程

sikuli测试

自动化工具 Sikuli-Script 使用

Sikuli--基于像素的图像识别(JAVA)