MAC上不能使用Jpype,需要Py4j,以及专门的skulix库 robotframework-sikulixlibrary
安装方法:
robotframework-sikulixlibrary · PyPI
pip install robotframework-sikulixlibrary
原文翻译:
项目描述
机器人框架-sikulix 库
基于 JPype 或 Py4J Python 模块的全新现代 SikuliX 机器人框架库,适用于 Python 3.x。
它可以与例如机器人框架项目(https://robotframework.org)、Robocorp 项目(https://robocorp.com)一起使用——对于初学者或纯 Python 项目来说是最简单的方法。无论是测试自动化类型的项目,还是开源 RPA(机器人流程自动化)项目。
JPype是一个 Python 模块,用于提供从 Python 内部对 Java 的完全访问。
Py4J使在 Python 解释器中运行的 Python 程序能够动态访问 JVM 中的 Java 对象。
该库是 SikuliX 的包装器,它将 Java 函数公开为 Robot Framework 关键字,并且可以选择使用任何 JPype 或 Py4J 模块。这是通过创建 SIKULI_PY4J 环境变量并将其设置为 1 来完成的。当未定义或设置为 0 时,将使用 JPype。请注意,在 MacOS 上,只能使用 Py4J,而在 Windows 或 Ubuntu 上,它们中的任何一个都可以使用。
虽然过去在 Robot Framework 中使用 Sikuli 功能的唯一方法是通过带有 XML RPC 接口的远程服务器,但这个库的目的是替换这种方法,并通过一个简单的库在 Robot Framework 项目中使用 SikuliX 变得更加容易声明(即无需启动远程服务器等)。
此外,使用此实现很容易使用新的自定义关键字扩展库,例如创建迁移类以帮助从当前的 Sikuli 库或其他图像识别替代方案迁移。有关实际示例,请检查迁移文件夹。
请参阅关键字文档。
安装说明 (Windows)
- JPype 或 Py4J 支持的 Python 3.5 或更新版本
- JPype 1.2 或更新版本以及 JPype 项目依赖项,如项目页面所述:https ://github.com/jpype-project/jpype
- 安装 Java 8 或更新版本
- 虽然 JPype 页面上没有提到,但在新的 Windows 10 机器上还需要 Visual C++ Redistributable 2015 和更高版本(例如 vc_redist.x64.exe)
- 或 Py4J 0.10.9.2 或更新版本
- SikuliX 作为项目页面中的独立 jar:https ://raiman.github.io/SikuliX1/downloads.html
- 将 jar 文件放在任何本地目录中(例如 C:\sikulix\sikulix.jar)
- Py4J 服务器从 SikuliX 2.0.5 开始启用,目前宣传为实验性的。但是,这个库在 Py4J 中按预期工作。
- 建议使用指向 sikulix 本地目录的环境变量 SIKULI_HOME
pip install robotframework-sikulixlibrary
- 如果在您的环境(RF IDE 工具)中未生成 libspec 并因此无法识别库关键字,请检查下面的已知问题部分
虽然 JPype JVM 总是自动启动,但 Py4J JVM 可以手动或自动启动。要手动启动,请使用以下命令:
java -jar sikulix.jar -p
(启动 Py4J 服务器)或 java -jar -DsikuliDebug=3 sikulixide.jar -p
(例如用于检查 sikulix 调试信息)
例子
使用机器人框架进行测试
*** Settings ***
Library SikuliXLibrary sikuli_path=sikulixide-2.0.5.jar
*** Test Cases ***
Example Test
imagePath add ${my_path}
settings set MinSimilarity ${0.9}
app open C:/Windows/System32/notepad.exe
region wait iNotepad.PNG
region paste Welcome!
使用Python进行测试。
from SikuliXLibrary import SikuliXLibrary
sikuli_path = 'sikulixide-2.0.5.jar'
lib = SikuliXLibrary(sikuli_path)
lib.imagePath_add('my_path')
lib.settings_set('MinSimilarity', float(0.9))
lib.app_open("C:\\Windows\\System32\\notepad.exe")
lib.region_wait('iNotepad')
lib.region_paste('Welcome!)
测试
Git 克隆,如果不为此库使用 pip install,则只需将 PYTHONPATH 指向本地 robotsframework-sikulixlibrary 文件夹并执行:
python testlibrary_win.py
(或测试目录下的任何 .py 文件和选择的操作系统
robot --outputdir results/default test_defaultlibrary_win.robot
(或测试目录下的任何 .robot 文件和选择的操作系统)
显然,来自 test/img/MacOS、Ubuntu 或 Windows 的图像文件可能无法在特定环境下运行,需要重新生成。同样对于这些测试,定义了 SIKULI_PATH,SikuliX 的名称是sikulixide-2.0.5.jar
此外,还可以使用此库对 Robot Framework 和 Pyton 代码使用一些支持 RF 的工具进行调试。Python 库调试使用 Visual Studio Code 和 Robocorp 的 Robot Framework Language Server 进行了测试,使用debug test.py
文件。此外,通过在 launch.json 文件(VSCode 特定文件)中创建特定配置,使用相同的工具对测试目录中的 Robot Framework 测试代码进行了调试测试。
支持的操作系统
-
视窗 10
- 支持,使用 JPype 和 Py4J 测试
-
操作系统
- SikuliX 在 OSX 下工作,但目前 JPype 通常在 OSX 下工作存在问题:https ://github.com/jpype-project/jpype/issues/911
- Py4J 在 MacOS 下经过测试和工作,并且总是在不定义 SIKULI_PY4J 环境变量的情况下启用。但是,使用环境变量 SIKULI_PY4J=0 可以强制 JPype 用于实验目的。
-
Linux
- 支持,使用 Ubuntu 20.04 和 Leafpad 应用程序测试。使用 JPype 和 Py4J 测试。
- 由于openApp() stucks on Linux after 2.0.5 upgrade · Issue #438 · RaiMan/SikuliX1 · GitHub,openApp 目前无法与 SikuliX 2.0.5 一起使用,因此它在 Ubuntu 的测试 .py 和 .robot 代码中被禁用。这意味着您必须开始测试并手动打开 Leafpad 应用程序才能使测试成功。
- 测试:python3.8、default-jre (openjdk-11-jre)、libopencv4.2-java,如 SikuliX 支持页面、gnome-panel 中所述,
pip install robotframework-sikulixlibrary
- 用例如
python -m robot --outputdir results/ubuntu test_defaultlibrary_ubuntu.robot
或开始测试python testlibrary_ubuntu.py
已知的问题
-
使用 Py4J 时,libdoc 不会在 IDE 中生成库文档,例如 RED - Robot Editor 或带有 RED 的 Eclipse,也可能不会在带有 Robocorp 插件的 Visual Studio Code 中生成。解决方法是手动启动 SikuliX Py4J 服务器(见上文),然后重新加载库以生成关键字文档。
-
在 IDE 中生成库文档时,该库在没有参数的情况下进行实例化,它将在 SIKULI_HOME 环境变量定义的目录中查找 sikulix.jar 文件,因此即使该文件与例如 sikulixide-2.0.5 重复,也要确保该文件存在。罐。否则,也可以使用以下命令手动生成 libspec,并将其复制到项目文件夹或 PYTHONPATH 下:
python -m robot.libdoc SikuliXLibrary::sikuli_path=path\to\sikulixide-2.0.5.jar SikuliXLibrary.libspec
请参阅此文档以供参考: https ://github.com/robocorp/robotframework-lsp/blob/master/robotframework-ls/docs/faq.md