文章内容含deepseek生成的内容请读者甄别
SikuliX
-
简介:
-
基于图像识别的自动化工具,支持跨平台。
-
-
特点:
-
通过截图识别UI元素。
-
支持多种编程语言(Python, Java等)。
-
跨平台(Windows, macOS, Linux)。
-
-
适用场景:
-
依赖图像识别的跨平台自动化测试。
-
-
网站:
-
下载:
所有平台
win
两者文件大小不一样
-
使用:
- 前提条件电脑有java环境,java环境配置教程:Java开发环境搭建-CSDN博客
-
打开
示例
打开笔记本并保存
打开笔记本
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 测试、自动化任务等场景。