RPALite

Python 编程指南

目录

简介

本指南详细介绍了如何在 Python 中使用 RPALite。RPALite 是一个开源的 RPA(机器人流程自动化)库,允许您通过 Python 自动化各种任务。

平台支持

RPALite 目前支持以下平台:

OCR 引擎配置

RPALite 支持两种 OCR 引擎:

你可以在初始化 RPALite 时配置 OCR 引擎:

# 使用 PaddleOCR(默认)
rpalite = RPALite(ocr_engine="paddleocr")

# 使用 EasyOCR
rpalite = RPALite(ocr_engine="easyocr")

安装

要安装 RPALite,请使用 pip:

pip install RPALite

基本用法

以下是一个使用 RPALite 的简单 Python 示例:

from RPALite import RPALite

# 初始化 RPALite
rpalite = RPALite()

# 显示桌面
rpalite.show_desktop()

# 运行记事本并输入文本
rpalite.run_command("notepad.exe")
rpalite.input_text("Hello from RPALite!")

# 查找并关闭记事本
app = rpalite.find_application(".*Notepad")
rpalite.close_app(app)

高级功能

RPALite 提供了许多高级功能,包括:

故障排除

如果遇到任何问题:

  1. 确保您具有所需的权限
  2. 检查日志文件中的错误信息
  3. 验证所有依赖项是否正确安装
  4. 对于 Windows,如果需要,请确保您具有管理员权限

安装

你可以通过 pip 安装 RPALite:

pip install RPALite

也可以通过下面的方法在下载代码以后进行安装:

下载代码后安装

首先将项目克隆到本地:

git clone https://github.com/jieliu2000/RPALite.git

之后进入 rpalite 目录后 build 并安装

cd RPALite

安装 build 所需要的库:

pip install -r requirements.txt

进行项目构建:

python -m build

之后使用 pip 进行安装。以下代码为一个示例,实际使用时请把 XXX 改成对应的实际版本号

cd dist
pip install rpalite-XXX.tar.gz

创建 RPALite 对象

由于 RPALite 被声明为一个类,在所有操作开始之前,你需要首先创建 RPALite 对象

from RPALite import RPALite
rpalite = RPALite()

RPALite 的构造函数包含多个可选参数:

本文档之后的示例中使用的 rpalite 对象,都假设已经执行了创建对象的代码。

程序应用操作

启动应用

你可以使用run_command启动一个应用:

rpalite.run_command("notepad.exe")

run_command 函数有两个参数:

查找应用

你可以使用以下代码查找一个应用:

app = rpalite.find_application(".*Notepad")

find_application 支持通过以下参数查找一个应用:

关闭应用

通过 find_application 函数获取到 application 实例后,你可以使用以下代码关闭一个应用:

app = rpalite.find_application(".*Notepad")
rpalite.close_app(app)

最大化窗口

你可以使用以下代码最大化一个应用窗口:

app = rpalite.find_application(".*Notepad")
rpalite.maximize_window(app)

模拟鼠标操作

RPALite 支持通过多种鼠标模拟操作,譬如点击文本,点击图片,点击坐标等

得到当前光标坐标

position = rpalite.get_cursor_position()
print(f"Current mouse position: {position}")

得到的坐标为元组形式(x, y),例如 (10, 20)表示横坐标为 10,纵坐标为 20。注意,这里的坐标是相对于屏幕左上角的坐标。

移动鼠标到指定位置

rpalite.mouse_move(10, 20)

参数为横坐标 x, 纵坐标 y。屏幕左上角为(0, 0)

按坐标点击

rpalite.click_by_position(10, 20)

其中第一个参数为 横坐标 x,第二个参数为纵坐标 y。屏幕左上角为(0, 0)

点击文本

你可以使用以下代码点击文本:

rpalite.click_by_text("Text to click")

点击图片

你可以使用以下代码点击图片:

rpalite.click_by_image("path/to/image.png")

RPALite 会使用 OpenCV 在屏幕上查找对应的图片,如果找到则点击该图片的左上角。

键盘/文本操作

在当前光标位置输入文本

你可以使用以下代码输入一段文本:

rpalite.input_text("This is a demo using RPALite.\n")

如同上面代码所示,input_text 函数不会自动换行,你需要自己添加换行符。 如果你需要在某个特定位置输入文本,可以首先用 mouse_move 函数移动到指定位置,然后再输入文本。

获取字段的值

value = rpalite.get_text_field_value("Field name")
print(f"Value of field: {value}")

RPALite 使用 OCR 和 AI 图像技术识别对应的字段和字段的值。由于这种识别并不总是准确的,这个函数可能会有一定的概率出现误差或者错误。在实际的使用中,需要根据实际情况进行调整。

根据字段名称模拟输入文本

rpalite.enter_in_field("Field name", "New value")

enter_in_field函数有两个参数:

RPALite 使用 OCR 和 AI 图像技术识别对应的字段和文本框位置。同样的,存在一定概率出现误差或者错误。在实际的使用中,需要根据实际情况进行调整。

发送按键

你可以使用以下代码模拟按下键盘上的某个键:

rpalite.send_keys("{VK_LWIN down}D{VK_LWIN up}")

校验文本是否存在

rpalite.validate_text_exists("Text to check")

你可能注意到在上面的代码中validate_text_exists并没有返回值,这是因为如果文本不存在,该函数会直接抛出一个 AssertionError 异常。

RPALite 使用 OCR 技术来识别文本,这种识别并不总是准确的,而且我们的识别都只是识别单行文本,所以一方面这个函数可能会识别出错,另一方面无法识别多行文本。你在实际的使用中,需要根据实际情况进行调整。

获取文本的坐标

positions = rpalite.find_text_positions("Text to find")
print(f"Text positions: {positions}")
print(f"First matched text position: {positions[0]}")

注意find_text_positions函数返回的是一个列表,表示文本在屏幕上的位置。其中列表中的每一项都是一个结构为 (x, y, width, height) 的元组,表示文本在屏幕上的位置。x, y 表示文本的左上角坐标,width 和 height 分别表示识别出来的文本的宽度和高度。

剪贴板操作

获取剪贴板文本

text = rpalite.get_clipboard_text()
print(f"Clipboard content: {text}")

把文本复制到剪贴板

rpalite.copy_text_to_clipboard("This is a demo using RPALite.")

全局操作

休眠

rpalite.sleep(5)

sleep函数接受一个整数参数,表示 RPALite 需要休眠多少秒。这个参数是可选的,默认值是 rpalite 对象的step_pause_interval属性。

我们前面讲过,这个值不能设定为 0,因为在鼠标或者键盘模拟动作以后,Windows 或者你所操作的程序本身也需要一点时间进行响应,否则程序出问题的可能性会大大增加。如果你将这个参数设定为 0,RPALite 会直接使用step_pause_interval的值。如果你将 RPALite 的step_pause_interval属性设定为 0,那么 RPALite 会直接跳过休眠操作。

显示桌面

rpalite.show_desktop()

获取屏幕尺寸

size = rpalite.get_screen_size()
print(f"Screen size: {size}")

get_screen_size函数返回一个元组,表示屏幕的尺寸。例如 (1920, 1080) 表示屏幕宽度为 1920 像素,高度为 1080 像素。

屏幕截图

pil_image = rpalite.take_screenshot()

take_screenshot函数返回一个 PIL 图像对象,表示当前屏幕的截图。它有两个可选的参数:

录屏

开始录屏

rpalite.start_screen_recording()

start_screen_recording函数会启动录屏功能,并开始录制屏幕。它有两个可选参数:

start_screen_recording 目前只支持保存为 AVI 格式的录屏文件。

结束录屏

rpalite.stop_screen_recording()