sikulix是一个很酷的东西,是由麻省理工大学开源的一种脚本。他同时也提供了python,js,java三种脚本和语言的api。有了它,可以不用python的pywin32和selenium了。并且能对qt进行操作,对于selenium也不用浏览器的对应驱动,不用调用打开浏览器的函数。对于android也可以直接结合一个控机软件映射到window上进行脚本控制。
环境搭建
sikulix的jar需要通过运行sikulixsetup.jar,选择第二项来获得
需要注意的是,最好使用最新版的sikuli-script,不然很可能不能在64位操作系统上运行
api简介
Screen类:代表了你服务器的当前屏幕显示
click方法:传入屏幕上任何控件的截图,并且识别并点击该控件
exists方法:传入控件的截图,判断是否存在该控件,如果不存在则返回null
wait方法:传入控件的截图,等相应的控件出现了,再往下执行
waitVanish方法:传入控件的截图,等相应的控件消失了,再往下执行
进阶
Pattern类:可以用来调整匹配度等相应参数
similar方法:传入一个单精度浮点型,值为0-1,表示匹配度,默认是0.7
targetOffset方法:click等鼠标操作的偏移位置,传入一个Location类
优化
速度主要在exists,wait,waitVanish方法上比较慢
exists可以这样优化,再传入一个long型变量,表示这个方法阻塞进程的最长时间
Match match = s.exists(ImgUtil.getUrl(Resource.IMG_NORMAL_BUTTON_CLOSE),1); wait同exists优化waitVanish除了加阻塞进程的最长时间,还可以提高匹配度
s.waitVanish(new Pattern(Resource.IMG_NORMAL_PROGRESS).similar(0.9F)); 速度还和图片的大小有关系,因此尽量是图片在清晰的基础上尽量小