【插件开发】使用 Python 扩展 UiBot 的功能

游客 2019-1-14 19580

前言:

UiBot 除了自带的强大功能外,还允许有编程经验的开发人员对功能进行自由扩展,目前 UiBot 支持以下四种扩展方式:

Python 插件、Lua 插件、Lua Mod 插件、COM 插件( .Net 也使用这种方式扩展)

本期教程将为大家讲解如何利用这四种扩展方式扩充 UiBot 的功能。


Python 插件开发教程:




1. 插件开发快速上手:


打开 UiBot 安装目录下的 extend \ python 目录,在这个目录下创建 test.py 文件(记得修改文件扩展名),使用记事本打开这个文件,写入如下代码:

def Add(n1, n2):
    return n1 + n2


然后将文件另存为 utf-8 编码格式:

_【插件开发】使用 Python 扩展 UiBot 的功能


插件保存后,打开 UiBot 在源代码视图写入代码:

Import test
traceprint test.add(1, 1)


运行 UiBot 脚本,运行后结果如下(输出2)代表插件调用正常:

_【插件开发】使用 Python 扩展 UiBot 的功能


如果运行结果不正常,可根据输出窗格的报错提示尝试解决,如果报错为 模块test没有加载成功,则检查 test.py 中的代码是否正确、文件名和路径是否正确(例如文件后缀问题)




2. 开发环境部署(VS Code):


使用 Python 编写 UiBot 扩展库很容易,但 Python 本身是一门独立的编程语言,使用文本编辑器开发和调试都很不方便,因此建议使用 VS Code 集成开发环境做 Python 扩展库开发。


首先需要在机器上安装 Python 3.7.1,下载地址:https://www.python.org/downloads/release/python-371/

下载时选择 Windows x86-64 executable installer 版本,下载完成后直接安装。

_【插件开发】使用 Python 扩展 UiBot 的功能


安装 Python 时需要勾选 Add Python 3.7 to PATH,然后点击 Install Now 安装即可:

_【插件开发】使用 Python 扩展 UiBot 的功能


然后在机器上安装 VS Code,下载地址:https://code.visualstudio.com/

_【插件开发】使用 Python 扩展 UiBot 的功能


VS Code 安装完成后,是英文版本:

_【插件开发】使用 Python 扩展 UiBot 的功能


点击 VS Code 左侧边栏上方最后一个按钮(见截图),然后在搜索框里输入 Chinese,找到简体中文语言包安装:

_【插件开发】使用 Python 扩展 UiBot 的功能


安装完成后,VS Code 会提示是否重启编辑器使语言包生效,重启后软件即可显示为中文:

_【插件开发】使用 Python 扩展 UiBot 的功能


如果这步完成后语言没有切换成功,可以按热键 Ctrl + Shift + P,搜索 Configure Display Language,配置显示语言:

_【插件开发】使用 Python 扩展 UiBot 的功能


将红圈选中的内容更改为 zh-cn,保存文件后重启 VS Code,即可更换为中文显示:

_【插件开发】使用 Python 扩展 UiBot 的功能


VS Code 和 Python 都安装完成后,使用 VS Code 打开任意 py 后缀的文件,会自动提示是否安装 Python 开发环境

_【插件开发】使用 Python 扩展 UiBot 的功能


Python 扩展安装完成后,VS Code 还会要求你安装 pylint,这是在 VS Code 开发时用于语法错误检查的组件,可以根据自己的需求选择是否安装。


以上步骤操作后,使用 VS Code 的 Python 开发环境就部署完毕了,编写代码,然后F5运行看看效果吧。




3. Python 插件测试:


在 Python 文件中写入如下代码,这段代码在 UiBot 环境下是不会运行的,但在 Python 调试状态下会运行,以此实现更便捷的 Python 扩展库调试:

# 测试代码
if __name__ == '__main__':
    print(123)

_【插件开发】使用 Python 扩展 UiBot 的功能




4. UiBot 调用方法:


插件的文件名即为插件名,例如我们编写的插件文件名为 test.py,则在 UiBot 中使用 Import test 即可载入插件。


对于 Python 插件来说,每个 def 的函数都可以使用 UiBot 调用。


目前 UiBot 还不支持 Python 插件中的一些特性,例如 可选参数、可变参数。




5. 插件使用的其他组件安装到 UiBot:


UiBot 内置的 Python 运行环境包含了绝大多数 Python 自带的扩展库和 pywin32 等使用频度较高的库,但仍不能保证全部覆盖,如果你在开发 Python 插件的过程中,使用了 UiBot 没有附带的库,则可能产生插件在 Python 环境下运行正常,在 UiBot 环境下运行不正常的问题,这时候就需要将对应的扩展库添加到 UiBot 安装目录下的 lib \ site-packages 文件夹中解决。




6. Python依赖的存放位置:

我们在编写Python扩展时经常会用到pip安装其他的第三方依赖模块,如果要在UiBot 中顺利使用自己编写的扩展,那么同样要把这些第三方模块置入到UiBot 中,下面我们拿Python中的"requests"模块举例。

首先通过pip show requests命令,我们可以看到如下信息:

_【插件开发】使用 Python 扩展 UiBot 的功能

其中 Location代表当前开发环境第三方库的安装位置,Requires代表requests模块的依赖,我们需要进到Location目录下,将对应模块(包含自身)拷贝到UiBot安装目录下的\lib\site-packages之中


Location对应目录

_【插件开发】使用 Python 扩展 UiBot 的功能

_【插件开发】使用 Python 扩展 UiBot 的功能


UiBot对应目录

_【插件开发】使用 Python 扩展 UiBot 的功能

如此,我们即可正常的在UiBot之中使用依赖

最新回复 (30)
  • 果子哩 2019-1-15
    2
    支持!
  • mawu 2019-1-18
    3
    可是我哦   英语太low   没法玩    唔唔唔!!!
  • Rick 2019-5-9
    4
    好铁,严重支持
  • cyb 2019-10-4
    5
    good!
  • Kim_163332 2019-11-4
    6
    学习了,懂了不少,感谢楼主
  • chen_132537 2019-11-4
    7

    想问下比如说我test.py里还import了其他第三方模块(没法完整放到uibot/extend文件夹下),报错“模块加载中发生错误:No module named 'PySimpleGUI'”之类的,但我不通过uibot却能正常运行模块,这个怎么解决?

  • queue 2019-11-10
    8


    记录一下这个 希望对别人有帮助

  • 离哈 2019-11-18
    9
    搞定
  • chen_132537 2019-11-18
    10
    有没有可能py文件和新建流程放在同一个目录下管理啊,每次都要移动到uibot固定路径下,不太方便管理啊
  • XP_151807 2019-12-2
    11
    UiBot不能装wxPython吗?
  • 左眼工作室 2020-2-27
    12
    大赞
  • Chu 2020-2-27
    13
    chen_132537 有没有可能py文件和新建流程放在同一个目录下管理啊,每次都要移动到uibot固定路径下,不太方便管理啊
    下个版本就这么做了
  • 垦荒牛 2020-3-1
    14


    导入模块失败,依赖tkinter库,已经移动到\lib\site-packages下。是什么原因呢?

  • suxiaoxia 2020-4-9
    15
    是否支持selenium呢,有些软件在关闭浏览器时会自动清理uibot装在浏览器里的插件,导致无法web自动化
  • qqcom_319236 2020-5-26
    16
    这里有个问题,py文件不能带有下划线,例如py_script.py,会报错“模块中没有找到函数 ”。需要改成pyscript,这个问题折腾了我一天。
  • 迪拜 2020-7-1
    17



    大佬 。 找到的文件夹名称是   egg 结尾的移动到 ub下面的\UiBot Creator Community\lib\site-packages ,还是报错哦

    阿里云存储的oss2  的第三方库

    帮忙解决一下, 感谢


  • 风华 2020-11-4
    18
    py还不熟练,
  • 莫问工作室 2020-11-4
    19
    ub支持插件 能有一个下着包的命令就好了。
  • 云中骏马 2020-11-6
    20
    感叹社区为啥没有收藏功能
  • mmoo 2020-12-18
    21
    Chu 下个版本就这么做了
    同一个python脚本,多个流程块调用,每个流程块都要import吗?
  • 噗噗星 2020-12-18
    22
    mark
  • 王旭_374755 2021-1-20
    23
    python的支持真的low,每次修改完python代码成功运行后,代码就锁死了,如何修改都是前一次正确运行的代码副本,新代码根本导入不了,还得重启uibot,才会导入新的代码,来回折腾2-5分钟我才能调试一次,费劲。
  • Chu 2021-1-20
    24
    王旭_374755 python的支持真的low,每次修改完python代码成功运行后,代码就锁死了,如何修改都是前一次正确运行的代码副本,新代码根本导入不了,还得重启uibot,才会导入新的代码,来回折腾2-5分钟我才 ...
    新版本已经解决这个问题了
  • 王玉枝 2021-5-9
    25
    Name: xlrd
    Version: 2.0.1
    Summary: Library for developers to extract data from Microsoft Excel (tm) .xls spreadsheet files
    Home-page: http://www.python-excel.org/
    Author: Chris Withers
    Author-email: chris@withers.org
    License: BSD
    Location: c:\users\13013\appdata\local\programs\python\python37\lib\site-packages
    Requires:
    Required-by:
    没有提示依赖  但是执行插件报错  什么原因 模块 main.store_to 调用出错:'NoneType' object has no attribute 'sheet_by_name'
  • 26
    王玉枝 Name: xlrd Version: 2.0.1 Summary: Library for developers to extract data from Microsoft Excel (tm ...
    说明是你自己调用出问题了
  • 朱磊 2021-7-6
    27
    为啥调用不报错,但是根本不执行py呢?
  • guowei067 2021-10-23
    28
    excel file not supported ,使用pandas读取excel read_excel
  • asdfasdf_652328 10月前
    29
    果子哩 支持!
    请问在哪里可以看到UIBOT 到底带什么库,然后如果要查这些库的版本要怎么查
  • +86 158******84 9月前
    30
    Chu 新版本已经解决这个问题了
    最新的 v6版本,还是一样呢,没解决,,每次修改Python代码后,得重启UiBot后才生效,烦人!!!
  • dw_371271 2月前
    31
    guowei067 excel file not supported ,使用pandas读取excel read_excel
    这个问题怎么解决的?我也遇上了~
    命令出错:Excel xlsx file; not supported
返回
发新帖