文章目录
- 从官方 GitHub 仓库下载 访问 SikuliX 的官方 GitHub 发布页面: https://github.com/RaiMan/SikuliX1/releases 在页面中找到版本 2.0.5,展开 Assets 部分,下载 sikulixide-2.0.5.jar 文件。
- sikulixide需依赖于java运行库才能实现运行 访问Oracle官方网站的Java下载页面(https://www.oracle.com/java/technologies/javase-jre8-downloads.html)。选择适合操作系统的版本(Windows、macOS或Linux),勾选接受许可协议后点击下载链接。安装时需管理员权限,按提示完成安装。
- from jpype import * from sikulix4python import *
- # 获取当前运行的临时目录 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库功能
- 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模块,后续的桌面图像操作需基于此屏幕变量进行
- 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()
目录
- SikuliX的基本概念
- SikuliX的核心功能
- 典型应用场景
- 示例代码片段
- 使用案例
- 1. 下载sikulixide库文件
- 2. 下载JAVA运行库
- 3. 正确导入模块
- 4. 在python脚本中正确设置sikulixide库以及JAVA运行库的文件位置
- 5. 设置窗口信息
- 6. 设置屏幕操作功能函数
- 注意事项
- 总结
SikuliX是一种基于图像识别的自动化工具,允许用户通过屏幕截图来定位和操作图形用户界面(GUI)元素。它结合了计算机视觉和脚本语言(如Python或Jython),能够模拟人类对图形界面的交互行为,如点击、输入、拖拽等。
图像识别与匹配
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库实现桌面图标识别达到自动化运行目的
从官方 GitHub 仓库下载
访问 SikuliX 的官方 GitHub 发布页面:
https://github.com/RaiMan/SikuliX1/releases
在页面中找到版本 2.0.5,展开 Assets 部分,下载 sikulixide-2.0.5.jar 文件。
sikulixide需依赖于java运行库才能实现运行
访问Oracle官方网站的Java下载页面(https://www.oracle.com/java/technologies/javase-jre8-downloads.html)。选择适合操作系统的版本(Windows、macOS或Linux),勾选接受许可协议后点击下载链接。安装时需管理员权限,按提示完成安装。
from jpype import *
from sikulix4python import *
# 获取当前运行的临时目录
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库功能
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模块,后续的桌面图像操作需基于此屏幕变量进行
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模块有重叠,但图像识别能力更强大
.jar 文件。
到此这篇关于python调用sikulixide库实现自动化脚本的文章就介绍到这了,更多相关python调用sikulixide库自动化脚本内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!
您可能感兴趣的文章:
- 6个实用的Python自动化脚本详解
- python实现自动化上线脚本的示例
- 实用自动化运维Python脚本分享
- python实现自动化脚本编写
- 十个简单使用的Python自动化脚本分享
- 八个超级好用的Python自动化脚本(小结)