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

Posted

tags:

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

参考技术A

  sikuli IDE可以完成常见的单击、右击、移动到、拖动等鼠标操作,java引用sikuli-script.jar同样可以执行这些常见的鼠标操作,因此即可方便的编写java实现识别图片并模拟点击/拖动目标控件。操作如下:

1.将sikuli-script.jar包添加到eclipse中。

2,然后编写自动化测试脚本:

 

package com.mypro.sikuli;

import org.sikuli.script.*;

public class STest 

   public static void main(String[] args) throws FindFailed, InterruptedException 
       Screen s = new Screen();
       //定义图片存放路径
       String imgpath = "D:/java/sikuli/img/";
       //双击桌面chrome浏览器图标
       s.doubleClick(imgpath+"chrome.png");
       //输入url
       s.type(imgpath+"url.png","www.bing.com");
       s.click(imgpath+"lianxiang.png");
       Thread.sleep(2000);
       //在bing输入框输入搜索关键字:sikuli,并点击搜索按钮
       s.type(imgpath+"sreach_input.jpg","sikuli");
       s.click(imgpath+"sreach_button.png");
       
       System.out.println("end");
   


3.执行日志:

[info] Windows utilities loaded.
[info] Sikuli vision engine loaded.
[log] DOUBLE CLICK on (185,450)
[log] CLICK on (426,206)
[log] TYPE "www.bing.com"
[log] CLICK on (430,239)
[log] CLICK on (685,370)
[log] TYPE "sikuli"
[log] CLICK on (938,371)
end

 

4.如果在执行脚本的时候出现以下错误: Getting the VisionProxy.dll: Can not find dependent libraries...

把Sikuli X 的libs目录添加到系统环境变量path下:

path:
;D:\\Program Files (x86)\\Sikuli X\\libs

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)