zoukankan      html  css  js  c++  java
  • Sikulix选取相对位置的图片或对象

    一般来说有这样的需求,我已经有了一个图片元素,在这个元素的周围会有一个动态显示的对象,我要去做一个点击或者是hover又或者是单纯把这个对象图片save到本地,留做下个页面点击的对象,在这种情况下就可以用到sikuli来解决。

    这里我还是依照baidu首页做个例子,可能不是很典型,但是做例子是没问题的。

    我先点击换肤按钮,然后在已知换肤图片的情况下,点取其他方位的图片,并save到本地留住成为下次脚本点击的对象。

    1. 首先建立一个region对象,这个region是一个方形区域,我先默认成分辨率大小

    Region r = new Region(0,0,1023,767);

    2. 点击皮肤按钮

    r.click("img/ChangeSK.png");

    3. 这个我有一个皮肤的图片是在所有皮肤图片的中央

    r.exists("img/SK1.png");

    运行下,结果还是没问题的:

    [debug] Region: exists: img/SK1.png has appeared

    4. 把这个图片找到并作为一个Match对象,highlight并打印相似度,同时打印出width和height

    Match SK1 = r.find("img/SK1.png");
    System.out.println(baidu.getScore());
    SK1.highlight();
    System.out.println(SK1.h);
    System.out.println(SK1.w);

    结果0.9999843239784241, 说明已经找到

    5. 新建一个Location对象,来存放此对象在region中的坐标

    Location Loc1 = SK1.getTarget();

    注意描述一个图片就有四维,start x,start y,width,height.  这里的location是指的x+height/2, y+width/2, 也就是中心位置

    这里我们需要一个工具来获取屏幕上的坐标,这样在手动测试的时候就能精准获取图片的相对位置,网上这样的工具很多,搜下就有了

    6. 获取到Location之后,我就需要知道在这个SK1对象的上方的一个同样大小的图片,这里如何做呢:

    Location Loc2 = Loc1.above(60);

    通过工具得知上方图片的位置大概要高出60pix,所以新建一个location对象

    7.因为我们已经知道上方图片的width和height,所以现在就需要新建一个Match对象就行了

    Match SK2 = new Match(SK1);
    SK2.setLocation(Loc2);//这样的做法是错误的,因为这里setLocation不是中心轴了,而是set成起始坐标了,应该这样:

    SK2.y = SK2.y-60;

    8,打印下相似度看是否找到

    SK2.highlight();
    System.out.println(SK2.getScore());

    得分是1,没问题

    9,把这个图片save到本地路径下

    SK2.saveScreenCapture("img", "SK2");

    SK2-1444961093063.png 保存名后面的应该是timestream,应该是避免覆盖,改下sikuli jar包里的源代码重新编译下就可以了。

    这样和selenium结合起来就能大大增强case的覆盖率,对sikuli有兴趣的同学可以联系我 41222006@qq.com

    转载注明:http://www.cnblogs.com/goldenRazor/p/4884499.html

  • 相关阅读:
    工作流程在线编辑
    利用IIS导出,导入快速部署 web站点
    调用CRM自己的Dialogue
    简单粗爆的解决同时布CRM引起的死锁问题
    CRM 2013 自动发送报表
    CRM 2013 中业务流程的
    调试CRM JS开发
    CRM ribbon按钮上引用JS库
    CRM Look Up 解决方案
    Windows Azure 上传 VM
  • 原文地址:https://www.cnblogs.com/goldenRazor/p/4884499.html
Copyright © 2011-2022 走看看