Sikuli是由MIT(麻省理工学院) 研究团队发布的一种图形化编程技术(编程小白的福音),使用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等,本篇文章只对Jpype和Pyjnius调用Java jar包进行简单介绍,好了,it`s show time。

环境设置

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

必须已经配置过Java环境

Python基础环境已经安装

第一种 – Jpype

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

如果安装失败可能是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,

打开链接,点击下载:

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,打开命令行进行安装cythonpip install cython

然后安装pyjinuspip 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的环境尽可以调用,方便实用,不过不同的平台可能图片的识别率比较低。

sikuli python java_python怎么调用sikuli相关推荐

  1. sikuli python java_python+sikuli环境搭建

    import jpype #引用jvm jvm_path=r"C:\Program Files\Java\jdk1.8.0_151\jre\bin\server\jvm.dll" ...

  2. python函数+定义+调用+多返回值+匿名函数+lambda+高级函数(reduce、map、filter)

    python函数+定义+调用+多返回值+匿名函数+lambda+高级函数(reduce.map.filter) Python 中函数的应用非常广泛,比如 input() .print().range( ...

  3. Python语言学习:利用python语言实现调用内部命令(python调用Shell脚本)—命令提示符cmd的几种方法

    Python语言学习:利用python语言实现调用内部命令(python调用Shell脚本)-命令提示符cmd的几种方法 目录 利用python语言实现调用内部命令-命令提示符cmd的几种方法 T1. ...

  4. julia 调用python库_Julia调用Python实现超像素分割SLIC算法

    最近想要在julia中实现 Simple Linear Iterative Clustering (SLIC) 算法对图像进行超像素分割,关于SLIC超像素分割算法,请参考SLIC Superpixe ...

  5. $Django 多表操作(增删改查,基于双下划线,对象的查询) 在Python脚本中调用Django环境...

    0在Python脚本中调用Django环境. import osif __name__ == '__main__': os.environ.setdefault("DJANGO_SETTIN ...

  6. c调用python第三方库_用 Python ctypes 来调用 C/C++ 编写的第三方库

    看到一篇简洁的文章--如何用Python ctypes调用C++(ctypes调用C没这么多麻烦事),不敢独享... 如果需要用 Python 调用 C/C++ 编写的第三方库(这些第三方库很可能就是 ...

  7. python idle运行anaconda_在Python IDLE 下调用anaconda中的库教程

    大家都知道,Anaconda是一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项.下载了anaconda我们可以很方便的随时调用这里面的库. 原先我自己在Py ...

  8. c++调用python接口作用是_利用Boost::Python实现C++调用python接口

    利用Boost::Python实现C++调用python接口 2019年11月06日 阅读数:7 这篇文章主要向大家介绍利用Boost::Python实现C++调用python接口,主要内容包括基础应 ...

  9. 十二. python面向对象主动调用其他类

    一 .python面向对象主动调用其他类成员 (看代码) 主动调用 其他类的成员# 没有继承 的主动调用 class Grad(object):bar=555555def __init__(self, ...

最新文章

  1. ajax静态页面实例,AJAX实例:Ajax实现静态页面分页
  2. Intellij IDEA神器居然还有这些小技巧
  3. 触摸屏mtp文件转c语言,F28335与上位机(触摸屏)之间的通讯遵循modbus协议使用C语言编程...
  4. 【Objective-C】05-第一个OC的类
  5. Java虚拟机(五)——程序计数器
  6. 安装 Win10 Ubuntu 16.04 双系统以及 Ubuntu 配置深度学习环境记录
  7. 使用gRPC的.NET Core 3.0双向消息流
  8. python_csv文件使用记录
  9. #大数加减乘除#校赛D题solve
  10. MATLAB自带的遗传算法工具箱(GADS)
  11. python空值填充_pandas妙招之 DataFrame基础运算以及空值填充
  12. 1. 并行与分布式系统简介
  13. 笔记-51,k60,stm32
  14. 姓舒男孩名字简单大气,帮你解决起名的烦恼!
  15. XMU 1612 刘备闯三国之桃园结义 【二分】
  16. osm 搭建离线地图_利用OpenStreetMap(OSM)数据搭建一个地图服务
  17. 守夜人,守护自己,守护他人
  18. 山东平度纵火案告破:村主任与地产商联手施暴
  19. win7 win8 系统ntoskrnl.exe丢失引起蓝屏的问题解决以及ntoskrnl.exe下载位置
  20. CSS---padding详解

热门文章

  1. 李明--linux视频---CH1--LINUX简介
  2. PackagesNotFoundError: The following packages are not available from current channels 解决办法
  3. javascript方法中new方式和字面量方式的区别
  4. 【网络攻击】XSS和CSRF
  5. Android 图片圆角,自定义圆角的弧度,或者直接设置为圆形图片
  6. 大内存时代虚拟内存现在还有用吗
  7. 摩天大楼里的云服务器
  8. 累积分布图/累积分布函数/分布函数/概率分布函数
  9. BlackBerry携手大音科技打造声学解决方案,赋能长城汽车新一代高端车型
  10. python之items