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

Posted

tags:

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

Sikuli使用图像识别方法来识别GUI元素,将你在屏幕上看到的一切自动化。Sikuli脚本允许用户使用屏幕截图来自动化GUI交互。
1. 运行unit test脚本的时候,不能使用默认的方式,应该使用下面的代码来运行:
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromTestCase(YOUR_TEST_CLASS))否则,unit test框架默认会在执行完所有case后退出程序,会导致sikuli报错。
2. 考虑关闭Sikuli的输出。否则当输出太多时,会把一些unit test的测试结果给刷掉,另外Sikuli的输入太多,大部分是没用的信息。笔者暂时没有找到关闭输出的方法,不过有另外一个方式,Sikuli在执行时提供一个命令,可以配置Sikuli的log输出文件。这样可以让Sikuli把自己的log输出到单独的文件中,这样在命令行中运行Sikuli脚本的时候,只会看到unit test的输出,不会看到Sikuli的输出了。
3.将sikuli-script.jar包添加到eclipse中。
4.编写自动化测试脚本: 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");
参考技术A 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");

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

    因为工作上的需要,某个信息系统不健全,因此仅仅需要一个一个的点击确认,客户端是网页版本的,抓包太复杂了,如何快速的能够自动化操作?

    想到了之前学习python的时候,发现了一个基于java的图片编程软件,采用的是jpython脚本操作,截图就可以编程,非常适用于这种在图形界面上点击的操作,而不需要知道内部的细节,ID什么的.

    软件的使用十分简单,控制函数是python的语法,函数就是直接给出的那种,比如 for i  in range(10): 函数体,易学易用,需要注意的是在截图的时候,需要调整一下识别因子,确保只能够识别唯一的一个目标,所以这里截图是一个技术活.

技术分享
for x in range(79):
    find("1453956696794.png")
    click(Pattern("1453956788786.png").targetOffset(-15,9))
    click(Pattern("1453956852653.png").targetOffset(-5,33))
    wait("1453956966979.png",60)
    click(Pattern("1453956977117.png").targetOffset(63,56))
View Code

 

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

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

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

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

sikuli测试

自动化工具 Sikuli-Script 使用

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