Sikuli教程Python:Python实现图像识别与GUI自动化(Python+sikuli)

本文将会介绍Sikuli在Python语言下的应用,主要针对图像识别以及自动化脚本编写。Sikuli是一个用于图像识别和GUI自动化的开源库,特别适用于自动化测试和UI测试。在Python中使用Sikuli库能够方便地利用图像识别技术来替代传统的手动操作,提高效率。

一、安装Sikuli功能库

Sikuli库的安装非常简单,可以通过以下步骤完成。

1、下载SikuliX的Java包。


$ curl -O https://launchpad.net/sikuli/sikulix/1.1.1/+download/sikuli-setup.jar

2、安装Java运行包。


$ sudo apt-get update
$ sudo apt-get install default-jre-headless

3、执行Java包。


$ java -jar sikuli-setup.jar

注意:Windows用户可以直接下载exe可执行文件进行安装。

二、使用Sikuli进行图像识别

Sikuli最大的特点在于它使用图像匹配算法来定位一张图片在屏幕中的位置,实现了通用图像识别技术。下面我们就围绕这个特性来介绍Sikuli在Python中的应用。

1、基础操作

首先,让我们来看一下Sikuli的基础操作。

1)截图


# 导入sikuli库
import sikuli
# 将屏幕上的指定区域保存为图片
screen_img = sikuli.capture(10, 10, 100, 100)
# 将图片保存到指定的路径
screen_img.save("/path/to/image.png")

2)搜索图像


# 导入sikuli库
import sikuli
# 搜索包含目标图像的位置,并返回坐标和精度值
target = sikuli.find("image.png")
# 输出坐标和精度值
print(target.getTarget())

2、实战应用

下面我们通过实战演练来更深入地了解Sikuli的应用。这里我们以贪吃蛇游戏为例来介绍如何使用Sikuli进行自动化操作。

1)准备工作

首先,我们需要打开贪吃蛇游戏页面,并将浏览器窗口大小调整到游戏界面大小。


# 导入sikuli库
import sikuli
# 打开游戏页面
sikuli.openApp("firefox http://snake.example.com/")
# 等待游戏下方的状态栏出现
sikuli.wait(5)
# 调整浏览器窗口大小为游戏界面大小
sikuli.resize(600, 400)

2)开始游戏

游戏开始前,我们需要点击页面上的“开始游戏”按钮。


# 导入sikuli库
import sikuli
# 点击“开始游戏”按钮
start_btn = sikuli.images("start_btn.png")
sikuli.click(start_btn)
# 等待游戏开始
sikuli.wait(10)

3)控制游戏

通过识别屏幕上的图像,我们可以控制蛇的移动方向。


# 导入sikuli库
import sikuli
# 控制蛇的方向
while True:
    up_arrow = sikuli.images("up_arrow.png")
    down_arrow = sikuli.images("down_arrow.png")
    left_arrow = sikuli.images("left_arrow.png")
    right_arrow = sikuli.images("right_arrow.png")
    if up_arrow.exists():
        sikuli.press(Key.UP)
    elif down_arrow.exists():
        sikuli.press(Key.DOWN)
    elif left_arrow.exists():
        sikuli.press(Key.LEFT)
    elif right_arrow.exists():
        sikuli.press(Key.RIGHT)
    sikuli.wait(1)

三、使用Sikuli进行GUI自动化

除了图像识别外,Sikuli还可以用于GUI自动化,即自动化控制用户界面进行操作。下面我们就进一步学习Sikuli在Python中GUI自动化的使用。

1、基础操作

Sikuli的GUI自动化分为以下几个步骤。

1)打开应用程序


# 导入sikuli库
import sikuli
# 打开应用程序
sikuli.openApp("/Applications/Calculator.app")

2)查找目标窗口


# 导入sikuli库
import sikuli
# 查找目标窗口
target_window = sikuli.Window("Calculator")

3)查找目标控件


# 导入sikuli库
import sikuli
# 查找目标控件
button = target_window.find("1")

4)操作目标控件


# 导入sikuli库
import sikuli
# 操作目标控件
button.click()

2、实战应用

下面我们以Mac系统下的计算器应用为例来介绍如何使用Sikuli进行自动化操作。

1)准备工作

首先,我们需要打开计算器应用,并将窗口拉到指定的位置。


# 导入sikuli库
import sikuli
# 打开计算器应用
sikuli.openApp("/Applications/Calculator.app")
# 等待应用程序打开
sikuli.wait(5)
# 将窗口拉到指定位置
sikuli.ControlPanel.dragDrop("calculator.png", Location(10, 10))

2)进行计算

我们可以通过模拟用户点击按钮的方式来输入算式。


# 导入sikuli库
import sikuli
# 点击数字1
button1 = sikuli.images("button1.png")
button1.click()
# 点击加号
add_btn = sikuli.images("add_btn.png")
add_btn.click()
# 点击数字2
button2 = sikuli.images("button2.png")
button2.click()
# 点击等号
equal_btn = sikuli.images("equal_btn.png")
equal_btn.click()

四、总结

本文介绍了Sikuli库在Python语言下的应用,主要聚焦于图像识别和GUI自动化两个方面。Sikuli是一个强大的开源库,利用它可以轻松完成图像识别和GUI自动化的工作,提高开发效率。希望对读者在工作中使用Sikuli提供帮助。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平