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库自动化脚本内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • OpenCV2从摄像头获取帧并写入视频文件的方法

    OpenCV2从摄像头获取帧并写入视频文件的方法

    今天小编就为大家分享一篇OpenCV2从摄像头获取帧并写入视频文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • python实现PDF中表格转化为Excel的方法

    python实现PDF中表格转化为Excel的方法

    这篇文章主要为大家详细介绍了python实现PDF中表格转化为Excel的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • python超参数优化的具体方法

    python超参数优化的具体方法

    在本篇文章里小编给大家整理了一篇关于python超参数优化的具体方法,有需要的朋友们可以学习下。
    2021-08-08
  • python使用mysql的两种使用方式

    python使用mysql的两种使用方式

    pymsql是Python中操作MySQL的模块。这篇文章主要介绍了python使用mysql的两种使用方式,需要的朋友可以参考下
    2018-03-03
  • python用海龟绘图写贪吃蛇游戏

    python用海龟绘图写贪吃蛇游戏

    这篇文章主要为大家详细介绍了python用海龟绘图写贪吃蛇游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • python中zip()方法应用实例分析

    python中zip()方法应用实例分析

    这篇文章主要介绍了python中zip()方法的应用,实例分析了使用zip()方法创建字典的相关技巧,需要的朋友可以参考下
    2016-04-04
  • golang/python实现归并排序实例代码

    golang/python实现归并排序实例代码

    这篇文章主要给大家介绍了关于golang/python实现归并排序的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Python 转换时间戳为指定格式日期

    Python 转换时间戳为指定格式日期

    这篇文章主要为大家介绍了Python转换时间戳,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • Python3 利用requests 库进行post携带账号密码请求数据的方法

    Python3 利用requests 库进行post携带账号密码请求数据的方法

    今天小编就为大家分享一篇Python3 利用requests 库进行post携带账号密码请求数据的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • python+logging+yaml实现日志分割

    python+logging+yaml实现日志分割

    这篇文章主要为大家详细介绍了python+logging+yaml实现日志分割,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07

最新评论