使用robotframework时,自带的库提供的关键字总有不满足的时候,这时候就可以用python写一些类库,供robotframework调用,这个python文件里实现的方法就叫做扩展关键字

如何作为导入python文件(python模块)

一种方法是放入到python的安装路径里,就像robotframework 的seleniumlibrary库一样,这种方法有个弊端,如果你没有对robotframework进行二次开发,整个安装环境依赖进行打包,则每次部署环境时,都需要重新把你写的库放一遍,现在介绍另一种方法,就和你的代码放一起

命名规则

python模块的文件名就是库名,如果你的python模块里是一个类,则类名要和文件名保持一致,不然你的扩展关键字,robotframework识别不了,就会报错无法使用 例如 我写了一个测试库,设置浏览器headless模式如何设置下载路径

文件名和类名保持一致

robot framework--扩展关键字_python模块

导入使用

在和这个python库同级目录下,我创建了一个robot资源文件,来引用这个python库

robot framework--扩展关键字_python模块_02

注:因为是同级目录,所以导入的时候没有带路径信息,如果没在同级目录,得把相对路径加上 如果robot语法不是很熟悉,则可以通过robot-ride图形化界面去配置

robot framework--扩展关键字_Python_03

点击那个library按钮,然后找到你的python文件导入保存即可

使用的时候,就像调用其他关键字一样,关键字名,参数, 写法要遵循robot语法 robot语法

robot framework--扩展关键字_python_04

这个方法的python源码

robot framework--扩展关键字_python模块_05

如果在pycharm里面,设置好robot的编辑环境,导入使用这些关键字,会给出提示,这样编码就非常友好

robot framework--扩展关键字_python_06

python库使用是否需要初始化的区别

以上例子,导入python库, 这个python init()方法不需要传参,所以直接导入使用即可 还有一种我们实现的python库,有时需要实例化之后才能使用,init()方法需要传参,这种在robot文件导入使用时,需要把实例化的参数也写进去

比如我写了一个操作文件库,需要先传一个文件进行实例化,才能调用其方法,在robot文件setting里我可以这样引入 library python库 参数列表

robot framework--扩展关键字_python_07

python源码

robot framework--扩展关键字_Python_08

总结

以上导入方法都是基于路径法导入,重点是只能导入和模块名相同的类名,这个也是我在开头说的