知行编程网知行编程网  2022-11-23 11:00 知行编程网 隐藏边栏  68 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于python怎么调用sikuli的相关知识,包括c++和python,以及python全局变量这些编程知识,希望对大家有参考作用。

python如何调用sikuli

Sikuli 是 MIT(麻省理工学院)发布的一种图形化编程技术。无需编写复杂的代码行,而是使用屏幕截图来编写具有捕获图形元素的神奇程序。

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等,本文只简单介绍Jpype和Pyjnius调用Java jar包。嗯,现在是表演时间。


环境设置

这边介绍两种Python调用Sikuli的方法,前置条件:

必须已经配置过Java环境

Python基础环境已经安装


第一种 – Jpype

首先安装Jpype包:官网打开命令行输入pip install JPype1进行安装,会提示安装成功。

python如何调用sikuli

如果安装失败,可能是Windows缺少VCForPython27造成的,需要安装这个组件。下载链接:https://pan.baidu.com/s/1ILVxjb3K4hMvviCbefpfIw 提取码:7uri;如果下载后无法安装,只能下载压缩的 Jpype1 包进行安装。下载安装包后,找到文件所在的命令,执行pip install JPype1-0.6.3.tar.gz

安装成功后下载sikuli的jar包,地址:https://raiman.github.io/SikuliX1/downloads.html,

打开链接,点击下载:

python如何调用sikuli

3.将下载好的jar包放到合适的文件中,Jpype的环境准备好了,可以尝试在桌面启动Chrome(运行代码时,确保桌面Chrome的图标没有被其他窗口挡住. 否则会报错)。

from jpype import *  
# 需安装VCForPython27
# C:\Program Files\Java\jdk1.8.0_181\jre\bin\server\jvm.dll
print getDefaultJVMPath()
startJVM(getDefaultJVMPath(), "-ea", r"-Djava.class.path=F:\work\project\test\sikuli_test\sikulixapi.jar")
java.lang.System.out.println("hello world")
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

pip install cython

然后安装pyjinus

pip install pyjnius

安装完成后,启动桌面上的Chrome进行验证

import os  
# 将jvm.dll 的路径加入系统变量,两者加任意一个即可,
# 也可以将其配置到系统变量中,就不必每次运行脚本时设置了
os.environ["path"] = r"C:\Program Files\Java\jdk1.8.0_131\jre\bin\server"
os.environ["path"] = r"C:\Program Files\Java\jre1.8.0_131\bin\server"
  
# 将sikuli的jar包引入到CLASSPATH中
os.environ["CLASSPATH"] = r"F:\work\project\test\sikuli_test\sikulixapi.jar"
from jnius import autoclass
  
# 调用Java jar中的类
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就可以调用环境,方便实用,但不同平台可能对图片的识别率比较低。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享