1.Sikuli-x简介
Sikuli是识别和控制GUI组件进行UI自动化测试的技术,它是有MIT的研究人员开发进行设计的。Sikuli在墨西哥维乔印第安人(Huichol Indians)的语言里是上帝之眼的意思,Sikuli的工作模式与人眼一样,直接识别图像。
Sikuli-x是Sikuli的最新版本,支持Mac OS X、Windows 和 Linux 操作系统的自动化操作
Sikuli-x是java编写的,所以需要有java环境的支持
2.环境搭建
(1)下载jdk,配置环境变量
(2)下载sikulix-IDE
http://sikulix.com/ 官网地址
https://raiman.github.io/SikuliX1/downloads.html
点击1处链接进行下载,下载完成后放到一个单独文件夹中,双击启动IDE
3.IDE使用及方法介绍
如图所示,界面由主菜单栏、工具栏、方法栏、编辑区、日志栏和状态栏六部分组成,我下载的没有方法栏
Sikuli提供的常用方法主要有查找、鼠标动作、键盘动作、事件观测4种类型
方法详细介绍参见 https://blog.csdn.net/airfer/article/details/47726939 sikuli函数、简单事件操作个人总结笔记
简单使用:
a=10
app_path = 'C:\Program Files (x86)\NGVONE\Client\TopSAP.exe'
openApp(app_path) #打开app
wait("1577694539817.png") #等待界面出现
click("1577694966548.png") #点击图片中心
#type('test000')
paste('test000') #在鼠标处进行粘贴操作
#type(Keys.ENTER)
wait(5)
click("1577696921363.png")
wait(2)
type('111111')
wait(1)
type(Key.ENTER) #按下回车键
wait("1577764002167.png",10)
click("1577770208466.png")
wait(5)
if exists("1577784432204.png"): #判断预期图片是否出现
a=20
click("1577770540714.png")
click("1577770441068.png")
wait(2)
click("1577770467721.png")
print a
运行的时候可能有点慢,是因为是在整个屏幕上查找元素,可以使用,把查找元素的区域固定,使查找元素速度加快,当然也是有缺点的,程序如果改变区域就无法识别了
Region(596,325,220,315).wait("1481855580087.png")限定查找图片区域
4.在python中调用Sikuli
由于Sikuli是java编写的,所以要在python中使用可以使用jpython,或者在python中安装JPype调用java代码
本文介绍以下使用JPype使用方法
1.首先安装Jpype包:打开命令行输入 pip install JPype1 进行安装,会提示安装成功如果安装失败可能是Windows缺少VCForPython27导致,需要安装这个组件,下载链接: https://pan.baidu.com/s/1ILVxjb3K4hMvviCbefpfIw 提取码: 7uri ;如果下载后还安装不了,就只能下载Jpype1的压缩包进行安装了,下载安装包后,找到文件所在的命令执行 pip install JPype1-0.6.3.tar.gz
2.下载sikuli的jar包,地址:https://raiman.github.io/SikuliX1/downloads.html
3.将上一步下载的jar包放到一个目录下
from jpype import *
import time
# 需安装VCForPython27
# C:\Program Files\Java\jdk1.8.0_181\jre\bin\server\jvm.dll
print getDefaultJVMPath() #jvm默认路径
startJVM(getDefaultJVMPath(), "-ea", r"-Djava.class.path=E:\Test3\sikulixapi-2.0.1.jar")#path是刚才放的jar包位置,启动java虚拟机
java.lang.System.out.println("hello world")#调用java打印方法
app = JClass('org.sikuli.script.App')
app_path = r'C:\Program Files (x86)\NGVONE\Client\TopSAP.exe'
# app.open(app_path)
Screen = JClass("org.sikuli.script.Screen")#获取java类
screen = Screen() #生成类对象
Key = JClass("org.sikuli.script.Key")
key = Key()
Pattern = JClass('org.sikuli.script.Pattern')
KeyModifier = JClass('org.sikuli.script.KeyModifier')
screen.doubleClick(r"E:\Test3\pic\1.png")#调用类对象的方法,双击快捷图片启动
screen.click(r'E:\Test3\pic\1577694966548.png')
time.sleep(1)
screen.type("test000")
time.sleep(2)
screen.click(r'E:\Test3\pic\1577696921363.png')
screen.type("111111")
screen.type(Key.ENTER)
screen.wait(1)
shutdownJVM()#关闭虚拟机
5.Sikuli-xIDE工具生成代码命令行调用
Sikuli-xIDE生成的代码是一个后缀为.sikuli的文件夹,打开可以看到一个python文件和代码中图片
命令行调用
import os
os.popen(r'E:\sikulix\sikulix.jar -r C:\Users\hp\Desktop\2.sikuli')
参数为ide所在路径 和脚本所在路径
-r 表示 run
参考文档
https://blog.csdn.net/zhengshaolong8125/article/details/53690689 Sikuli-X简单的使用
http://sikulix.com/ 官网
https://blog.csdn.net/shuihupo/article/details/79714949 python 安装jpype
https://blog.csdn.net/lb245557472/article/details/83957563 Python 调用Sikuli Jar包
https://testerhome.com/topics/12706 自动化工具 Sikuli-X 简单的使用
https://raiman.github.io/SikuliX1/downloads.html SikuliX Downloads
https://blog.csdn.net/GG9527li/article/details/86726417 Python jpype调用Sikuli 实现图像点击,输入,拖动等操作
https://testerhome.com/topics/17225 ATX SikuliX 使用笔记
https://blog.csdn.net/airfer/article/details/47726939 sikuli函数、简单事件操作个人总结笔记
https://blog.csdn.net/lb245557472/article/details/83957563 Python 调用Sikuli Jar包