SikuliX使用

文章内容含deepseek生成的内容请读者甄别

SikuliX

  • 简介

    • 基于图像识别的自动化工具,支持跨平台。

  • 特点:

    • 通过截图识别UI元素。

    • 支持多种编程语言(Python, Java等)。

    • 跨平台(Windows, macOS, Linux)。

  • 适用场景:

    • 依赖图像识别的跨平台自动化测试。

  • 网站:

  • 下载:

所有平台

win

两者文件大小不一样

示例

打开笔记本并保存

打开笔记本
import subprocess
# 使用 subprocess 启动记事本(非阻塞)
subprocess.Popen("notepad.exe")
 不使用run函数的原因

在 SikuliX 中,run() 函数默认是阻塞式的,也就是说,它会等待启动的程序关闭后,才会继续执行脚本中的后续代码。

输入文本
# 输入文本 "Hello"
type("Hello")
type(Key.ENTER)
wait(1)  # 等待 1 秒
保存文件
# 保存文件:使用 keyDown() 和 keyUp() 发送 Ctrl + S
keyDown(Key.CTRL)  # 按下 Ctrl 键
type("s")  # 按下 S 键
keyUp(Key.CTRL)  # 释放 Ctrl 键
wait(1)  # 等待 1 秒

# 输入文件名
paste("test.txt")  # 直接粘贴文件名
wait(1)  # 等待 1 秒

# 按下回车键确认保存
type(Key.ENTER)
全部代码
示例1
import subprocess

# 使用 subprocess 启动记事本(非阻塞)
subprocess.Popen("notepad.exe")

# 等待记事本窗口打开
wait(3)  # 增加等待时间,确保记事本完全打开


# 输入文本 "Hello"
type("Hello")
type(Key.ENTER)
wait(1)  # 等待 1 秒

# 保存文件:使用 keyDown() 和 keyUp() 发送 Ctrl + S
keyDown(Key.CTRL)  # 按下 Ctrl 键
type("s")  # 按下 S 键
keyUp(Key.CTRL)  # 释放 Ctrl 键
wait(2)  # 等待 2 秒

# 输入文件名
paste("test.txt")  # 直接粘贴文件名
wait(1)  # 等待 1 秒

# 按下回车键确认保存
type(Key.ENTER)
wait(1)  # 等待 1 秒


# 关闭记事本
keyDown(Key.ALT)
keyDown(Key.F4)  # 按下 Alt + F4 关闭记事本
keyUp(Key.ALT)
keyUp(Key.F4)
示例二

注意:记事本只能在主屏幕上才能正确点击,副屏运行会出错

常用函数

SikuliX 是一个基于图像识别的自动化工具,允许用户通过截图来识别和操作图形用户界面(GUI)元素。它结合了图像识别和脚本编写功能,支持多种编程语言(如 Python、Jython 等)。以下是 SikuliX 中一些常用的功能函数介绍:

1. 基本操作函数

  • click(): 点击指定的图像或区域。

    click("image.png")  # 点击与 image.png 匹配的图像
  • doubleClick(): 双击指定的图像或区域。

    doubleClick("image.png")  # 双击与 image.png 匹配的图像
  • rightClick(): 右键点击指定的图像或区域。

    rightClick("image.png")  # 右键点击与 image.png 匹配的图像
  • type(): 在指定的图像或区域中输入文本。

    type("image.png", "Hello World")  # 在 image.png 匹配的区域输入 "Hello World"
  • paste(): 在指定的图像或区域中粘贴文本。

    paste("image.png", "Text to paste")  # 在 image.png 匹配的区域粘贴文本
  • hover(): 将鼠标移动到指定的图像或区域。

    hover("image.png")  # 将鼠标移动到 image.png 匹配的图像
  • dragDrop(): 从一个图像或区域拖动到另一个图像或区域。

    dragDrop("image1.png", "image2.png")  # 从 image1.png 拖动到 image2.png

2. 图像识别与等待

  • find(): 查找指定的图像,返回匹配的区域。

    match = find("image.png")  # 查找 image.png,返回匹配的区域
  • exists(): 检查指定的图像是否存在,返回布尔值。

    if exists("image.png"):
        print("Image found!")
  • wait(): 等待指定的图像出现,超时后抛出异常。

    wait("image.png", 10)  # 等待 image.png 出现,最多等待 10 秒
  • waitVanish(): 等待指定的图像消失,超时后抛出异常。

    waitVanish("image.png", 10)  # 等待 image.png 消失,最多等待 10 秒

3. 区域操作

  • Region: 表示屏幕上的一个区域,可以进行各种操作。

    region = Region(100, 100, 200, 200)  # 定义一个区域,左上角坐标 (100,100),宽高 200x200
    region.click("image.png")  # 在该区域内点击 image.png
  • findAll(): 查找所有匹配的图像,返回一个匹配列表。

    matches = findAll("image.png")  # 查找所有匹配的 image.png
    for match in matches:
        print(match)

4. 键盘与鼠标操作

  • keyDown(): 按下指定的键。

    keyDown(Key.CTRL)  # 按下 Ctrl 键
  • keyUp(): 释放指定的键。

    keyUp(Key.CTRL)  # 释放 Ctrl 键
  • wheel(): 模拟鼠标滚轮滚动。

    wheel(WHEEL_DOWN, 5)  # 向下滚动 5 次

5. 屏幕操作

  • Screen: 表示整个屏幕,可以进行全局操作。

    screen = Screen()  # 获取屏幕对象
    screen.click("image.png")  # 在屏幕上点击 image.png
  • capture(): 截取屏幕或区域的截图。

    screenshot = capture(100, 100, 200, 200)  # 截取指定区域的截图

6. 其他功能

  • popup(): 显示一个弹出窗口。

     
    popup("Hello World!")  # 显示一个弹出窗口,内容为 "Hello World!"
  • run(): 运行外部程序或命令。

    run("notepad.exe")  # 运行记事本程序

7. 条件与循环

  • if 和 while: 结合图像识别进行条件判断和循环操作。

    while exists("image.png"):
        click("image.png")
        wait(1)

8. 异常处理

  • try-except: 捕获和处理异常。

    try:
        click("image.png")
    except FindFailed:
        print("Image not found!")

总结

SikuliX 提供了丰富的功能函数,能够通过图像识别实现各种自动化操作。通过结合这些函数,用户可以编写复杂的自动化脚本,适用于 GUI 测试、自动化任务等场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Z_W_H_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值