该方法是用python自己扩建库,在扩建库的时候用python引用自有jar包中的方法
纯Java实现robot远程库扩展
创建本地库或远程库看这里
下面正式开始
一、安装JPype
JPype是一个能够让 python 代码方便地调用 Java 代码的工具
下载地址:https://pypi.org/project/JPype1/(现在最新版本0.6.3)
pip安装:pip install JPype1
安装JPype之前需要先安装VCForPython27
二、创建jar包
我得jar包是放在项目文件加下面的/javalibs/文件夹下的,你自己可以随意,引用时注意位置就行
//自己写jar包,我的jar包内容如下
package test.authentication;
public class Execute02 {
//这里的方法名不能修饰为静态的,否则在python中调用时报错
public String start(String timekey1,String cname1,String vcode1) {
return timekey1+cname1+vcode1
}
}
三、创建python库,在python库函数中引用jar包
#coding=utf-8
from jpype import *
import os.path
class liveauth(object):
def __init__(self):
pass
def getliveparam(self,timekey='',cname='',vcode=''):
#这里传参,参数三个timekey,cname,vcode
#这里传参可以先写默认值,我这里的默认值都是''空,有默认值时robotframework调用时可以不传参
#也可以不要默认值,不哟啊默认值在调用时必须传参,不然会报错,
#不要默认值上面该这样写:getliveparam(self,timekey,cname,vcode)
"""
传入三个值timekey、cname、liveurl并返回加密值base64param
查看注释
Example:
| ${result} | getliveparam | timekey | cname | vcode |
"""
#获取jar包地址,os.path.abspath('.')返回当前工作地址,也就是robotframework项目文件夹
home = os.path.abspath('.')
jarpath = os.path.join(os.path.abspath('.'), home+'/javalibs/Execute02.jar')
#上面那句也可以如下写成绝对地址,写成绝对地址时可以将jar包放在任意位置,但jar位置变了这里就得改
#jarpath = os.path.join(os.path.abspath('.'), 'D:/test/javalibs/Execute02.jar')
#启动java虚拟机
if not isJVMStarted():#如果jvm没启动才执行启动操作
startJVM(getDefaultJVMPath(), "-ea", "-Djava.class.path=%s" % jarpath)
#获取类,这里是包名和类名,报名从第一层开始写
Execut = JClass('test.authentication.Execute02')
# 或者通过JPackage引用Test类
# com = JPackage('test.authentication').Execute02()
#调用相关方法函数
t = Execut()
res = t.start(timekey,cname,vcode)
#返回从java方法中获取的值
return res
#用完后记得关闭java虚拟机,当然python程序退出时JVM也会自动关闭
shutdownJVM()