Python 调用Sikuli Jar包

2023-10-27

目录

Sikuli简介

Sikuli是由MIT(麻省理工学院) 研究团队发布的一种图形化编程技术(编程小白的福音),使用Sikuli你只需要会写HelloWorld这种最基本的编程技能即可,用Sikuli不需要去写出一行行复杂的代码,而是用屏幕截图的方式,用截出来的图形元素组合出神奇的程序。

  1. Sikuli官网:http://slides.sikuli.org/
  2. API doc :http://nightly.sikuli.de/docs/index.html
  3. Sikuli是开源的,源码可在Github查看:https://github.com/sikuli/sikuli

简要说明

由于Python不能直接调用Java的方法,需要借助一些第三方的库,目前我了解到的有Jython、Jpype、Pyjnius等,本篇文章只对Jpype和Pyjnius调用Java jar包进行简单介绍,好了,it`s show time。

环境设置

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

  1. 必须已经配置过Java环境,Java环境安装:参考
  2. Python基础环境已经安装
第一种 – 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包放入到合适的文件中,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
  1. 由于pyjnius依赖cython包,所以先进行安装cython,打开命令行进行安装cython
	pip install cython
  1. 然后安装pyjinus
	pip install pyjnius
  1. 安装完成后,启动桌面上的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")
  1. 具体sikuli的用法:参考,pyjnius:参考

结论

Python 调用Sikuli归根结底还是Python调用Java类,以上的是Python调用Java的两个简单应用,其实在我们用Python(selenium、appium)进行自动化的时候,会遇到无法识别的元素就可以运用上面的两种方式进行操作(也可以操作文件上传基于Python+selenium+sikuli,可参考上篇博客:参考),可以把sikuli作为一个辅助工具来使用,不必安装sikuli的环境尽可以调用,方便实用,不过不同的平台可能图片的识别率比较低。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 调用Sikuli Jar包 的相关文章

随机推荐

  • 红蓝对抗--蓝队

    2019年参加护网行动的时候 想着是信安专业 可以去赚点零花钱 蓝队的工作 后面总结了一下护网行动和蓝队的一些工作重心 刚刚换电脑的时候翻出来了这个文章 只是个人拙见 大佬勿喷 文章目录 一 团队组建 二 梳理资产 三 风险梳理 四 减少攻
  • 面试求职经历及遇到的部分问题

    转眼间已经工作一年多了 最近想换个工作环境 就选择了跳槽 跳槽对我们程序猿来说并没什么稀奇 但这是我第一次跳槽 也颇感激动 哈哈 总的来说 这次找工作还是相对去年来说比较容易的 毕竟已经工作一年了嘛 记得去年的时候投20份简历也不一定会有面
  • Lesson 7 Edge I

    一 图像分割与不连续 图像分割 segmentation 的目的是把图像中的像素分组 每组像素和图像中的物体强相关 图像分割需要确定图像中的不连续处 不连续处 discontinuity 包括孤立点 线段和边缘 edge 我们首先介绍edg
  • eclipse的new server里tomcat7.0根本选不上解决方法

    创建Tomcat v7 0 Server 不能进行下一步 解决方法 1 退出 eclipse 2 到 工程目录下 metadata plugins org eclipse core runtime 3 把org eclipse wst se
  • 查看函数和所在的行号

    查看Linux下 a库文件中文件 函数 变量等情况 2013 02 24 16 11 02 转载 在Linux 下经常需要链接一些 a的库文件 那怎么查看这些 a 中包 含哪些文件 函数 变量 1 查看文件 ar t a 2 查看函数 变量
  • 最全的Linux运维bash脚本常见用法总结

    删除重复的数组元素 创建临时关联数组 设置关联数组 值并发生重复赋值时 bash会覆盖该键 这 允许我们有效地删除数组重复 CAVEAT 需要bash4 示例功能 remove array dups Usage remove array d
  • 所有pyCharm2018或phpstorm2018版永久激活,亲测无问题

    注意 实际测试软件版本为phpstorm2018 2 3 破解补丁激活 到http idea lanyus com 这里下载补丁 下载 后并将 JetbrainsCrack release enc jar 放置到 D盘根目录 在 Pycha
  • [STM32F4]【把握住了】STM32F4驱动4路VL53L0测距你把握不住

    最近给朋友调试了STM32F407驱动VL53L0的激光测距 安装在机器人上的 遇到一些问题 这里发帖纪录一下 关于VL53L0的资料和代码在正点原子那里都有 但是正点原子只是驱动了一路VL53L0 很多问题都需要我们自己解决 一路的VL5
  • Pikachu靶场之XSS漏洞详解

    Pikachu靶场之XSS漏洞详解 前言 XSS漏洞简述 第1关 反射型xss get 第2关 反射性xss post 第3关 存储型xss 第4关 DOM型xss 第5关 DOM型xss x 第6关 xss盲打 第7关 xss之过滤 第8
  • ATM 网络安全:解决方案、技术和规格--网络大典

    比起 TCP IP 网络 异步传输模式 ATM 网络通常拥有较少的安全漏洞 因为它通常使用光纤作为媒介 并被当作骨干网络用于专用或半专用网络中 侵入 ATM 网络所需的投入是相当高的 然而在 ATM 网络中仍然存在着许多弱点 如信息嗅探 基
  • RTT-线程管理

    RTT 线程管理 官方API文档 https www rt thread org document api group thread html 概念 线程是竞争系统资源的最小运行单元 每个线程在自己的环境中运行 在任何时刻 只有一个线程得到
  • pip 安装 flask_sqlalchemy 报错

    报错一 Errno 13 Permission denied 报错二 ERROR After October 2020 you may experience errors when installing or updating packag
  • Mac电脑如何删除磁盘及双系统分区?

    对于一些新手来说 在使用Mac电脑时可能会选择对硬盘进行分区或者安装双系统 但是 如果后期不需要这些分区时 如何删除它们呢 首先在应用程序中找到实用工具并打开文件夹 然后选择磁盘工具打开 在左侧选中需要修改的磁盘 接着在右侧上方菜单中点击
  • 【当LINUX系统出现网络问题时该如何排查】

    当LINUX出现网络问题时该如何排查 具体问题具体分析 遵循相应的排查思路 一 网络不通时需要进行的处理 1 检测链路是否连通 2 网卡是否正常启用 3 检测路由与网关的配置 4 DNS工作状况 5 检测是否可以正常路由到远程主机 6 检查
  • selenium无登录状态爬取Boss直聘

    BOSS是我很早就实现数据爬取的网站 那会直接用request即可 最近再次尝试以前的代码发现 它做了一些反爬处理 当你直接访问例如https www zhipin com c101210100 b 西湖区 query 数据分析杭州这样的网
  • C++模板基础(五)

    函数模板 函数模板的 完全 特化 template lt gt void f int template lt gt void f int 并不引入新的 同名 名称 只是为某个模板针对特定模板实参提供优化算法 函数模板的特化本质上是实例化 有
  • SQL Server不允许保存更改的解决方法

    点击上面的 工具 选项 在选项对话框中 点击 设计器 表设计器和数据库设计器 去掉 阻止保存要求重新创建表的更改 前面的勾 然后确定 好啦 再去试试吧 应该可以正常修改表的结构啦 o
  • 【NLP】第 2 章 : Transformers简介

    2017 年 12 月左右 发表了一篇题为 Attention Is All You Need 的开创性论文 这篇论文彻底改变了 NLP 领域在未来时代的面貌 本文描述了转换器和所谓的序列到序列架构 序列到序列 或 Seq2Seq 神经网络
  • Excel2013 利用phonetic函数将多行数据合并到同一单元格中

    场景 有一列邮箱数据 现在需要将他们合并到同一个单元格内 且邮箱之间要用英文的逗号隔开 以前五条邮箱为例 利用phonetic函数实现这种合并 合并结果 其中 E列是添加的辅助列
  • Python 调用Sikuli Jar包

    Python 调用Sikuli Python 目录 Sikuli简介 简要说明 环境设置 第一种 Jpype 第二种 Pyjnius 结论 目录 Sikuli简介 Sikuli是由MIT 麻省理工学院 研究团队发布的一种图形化编程技术 编程