1.代码含类名
代码含有类名类名必须和文件名一致mytestlibrary.py(同Java),注意此时方法参数多了self字段,实际只有a,b两个参数
class mytestlibrary():
def add(self,a,b):
return int(a)+int(b)
2.代码块没有类名
此时文件名没有特殊要求
def add(a,b):
return int(a)+int(b)
3.自己模块的引用
如果文件放在文件夹site-packages下面则可以直接通过文件名mytestlibrary引用,
如果放在别的目录,则通过绝对路径引用,例如D:/test/mytestlibrary.py
,注意斜线而不是反斜线
建议如下方式扩展,据说如果在自己写的模块中引用了其他库则需要用这种方式才行,而且这种方式也方便以后远程库
1:在python目录下lib\site-packages 建立库文件文件夹 MyLibrary
2:在MyLibrary 内建立 MyTestLibrary.py 文件
这个文件里面写自己的关键字(既方法)
注意各种缩进,python中缩进错误也会报错
#coding=utf-8
class MyTestLibrary(object):
def __init__(self):
pass
def add(self,a,b):
"""
传入两个值a、b并返回a、b相加的结果
查看注释
注意下面的竖线“|”与内容之间有空格,不然在robotframework中不会显示为表格样式
Example:
| ${result} | Add | 2 | 5 |
"""
return int(a)+int(b)
3:在MyLibrary 内建立 __init__.py
文件
如下文件内容模板,注意类名要与库文件夹名称一致
from MyTestLibrary import MyTestLibrary
#这是版本号,此句可以省略
version = '1.0'
class MyLibrary(MyTestLibrary):
ROBOT_LIBRARY_SCOPE = 'GLOBAL'#这一句代表库是全局的
如果有多个类MyTestLibrary
、MyTest2
需要引用,如下
from MyTestLibrary import MyTestLibrary
from MyTest2 import MyTest2
version = '1.0'
class MyLibrary(MyTestLibrary,MyTest2):
ROBOT_LIBRARY_SCOPE = 'GLOBAL'
4:RIDE中导入库,用文件夹名字导入就行
第三方库需要先安装,安装后直接用名字引用就行
1.开启远程库服务
(1).下载安装:robotremoteserver
robotremoteserver是一种远程库接口技术(remote library interface),扩展java需要用到;
pip安装:pip install robotremoteserver
下载安装:https://pypi.python.org/pypi/robotremoteserver/
我是用下载安装的:python setup.py install
据说只需要那个文件就行(robotremoteserver.py)
(2).在python目录下lib\site-packages 建立库文件文件夹MyRemoteLibrary(文件夹名字随意取)
(3).在MyRemoteLibrary内建立 MyTestLibrary.py 文件 并写入自己的扩展内容,格式跟本地库建立一样
(4).在MyRemoteLibrary中新建__init__.py
配置文件并写入配置内容
远程库的使用和上面使用__init__.py
配置文件配置本地库差不多,只是__init__.py
的内容有点差别,如下;
import sys
from robotremoteserver import RobotRemoteServer
from MyTestLibrary import MyTestLibrary
if __name__ == '__main__':
RobotRemoteServer(MyTestLibrary(),*sys.argv[1:])
(5).启动远程库
从cmd中进入__init__.py
所在的目录MyRemoteLibrary执行python __init__.py
命令出现下图便成功启动远程库,不过此时只能在本机访问
想要实现远程访问,将下载下来的robotremoteserver.py拷贝到刚刚建立的文件夹MyRemoteLibrary中,并修改如下部分内容
class RobotRemoteServer(object):
def __init__(self, library, host='192.168.29.142', port=8270, port_file=None,
allow_stop='DEPRECATED', serve=True, allow_remote_stop=True):
此处的ip是远端服务机的ip从过ipconfig查询,保存后再执行python __init__.py
即可
2.本地引用方式如下图,IP和端口是在服务端配置的,name是固定值
目前还是单个库的远程扩展,多个库文件的远程扩展还在研究中
注:如果不使用__init__.py
配置脚本文件则需要在每一个扩展文件中加上如下代码
#开头加
import sys
from robotremoteserver import RobotRemoteServer
##结尾加
##MyTestLibrary是扩展文件名
if __name__ == '__main__':
RobotRemoteServer(MyTestLibrary(),*sys.argv[1:])
并且得一个一个的启动扩展文库件,所以用配置文件__init__.py
批量启动更方便。
注意:如果同时想作为本地库和远程库,则将两个配置文件__init__.py
综合下就行,综合后配置文件如下:
import sys
from robotremoteserver import RobotRemoteServer
from MyTestLibrary import MyTestLibrary
from MyTest2 import MyTest2
class MyLibrary(MyTestLibrary,MyTest2):
ROBOT_LIBRARY_SCOPE = 'GLOBAL'
if __name__ == '__main__':
RobotRemoteServer(MyTestLibrary(),*sys.argv[1:])
3.扩展java:
需要用到jython,基于jvm的python
Jython下载地址:http://www.jython.org
在python库中引用jar包的方法
纯Java实现robot远程库扩展