python调用sikulixide库实现自动化脚本方法实例

 更新时间:2025年11月15日 08:53:15   作者:#undefined me  
SikuliX IDE是一个基于图像识别的自动化测试工具,主要用于UI测试,它本身并不直接支持文本文件读取操作,因为它主要用于处理屏幕上的图片和截图,这篇文章主要介绍了python调用sikulixide库实现自动化脚本的相关资料,需要的朋友可以参考下

SikuliX的基本概念

SikuliX是一种基于图像识别的自动化工具,允许用户通过屏幕截图来定位和操作图形用户界面(GUI)元素。它结合了计算机视觉和脚本语言(如Python或Jython),能够模拟人类对图形界面的交互行为,如点击、输入、拖拽等。

SikuliX的核心功能

图像识别与匹配

SikuliX通过截取屏幕上的目标区域图像,将其作为模板进行匹配。匹配算法支持调整相似度阈值,以适应不同分辨率和界面变化。

跨平台支持

支持Windows、macOS和Linux系统,能够在不同操作系统中实现统一的自动化操作。

脚本化操作

支持Jython(Python的Java实现)脚本,允许用户编写复杂的逻辑流程。脚本可以调用SikuliX提供的API,实现点击、输入、等待等操作。

集成开发环境(IDE)

提供内置的SikuliX IDE,支持脚本编辑、调试和运行。用户可以直接在IDE中截取屏幕区域并生成代码片段。

多语言支持

支持多种编程语言调用,包括Java、Python等。可以通过Java的API将SikuliX集成到其他自动化框架中。

典型应用场景

  • GUI自动化测试:对桌面应用或Web应用进行功能测试,无需依赖底层代码。
  • 重复性任务自动化:如批量文件处理、数据录入等。
  • 游戏脚本:实现简单的游戏操作自动化,如自动点击或按键。

示例代码片段

from sikulix4java import Screen

screen = Screen()
# 点击匹配到的目标图像
screen.click("image.png")
# 在匹配到的区域输入文本
screen.type("image.png", "Hello SikuliX")

使用案例

使用python导入sikulixide库实现桌面图标识别达到自动化运行目的

1. 下载sikulixide库文件

从官方 GitHub 仓库下载

访问 SikuliX 的官方 GitHub 发布页面:

https://github.com/RaiMan/SikuliX1/releases

在页面中找到版本 2.0.5,展开 Assets 部分,下载 sikulixide-2.0.5.jar 文件。

2. 下载JAVA运行库

sikulixide需依赖于java运行库才能实现运行

访问Oracle官方网站的Java下载页面(https://www.oracle.com/java/technologies/javase-jre8-downloads.html)。选择适合操作系统的版本(Windows、macOS或Linux),勾选接受许可协议后点击下载链接。安装时需管理员权限,按提示完成安装。

3. 正确导入模块

from jpype import *  
from sikulix4python import *

4. 在python脚本中正确设置sikulixide库以及JAVA运行库的文件位置

# 获取当前运行的临时目录
base_path = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__)))

# 设置 JAVA_HOME 环境变量
os.environ['JAVA_HOME'] = os.path.join(base_path, 'jre-image')

# 构建 Java 网关的完整路径
java_path = os.path.join(base_path, 'sikulixide-2.0.5.jar')

建立网关,连接两个功能库

# 异步启动 Java 网关,指定端口号
try:
    subprocess.Popen(['java', '-jar', java_path, '-p', '25333'])
except Exception as e:
    print(f"Failed to start Java gateway: {e}")

设置报警信息

网关通信正常后可正常使用sikulixide库功能

5. 设置窗口信息

classpath = os.path.join(os.getcwd(), "sikulixapi-2.0.5-win.jar")
startJVM(getDefaultJVMPath(), "-ea", f"-Djava.class.path={classpath}")
#java.lang.System.out.#println("------------------------------------------- \n")
Screen = JClass("org.sikuli.script.Screen")
screen = Screen()

同python中的pygui模块,后续的桌面图像操作需基于此屏幕变量进行

6. 设置屏幕操作功能函数

1. 屏幕图片单击操作功能函数

#双图片单击
def auto_click_image2(image_path1, image_path2, similarity=1.0):
    if screen.exists(image_path1, timeout=3, similarity=similarity):
        screen.click(image_path1)
    elif screen.exists(image_path2, timeout=3, similarity=similarity):
        screen.click(image_path2)
    #else:
        #print(f"{image_path1} 和 {image_path2} 均未找到")

2. 屏幕图片双击功能函数

#单图片双击
def auto_doubleclick_image(image_path, similarity=1.0):
    if screen.exists(image_path, timeout=3, similarity=similarity):
        screen.doubleClick(image_path)
    #else:
        #print(f"{image_path} 未找到")

3. 文本输入功能函数

#文本输入函数
def type_on_screen(img, text):
    match = screen.exists(img, 3.0)  # number must be float/double
    if match:
        match.click()  # 模拟鼠标单击
        match.type(text)  # 模拟定位并输入文本

4. 移动鼠标位置功能函数

#移动鼠标位置
def move_mouse_to_center():
    screen_width, screen_height = pyautogui.size()
    pyautogui.moveTo(screen_width / 2, screen_height / 2)
    # 等待1秒
    time.sleep(1)

5. 适当的添加UI界面布局(tkinter)

        directory_var = tk.StringVar(root)
        tk.Label(root, text="选择文件保存地址:").pack()
        directory_entry = tk.Entry(root, textvariable=directory_var)
        directory_entry.pack()
        # 修改按钮的命令,使其在点击时调用选择目录函数,并更新地址
        directory_button = tk.Button(root, text="浏览", command=lambda: directory_var.set(select_directory_wx()))
        directory_button.pack()
        #选择测试系统
        tk.Label(root, text="选择测试的系统版本:").pack()
        system_var = tk.StringVar(value='TNC640')
        system_menu = tk.OptionMenu(root, system_var, 'TNC640', 'TNC7')
        system_menu.pack()

6. 程序结束后关闭java服务器

shutdownJVM()

注意事项

  • 确保系统已安装 Java 8 或更高版本以运行 .jar 文件。
  • 程序运行前确保java服务器与sikulixide库正常通讯
  • 确认屏幕信息获取正常
  • 该功能与pyGUI模块有重叠,但图像识别能力更强大

总结 

到此这篇关于python调用sikulixide库实现自动化脚本的文章就介绍到这了,更多相关python调用sikulixide库自动化脚本内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 梅尔倒谱系数(MFCC)实现

    梅尔倒谱系数(MFCC)实现

    这篇文章主要为大家详细介绍了梅尔倒谱系数(MFCC)实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • Python处理压缩文件的详细指南

    Python处理压缩文件的详细指南

    在日常数据处理和文件管理中,压缩文件是一种常见的文件格式,使用Python可以方便地自动化处理压缩文件,下面就跟随小编一起深入了解下Python是如何处理这些压缩文件的吧
    2024-12-12
  • python攻防-破解附近局域网WIFI密码实现上网自由

    python攻防-破解附近局域网WIFI密码实现上网自由

    本文将记录学习如何通过 Python 脚本实破解附近局域网 WIFI 密码的暴力破解,随时随地免费蹭网,再也不被WiFi密码困扰,实现蹭网自由
    2021-08-08
  • Django 解决model 反向引用中的related_name问题

    Django 解决model 反向引用中的related_name问题

    这篇文章主要介绍了Django 解决model 反向引用中的related_name问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • PyCharm 创建指定版本的 Django(超详图解教程)

    PyCharm 创建指定版本的 Django(超详图解教程)

    这篇文章主要介绍了PyCharm 创建指定版本的 Django,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06
  • Python求导数的方法

    Python求导数的方法

    这篇文章主要介绍了Python求导数的方法,涉及Python数学运算的相关技巧,需要的朋友可以参考下
    2015-05-05
  • 详解python的ORM中Pony用法

    详解python的ORM中Pony用法

    本篇文章给大家详细介绍了python的ORM中Pony用法以及详细代码分享,对此有需要的朋友测试参考下。
    2018-02-02
  • Python 中的类class实例详解

    Python 中的类class实例详解

    这段文章详细介绍了Python面向对象编程的核心概念,文章还强调了类的命名规范、实例方法与属性的区别、私有属性的定义及使用@property简化数据类定义的重要性,感兴趣的朋友跟随小编一起看看吧
    2026-05-05
  • 使用Python生成跑马灯视频的完整代码

    使用Python生成跑马灯视频的完整代码

    这篇文章主要介绍了如何使用Python生成跑马灯视频,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-11-11
  • python 6行代码制作月历生成器

    python 6行代码制作月历生成器

    这篇文章主要介绍了python如何用6行代码制作月历生成器,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-09-09

最新评论