一. 开始:

简单介绍一下sikuli常用方法:

1.  : find就是找到与指定图片相似度最高的图片.

2. : findAll就是与指定图片相似的所有图片

3. : wait就是等待指定图片的出现

4. : waitVanish就是等待指定图片的消失

5. : exists就是判断指定的图片是否存在

6. : click就是找到与指定图片最相似的图片, 然后单击

7. : doubleClick就是找到与指定图片最相似的图片, 然后双击

8. : rightClick就是找到与指定图片最相似的图片, 然后右击

9. : hover就是找到与指定图片最相似的图片, 然后鼠标指针悬浮其上

10. : dragDrop就是从一个图形的中心点拉到另一个图形的中心点

11. : 在焦点处, 一一输入指定的文字

12. : 单击指定的图片, 然后再一一输入指定的文字

13. : 在焦点处, 粘贴指定的文字

14. :单击指定的图片, 然后再粘贴指定的文字

二. 综述:

sikuli 做的事用一句话概括, 就是在某个范围内, 找到指定条件的某个或某些图片, 并对其做什么.

下面举例解释上面的那句话:

一. 在某个范围内

(1) , 这个语句的意思是在整个电脑屏幕的范围内去找QQ图标, 并点击该图标;

(2) 

上面第2条语句的意思是, 在我指定的范围内( 就是第1条语句中红色的那一块), 找QQ图标, 并点击该图标;

(3) 那么怎么定义一个Region呢

1^ : r = Region(

2^: 点击Create Region 按钮

3^: 把括号补全.

二. 指定条件

(1) 最简单的条件就是截张图, 就类似

(2) 其实你还可以指定相似度(相似度就是和你截的图相像的程度)

单击你截的图

这时会有一个窗口出现, 点击Matching Preview tab, 然后我们就可以调整相似度了

这时我们看到预览窗口中有一个红色块( 这个红色块就是给据指定条件找到的   结果)

那下面来看一下如果改变了相似度会怎么样, 那我们就降低一下相似度来看一下结果

降低相似度

当我们降低了相似度, 会发现预览窗口中的色块增多, 说名降低了相似度, 能找到的与指定条件相匹配的结果就会增多. (阅览窗口中色块的颜色代表了其匹配度, 颜色越深, 就代表匹配度越高, 红色几乎就代表完全匹配)

相似度越高, 找的结果就越精确.

总结: 指定的条件有2部分, 一是图片, 二是与图片的相似度.

当不指定相似度时, 默认的相似度为0.7

三. 点击点

我们会发现上面窗口中还有一个Target Offset tab, 这个是用来设置点击位置的

设置方法很简单, 你想点再哪就点在哪

默认的点击位置是中心点

四. 执行动作

执行动作就是我们最开是介绍的那些方法, 单击啊, 双击啊, 等待啊, 等待消失啊等等

五. 回顾

下面从新回顾并解释这2句代码

在指定的Region范围内, 找到与QQ图标相似度为0.7的所有图片, 并在与QQ图标匹配度最高的那张图片的中心点点击.

六. 总结

其实到这里就已经可以写sikuli脚本了, 但写出来的sikuli脚本运行应该是很不稳定的, 接下来就说一下怎么提高sikuli脚本的稳定性

三. 提高脚本的稳定性

1. 如何提高稳定性

由于sikuli自身的缺陷, 上面的语句执行起来极可能会失败, 那么怎么样提高其稳定性呢, 很简单, 在2条语句间加1句wait(1), wait(1)就是等待1秒的意思, 就像下面这样

我们把,等称之为sikuli动作, 当执行完一个sikuli动作后, 必须等一下, 才能执行下一个sikuli动作, 否则就可能会执行不成功

这样写程序稳不稳定呢, 答案一样是不稳定, 也必须在2条语句之间加一条wait(1)

2. sikuli的缺陷是什么, 为什么要加wait(1)才能保证其稳定性

sikuli的缺陷是在做完一个查找动作后, 必须要等一会, 才能执行下一个查找动作, 否则就可能会执行失败.

而sikuli动作基本上都会做查找动作, 比如说click函数, 就是先找到指定的图片, 然后再click, 所以click函数会去做查找动作, 所以click后要wait(1)

find函数肯定会做查找动作的

wait函数也会去做查找动作, 因为只有去找, 并找到了, 才说明等到指定图片出现了, 所以wait函数后也得wait(1), 看起来会觉得很奇怪, wait后还要wait, 但这也是没办法的事.

3. 回顾

到这里我们就已经可以写出比较稳定的sikuli脚本了, 下面就是让sikuli帮我们减轻负担, 做一些相对复杂的事

四. 相对高级进阶

1. 设置最小相似度

当将图片的相似度调成0.8, 那么匹配的结果就基本唯一了, 可默认的相似度是0.7, 难道我们要把每张截图的相似度都手动调成0.8吗, 当然你可以这么做, 如果你喜欢的话, 不过我们有更好的方式, 就是在代码最前端加一句

Settings.MinSimilarity = 0.8

2. 获取相对Region, 获取Loaction

这里先简单介绍一些概念, Region就不多说了, 就是一个矩形区域.下面说一下Match.

Match就是sikuli给据你指定的条件找到的结果. Match继承了Region, 也就是说就可以把Match当成Region, 能对Region做什么, 就能对Match做什么, Region能做什么, Match就能做什么.

(1) 如何获取相对Region

Region有几个方法

1^ : above(range), 这个方法会获取以上面边为宽, 指定参数为长的一个矩形区域

2^ : below(range), 这个方法会获取以下面边为宽, 指定参数为长的一个矩形区域

3^ : right(range), 这个方法会获取以右面边为宽, 指定参数为长的一个矩形区域

sikuli入门到进阶相关推荐

  1. ab753变频器参数怎么拷贝到面板_【干货】一文让你从入门小白进阶为变频器高手...

    点击蓝字 关注我们 为确保 SINAMICS G120 的操作及监控便捷高效,提供了三种不同的操作面板: 1.基本操作面板(BOP-2). 2.智能操作面板(IOP-2) 3.智能连接模块(G120 ...

  2. 程序员编程如何入门、进阶?

    作者 | 码农唐磊 来源 | 程序猿石头(ID:tangleithu) 背景 在之前的这篇文章中,我谈了谈读本科的时候都学了哪些计算机专业课和推荐了一些经典的技术书籍,然后推文封面中的这张图引起了不少 ...

  3. 服务端工程师入门与进阶 Java 版

    前言 欢迎加入我们.这是一份针对实习生/毕业生的服务端开发入门与进阶指南.遇到问题及时问你的 mentor 或者直接问我. 建议: 尽量用google查找技术资料. 有问题在stackoverflow ...

  4. android自定义美颜相机完整程序,Android OpenGL ES从入门到进阶(一)—— 五分钟开发一款美颜相机...

    源码链接:https://github.com/smzhldr/AGLFramework 一.前言 商店里有数十款的美颜相机类产品,其实现原理基本上都是以OpenGL ES为核心的特效处理,大神可以忽 ...

  5. python数据结构推荐书-「算法与数据结构」从入门到进阶吐血整理推荐书单

    推荐一下「算法与数据结构」从入门到进阶的书单. 一.入门系列 这些书籍通过图片.打比方等通俗易懂的方法来讲述,让你能达到懂一些基础算法,线性表,堆栈,队列,树,图,DP算法,背包问题等,不要求会实现, ...

  6. 网站推广必备手册:SEO教程:搜索引擎优化入门与进阶(第2版)

    网站推广必备手册:SEO教程:搜索引擎优化入门与进阶(第2版) [作 者]吴泽欣 [同作者作品] [作译者介绍]  [丛 书 名] 图灵程序设计丛书  [出 版 社] 人民邮电出版社     [书 号 ...

  7. 新兴短距离无线通信技术ZigBee入门到进阶

    2019独角兽企业重金招聘Python工程师标准>>> 新兴短距离无线通信技术ZigBee入门到进阶 ZigBee技术是一种近距离.低复杂度.低功耗.低速率.低成本的双向无线通讯技术 ...

  8. 【Python基础】Matplotlib 实操干货,38个案例带你从入门到进阶!

    译文出品:Python数据之道 原文作者:Rizky Maulana Nurhidayat 翻译:Lemon Matplotlib 实操干货, 38个案例带你从入门到进阶! 「Python数据之道」注 ...

  9. dt测试软件的学习心得,无线网络优化dt测试心得_适合新手入门,高手进阶_5年项目经验实战经验.docx...

    无线网络优化DT测试心得_适合新手入门,高手进阶_5年项目经验实战经验 无线网络优化DT测试心得_适合新手入门,高手进阶_5年项目经验实战经验 路测中不常见的问题和个人心得 1.深井子镇投诉测试报告 ...

最新文章

  1. 征途linux编译错误,征途误事-山外メ雲ジ-ChinaUnix博客
  2. 单连接算法与全连接算法
  3. 收集一些有关SilverLight(WPF/E)的链接
  4. 团队科学计算器-模块开发过程
  5. cube sdio fatfs 初始化sd卡_SD卡读卡器检测——硬盘检测软件Hard Disk Sentinel Pro介绍
  6. nodejs因buildpack指定不当部署到CloudFoundry后出的一个错误
  7. 扒一扒工业机器人编程语言和种类
  8. 李洪强iOS开发之- 实现简单的弹窗
  9. c语言如何把c程序编译成可执行的exe文件
  10. 03-mysql的相关命令-启动与关闭服务-配置环境变量
  11. 【Maclean Liu技术分享】拨开Oracle优化器迷雾探究Histogram之秘
  12. 写一篇文章需要多长时间?
  13. Luogu1220 关路灯
  14. matlab k-s检验,柯尔莫可洛夫-斯米洛夫检验(Kolmogorov–Smirnov test,K-S test)
  15. C#调用RDP,实现远程桌面共享及控制
  16. android像素密度转厘米,Android 屏幕适配-像素密度适配
  17. 百度开放平台-快递物流解决方案
  18. Nginx-RTMP功能调研
  19. 一本通1646GT 考试
  20. WorldFirst靠谱吗?跨境收款工具万里汇WorldFirst介绍!

热门文章

  1. 链路追踪——【Brave】第一遍小结
  2. 用友 uap nc65开发中的查询模版源代码讲解
  3. 对视频50p,50i 还有25p,25i区别的粗劣解释
  4. 有监督算法和无监督算法都有哪些
  5. 新学期,不再迷茫畏惧,我想这样度过大四
  6. 计算机元年:1970年1月1日0点(转载)
  7. STM32CubeMX 简介
  8. 全网首发!! 黑苹果MacOs12 Monterey升级后蓝牙失效问题
  9. Android WIFI使用简述
  10. 时间比较方法DateTime.Compare