Java就是好,开源框架遍地都是,各种niubility的jar包,各种神器,真是不亦乐乎.
今天研究一下基于图片识别作为对象的niubility的sikuli框架。
MIT的研究人员设计了一种新颖的图形脚本语言Sikuli,计算机用户只须有最基本的编程技能(比如会写print"hello world"),
他不需要去写出一行行代码,而是用屏幕截图的方式,用截出来的图形元素组合出神奇的程序。
简单了解一下:
官网http://slides.sikuli.org/
API doc :http://nightly.sikuli.de/docs/index.html
sikuli可以用来测试Flash ,Android和IOS
优缺点参考百度百科
优点:
1.可以测试不易识别的对象,比如map 和Flash
2.可以验证图片
3.通俗易懂,容易维护
缺点:
待续
注意事项:
1. 只能识别当前屏幕的内容,如果操作对象被最小化,是无法识别的
2. 第一次运行需要重启系统 ,虽然不make sense
下载:http://pan.baidu.com/s/1hq2CaHm
实例1.
打开chrome,输入http://www.cnblogs.com/tobecrazy/ 并转到
首先你得分别准备截图
创建工程,把sikuli-script.jar添加进去
代码如下:
import org.openqa.selenium.Keys; import org.sikuli.basics.Debug; import org.sikuli.script.FindFailed; import org.sikuli.script.Key; import org.sikuli.script.Pattern; import org.sikuli.script.Screen; public class NavigateToMyBlog { private static String URL="http://www.cnblogs.com/tobecrazy/"; public static void main(String[] args) throws FindFailed, Exception { Debug.setDebugLevel(3); Screen screen=new Screen(); Pattern chromeLogo=new Pattern("D:\\MyBlog\\chromeICO.png"); screen.doubleClick(chromeLogo); Pattern maxButton=new Pattern("D:\\MyBlog\\maxButton.png"); screen.click(maxButton); Pattern addressBar=new Pattern("D:\\MyBlog\\adressBar.png"); screen.type(addressBar, URL); String keys=Keys.ENTER.toString(); screen.keyDown(Key.ENTER);; } } |