python怎么调用sikuli

由MIT(麻省理工学院)组成的Sikuli 研究团队发布了一种图形编程技术(编程小白福音),使用Sikuli你只需要写HelloWorld这个最基本的编程技能,使用Sikuli不需要写一行复杂的代码,而是使用屏幕截图,使用截图图形元素组合神奇的程序。
Sikuli官网:http://slides.sikuli.org/
API doc :http://nightly.sikuli.de/docs/index.html
Sikuli是开源的,可以在Github上查看源码:https://github.com/sikuli/sikuli
简要说明
由于Python不能直接调用Java,因此需要使用一些第三方库。目前,我知道Jython、Jpype、Pyjnius等,本文只调用Java 简单介绍一下jar包,好吧,it`s show time。
相关推荐:Python教程
环境设置
这里介绍两种Python调用Sikuli的方法,前提条件:
Java环境必须配置
已安装Python基础环境
第一种 – Jpype
首先安装Jpype包:官网: 打开命令行输入 pip install JPype1 安装将提示安装成功。

如果Windows缺少VCForPython27,则需要安装此组件并下载链接:https://pan.baidu.com/sILVxjb3K4hMviCbefpfiw 提取码: 7uri ;如果下载后无法安装,只能下载Jpype1的压缩包进行安装。下载安装包后,找到文件所在的命令执行 pip install JPype1-0.6.3.tar.gz
安装成功后,下载sikulijar包,地址:https://raiman.github.io/SikuliX1//downloads.html,
打开链接,点击下载:

3.将下载的jarome放入合适的文件中。jpype的环境已经可以了。您可以尝试启动桌面上的chrome(确保桌面上的chrome图标不会被其他窗口屏蔽,否则会报告错误)。
fromjpypeimport*
#VCForPython27需要安装
#C:\ProgramFiles\Java\jdk1.8.0_181\jre\bin\server\jvm.dll
printgetDefaultJVMPath()
startJVM(getDefaultJVMPath(),"-ea",r"-Djava.class.path=F:\work\project\test\sikuli_test\sikulixapi.jar")
java.lang.System.out.println("helloworld")
Screen=JClass("org.sikuli.script.Screen")
screen=Screen()
#r"F:\work\project\test\sikuli_test\imgs\Chrome.png"您截取桌面上chrome图标的图像路径
screen.doubleClick(r"F:\work\project\test\sikuli_test\imgs\Chrome.png")
shutdownJVM()第二种 – Pyjnius
由于pyjnius依赖cython包,首先安装cython,打开命令安装cython
pipinstallcython
然后安装pyjinus
pipinstallpyjnius
安装完成后,启动桌面上的Chrome进行验证
importos
#将jvm.将系统变量添加到dll路径中,两者都可以添加任何一个,
#在系统变量中也可以配置,每次操作脚本时都不需要设置脚本
os.environ["path"]=r"C:\ProgramFiles\Java\jdk1.8.0_131\jre\bin\server"
os.environ["path"]=r"C:\ProgramFiles\Java\jre1.8.0_131\bin\server"
#将sikuli的jar包引入CLASSPATH
os.environ["CLASSPATH"]=r"F:\work\project\test\sikuli_test\sikulixapi.jar"
fromjniusimportautoclass
#在Javajar中调用类
Screen=autoclass("org.sikuli.script.Screen")
s=Screen()
s.doubleClick(r"F:\work\project\test\sikuli_test\imgs\Chrome.png")结论
Python 归根结底,调用Sikuli或Python调用Java类,以上是Python调用Java的两个简单应用,其实我们用Python(selenium、appium)当进行自动化时,可以使用上述两种方式操作无法识别的元素(或基于Python上传操作文件)+selenium+sikuli),sikuli可以作为辅助工具使用,无需安装sikuli的环境即可调用,方便实用,但不同平台的图片识别率可能相对较低。
