一、robotframework的安装和启动

安装一下本人写的第三方模块,会自动安装robotframework和图形界面

git clone https://github.com/otfsenter/rpa.git

进入rpa文件夹

cd rpa

安装第三方模块rpa

python3 setup.py install

里面有2个功能,

1. 获取百度热点

2. 打印txt文本里面的数据

其他功能可以自己写脚本之后随意添加,后续会讲

怎么打开

windows电脑安装完成之后,会在桌面上生成一个RIDE(Robot IDE),直接双击打开。

mac电脑,安装完成之后,我用的是python3版本ride是一个python脚本,路径在

/Library/Frameworks/Python.framework/Versions/3.6/bin

然后python3 ride.py运行即可

robotframework ride图形界面的使用

创建项目

File -> New Project

format一定要选robot,python3用的pybot,只能识别robot格式的文件

f7dd967a3456eac6277d79bfe484732d.png

选中文件夹

8d398b187bac5967044694c19f97b008.png

创建新的测试套件

New Suite

458f70afa8ab3c1608f1097fb438fa05.png

1fa1da5c27af5c5f923e2ac5f5f1f83d.png

创建一个测试实例

Create Test Case

1c39597d16ff87b67adf17f555849c48.png

6932cd188cac539a7f5a11b0c5ed96ce.png

导入自定义的插件

点击Test Suite,再点击Library

b185af55035dd59901735cecfc42277e.png

e8e6b8e08996a43945430abcfccc4502.png

72b1d30f22839d7569b8c03a9e6f4775.png

F5进入搜索关键字的界面

cfeda2e49e2906bf8eab0730ae810313.png

这里就显示出了我们自定义的函数

选取Get Hot Spots From Baidu这个函数,获取百度的热点

e7b7001fe5168eba2ec011132066f7d3.png

像上面这样直接使用函数的描述名称,然后赋值给 ${a},

用ride自带的日志打印函数log,打印热点包含的信息

1b82cf9d6d62fc3d36feb908df60f917.png

勾选baidu这个测试用例,然后执行

d1e8503158925b11781563063fd11c04.png

打印出实时的百度热点

三、实现原理

至于为什么robotframework能自动识别我们自定义的函数,

自定义的函数放在rpa源码里面的keywords目录下

ffc19c468f46ad5c3b643e291ca98a38.png

crawler里面就一个类CrawlerKeywords,只有get_hot_from_baidu这个函数,描述是Get Hot Spots From Baidu

d7f35f781145056494b785b5c7415b08.png

file里面就一个类FileKeywords,只有一个read_file函数,读取文本文件的每一行数据,并输出一个列表。

bcf8fdf5ab4b1b2c6b97b16f1736b089.png

我们可以随意添加自定义的功能函数到CrawlerKeywords或者FileKeywords下面

重新删除Library里面的rpa,再添加一遍,ride就能自动识别出添加的函数

至于是怎么起作用的

33d7484dd1209f857999a923f6a08853.png

我们把包含那些功能函数的类,在整个模块最上层的__init__.py函数里面初始化

使用DynamicCore.__init__(self,libraries)这个初始化,

2803b64ae31bb7cbc1141416a134a04b.png

DynamicCore继承自HybridCore

看一下HybridCore里面做了什么初始化

a423de06520296328b09c8a41469e1f2.png

核心的就是add_library_components这个方法

下面的component是每个类的具体实例

然后遍历每个类里面的函数名字和函数本身

判断函数是否callable,是否满足robotframework的规范,是否有robot_name这个属性

这样得到的字典就是:键为函数名,值为函数对象

32cbe3dcb20586646100e8db1f4ac41e.png

然后依次运行每个方法,得到我们想要的功能

再遍历每个类里面的方法,抓取每个方法的描述,描述和函数是绑定的。

62b6d3723d85a66d48c143dbd9b0e804.png

这样在ride这个图形化界面里面,按下F5,就能直接用这个描述调用这个功能

cfeda2e49e2906bf8eab0730ae810313.png

四、总结

使用好robotframework,我们可以把每个功能单独成一个函数,

然后通过组合各种各样的功能函数,实现我们的业务流程,

如果下次不同的业务里面,有用到相同的功能,就能随意组合。

写好的执行流程也是一个文本文件,方便版本管理,

随着后续不断的完善,就能完成一个自动化的业务框架。

Logo

一站式 AI 云服务平台

更多推荐