利用sikuli插件辅助实现自动化脚本

最近因为写一个网页游戏自动化登录并签到的python脚本而头疼,麻烦之处在于游戏布置在画布上,无法通过元素进行定位,后续的点击操作也就无从谈起。所幸后来了解到有sikuli这样一个第三方库,借助其图像识别功能可以解决定位问题。(顺带说一句,也可以通过坐标定位的方式模拟js执行来解决网页中画布元素操作的问题)。

这里记录一下通过图像识别定位实现自动化的工具和环境配置:

  • sikuli下载下来应该是一个jar包(我用的sikulixide-2.0.5.jar),配置jdk环境后(我在win11上8.0版本 )可以直接打开作为客户端使用,但是需要将其配置在javapath文件夹下,否则脚本执行失败。如果需要通过python调用,也是需要下载sikulixide.jar包:

SikuliX Downloadshttps://raiman.github.io/SikuliX1/downloads.html

 然后在Pycharm中通过

pip install py4j 安装java调用库以调用下载的jar程序

然后cmd中通过

java -jar path-to/sikulixide.jar -p   来开启服务

下载sikulix4python目录放到你的python工程中,和script同级即可(IDE是Pycharm)

GitHub - RaiMan/sikulix4python: Use SikuliX from real Python via py4j

from sikulix4python import *   #此方法需要配合java开启服务

Import py4j


        #make images available in the folder of the script

        addImagePath()  #这样才能保证截图的目标识别图像所在路径有效,否则无法访问截图图像

        screen=Screen() #实例化

        screen.click("D:\\pythonProject1\\pic\\test.png")

 

下面给出更详细的源码,作为一个框架,设计思路是使用者将要依次操作的目标图像截图并保存到指定文件夹下。并依次命名为1.png、2.png,...(也可以根据需要不这么做)。脚本执行时读取该文件夹下的所有png文件,并进行需要的操作:

from sikulix4python import *
import py4j
# java -jar "E:\sikulixide-2.0.5.jar" -p
import glob

addImagePath("E:\AutoOffice\venv")  #括号内应该填入图像所在文件夹
scr=Screen()

file_out_dir = r'E:\AutoOffice\venv\test_png\\'
id_file = file_out_dir + '*.png'

#几个文件
len_file = len(glob.glob(id_file))
# print(len_file)
#遍历文件路径
# print(glob.glob(id_file))


for img in glob.glob(id_file):
    print(img)

    match = scr.exists(img, 3.) # method missing, wrong signature
    match = scr.exists(img, 3.0) # number must be float/double
    if match:
        # match.highlight(2)
        match.click()  #模拟鼠标单击
        match.type(img,"lilili\n\n")  #模拟定位并输入文本,默认是英文

有了这个,个人的办公自动化就会变得很容易了,当然有个前提,就是自动化执行时候得是显式可见的,很难再操作其他事情。

详细用法参考SikuliX 的安装与使用 - Sprout Blog

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值