很早之前写过一篇介绍sikuli的文章。本文简单介绍如何在java中使用sikuli进自动化测试。

图形脚本语言sikuli

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

sikuli-script.jar:http://download.csdn.net/download/hqd1986/4557974

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

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

  1. package com.mypro.sikuli;
  2.  
  3. import org.sikuli.script.*;
  4.  
  5. public class STest {
  6.  
  7. public static void main(String[] args) throws FindFailed, InterruptedException {
  8. Screen s = new Screen();
  9. //定义图片存放路径
  10. String imgpath = "D:/java/sikuli/img/";
  11. //双击桌面chrome浏览器图标
  12. s.doubleClick(imgpath+"chrome.png");
  13. //输入url
  14. s.type(imgpath+"url.png","www.bing.com");
  15. s.click(imgpath+"lianxiang.png");
  16. Thread.sleep(2000);
  17. //在bing输入框输入搜索关键字:sikuli,并点击搜索按钮
  18. s.type(imgpath+"sreach_input.jpg","sikuli");
  19. s.click(imgpath+"sreach_button.png");
  20.  
  21. System.out.println("end");
  22. }
  23. }

我的图片目录:

执行日志:

  1. [info] Windows utilities loaded.
  2. [info] Sikuli vision engine loaded.
  3. [log] DOUBLE CLICK on (185,450)
  4. [log] CLICK on (426,206)
  5. [log] TYPE "www.bing.com"
  6. [log] CLICK on (430,239)
  7. [log] CLICK on (685,370)
  8. [log] TYPE "sikuli"
  9. [log] CLICK on (938,371)
  10. end

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

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

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

什么是Sikuli X? 请参考本文开头的文字链接。

----------------------------------------------------

错误参考:

http://stackoverflow.com/questions/9568612/sikuli-windows-7-64-bit-getting-the-visionproxy-dll-can-not-find-dependent-li

如何在java中使用sikuli进行自动化测试的更多相关文章

  1. 如何在JAVA中实现一个固定最大size的hashMap

    如何在JAVA中实现一个固定最大size的hashMap 利用LinkedHashMap的removeEldestEntry方法,重载此方法使得这个map可以增长到最大size,之后每插入一条新的记录 ...

  2. 如何在Java中调用Python代码

    有时候,我们会碰到这样的问题:与A同学合作写代码,A同学只会写Python,而不会Java, 而你只会写Java并不擅长Python,并且发现难以用Java来重写对方的代码,这时,就不得不想方设法“调 ...

  3. 如何在java中跳出当前多重嵌套循环?有几种方法?

    如何在java中跳出当前多重嵌套循环?有几种方法? - 两种方法   - 1.在外层循环定义标记          ok:          for(int i=0;i<100;i++){    ...

  4. 用代码说话:如何在Java中实现线程

    并发编程是Java语言的重要特性之一,"如何在Java中实现线程"是学习并发编程的入门知识,也是Java工程师面试必备的基础知识.本文从线程说起,然后用代码说明如何在Java中实现 ...

  5. 如何在Java中测试类是否是线程安全的

    通过优锐课的java核心笔记中,我们可以看到关于如何在java中测试类是否线程安全的一些知识点汇总,分享给大家学习参考. 线程安全性测试与典型的单线程测试不同.为了测试一个方法是否是线程安全的,我们需 ...

  6. 如何在 Java 中实现无向环和有向环的检测

    无向环 一个含有环的无向图如下所示,其中有两个环,分别是 0-2-1-0 和 2-3-4-2: 要检测无向图中的环,可以使用深度优先搜索.假设从顶点 0 出发,再走到相邻的顶点 2,接着走到顶点 2 ...

  7. 如何在 Java 中实现最小生成树算法

    定义 在一幅无向图 \(G=(V,E)\) 中,\((u, v)\) 为连接顶点 \(u\) 和顶点 \(v\) 的边,\(w(u,v)\) 为边的权重,若存在边的子集 \(T\subseteq E\ ...

  8. 如何在 Java 中实现 Dijkstra 最短路算法

    定义 最短路问题的定义为:设 \(G=(V,E)\) 为连通图,图中各边 \((v_i,v_j)\) 有权 \(l_{ij}\) (\(l_{ij}=\infty\) 表示 \(v_i,v_j\) 间 ...

  9. HashMap如何在Java中工作?

    通过优锐课学习笔记分享,我们可以看到HashMap问题在工作面试中很常见. 这也是HashMaps在Java内部如何工作的一些深入说明,分享给大家参考学习. HashMap在内部如何工作已成为几乎所有 ...

随机推荐

  1. django 注册、登录及第三方接口程序(4):扩展邮箱注册,登录,微博登录

    1.邮箱注册 这里需要扩展User,两种解决办法,1,注册时将email字段内容赋给username,这种瞒天过海型的,另一种就是扩展user,这里介绍django1.5的扩展方法. 1.settin ...

  2. 【转】使用Cocoapods创建私有podspec

    Cocoapods是非常好用的一个iOS依赖管理工具,使用它可以方便的管理和更新项目中所使用到的第三方库,以及将自己的项目中的公共组件交由它去管理.Cocoapods的介绍及优点本文就不在赘述,我开始 ...

  3. 第50讲:Scala中Variance变化点

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  4. nginx-upstream-keepalive;accept_mutex-proxy_http_version-1.1-proxy_set_header-connection

    nginx+resin+redis+mysql的架构: 有外部模拟用户请求的大量攻击:它尝试请求了80就断开:看到的现象是在跑有nginx80的主机上TCP连接数少 : ESTABLISHED少: 在 ...

  5. Android定位&地图&导航——自定义公交路线代码

    一.问题描述 基于百度地图实现检索指定城市指定公交的交通路线图,效果如图所示 二.通用组件Application类,主要创建并初始化BMapManager public class App exten ...

  6. 最近读的javascript,一些文章

    本帖子是记录一些javascript的一些文章: 1. 理解node.js 2.异步编程 http://www.ruanyifeng.com/blog/2012/12/asynchronous%EF% ...

  7. asp.net mvc 动态显示不同的部分视图

    首先是AJAX请求 //第一次打开 默认s单行文本 $.ajax({ type: "GET", url: "/Admin/Field/ChoiceType4Edit&qu ...

  8. [转] Visual Studio Code behind a proxy

    http://www.tuicool.com/articles/jyyIBf3 http://blog.majcica.com/2016/04/07/visual-studio-code-behind ...

  9. Mac工具

    iterm2是一个替代终端和iTerm的后继项目.它支持 OS 10.5 或者更新版本.iterm2 提供更多你需要的功能和特点. Flashlight,快速且全面地显示所有「关键词」索引出的结果 参 ...

  10. Python的Descriptor和Property混用

    一句话,把Property和Descriptor作用在同一个名字上,就只有Property好使.