RobotFrameWork引用java库(jar文件)

该方法是用python自己扩建库,在扩建库的时候用python引用jar包

创建本地库或远程库看这里
下面正式开始
一、安装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()

猜你喜欢

转载自blog.csdn.net/panda62/article/details/81233409