我无法理解如何在Robot Framework中导入.jar文件。
以下是代码:
*** Settings ***
Library MyLibrary
*** Test Cases ***
My Test
Do Nothing
Hello world
和Java:
public class MyLibrary {
public void hello(String name) {
System.out.println("Hello, " + name + "!");
}
public void doNothing() {
}
}
在.jar中提取后,我输入了C:\ Python27 \ Lib \ site-packages \ MyLibrary,我创建了空__init__.py
文件。用pybot TestJavaLibrary.robot
执行我的Robot文件后,我得到了这个警告:
[ WARN ] Imported library 'MyLibrary' contains no keywords.
==============================================================================
TestJavaLibrary
==============================================================================
My Test | FAIL |
No keyword with name 'Do Nothing' found.
如何使用这个jar,就像外部库一样?
答案 0 :(得分:2)
jybot --pythonpath <the_path_to_your_java_classes> your_tests
//e.g.
jybot --pythonpath c:/test-project/target/classes your_tests
答案 1 :(得分:1)
我也参与过同样的项目,需要通过机器人框架调用Java类。以下是导入Java库的简短示例:
档案:myJavaLibrary.java
public class myJavaLibrary{
public void my_java_add(int i, int j, int k) {
if(i+j == k)
return;
System.out.println("Invalid Sum");
assert false;
}
}
使用命令:javac myJavaLibrary.java
这将在同一目录中创建一个.class文件:myJavaLibrary.class
在机器人文件中导入:
文件:test.robot.txt
*** Settings ***
Library myJavaLibrary.java
*** Test Cases ***
User defined Java Test
My Java Add 5 7 12
您可能会注意到myvavaLibrary.java库已添加到设置部分,因为机器人文件与.class文件位于同一目录中。您可以添加相同的绝对路径。
您可能需要安装jython才能运行机器人文件。
最后使用命令:
jython -m robot test.robot.txt。
最终输出可以在运行文件夹
中的 log.html 文件中看到对于JAR导入:
在环境变量中包含.jar文件的绝对路径:
变量名称:CLASSPATH
变量值:&#34;包含Jar&#34; \ *;的目录的绝对路径
在这种情况下,该过程与运行机器人文件相同,并且不需要包含任何库。
希望这有效。
参考:http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html
答案 2 :(得分:0)
你必须使用jython(jybot)。还有其他设置,如JYTHONPATH。
答案 3 :(得分:0)
我知道了!
============= env ================
********** Sys Window 10
首先,您需要安装jdk,jython,robot框架
(PS:jython不需要python2.7或其他python sdk。)
**********对于整体
jdk我使用一个拉链。
jython我使用安装程序jar 2.7.2b3,双击并使用安装所有模型。
机器人,我使用master下载master代码zip,然后使用“ jython setup.py install”
我没有在Windows系统ENV“ PATH”中添加“ CLASSPATH”,稍后再说原因。
我刚刚将D:\ Tools \ jython2.7 \ bin添加到Windows System ENV“ PATH”中。
D:\Tools\jython2.7\bin 的目录
2020/03/01 01:29 <DIR> .
2020/03/01 01:29 <DIR> ..
2020/03/01 01:29 417 chardetect-script.py
2020/03/01 01:29 74,752 chardetect.exe
2020/03/01 01:27 102,772 easy_install-2.7.exe
2020/03/01 01:27 102,772 easy_install.exe
2020/02/02 11:30 3,979,302 jython.exe
2020/02/02 11:30 282 jython_regrtest.bat
2020/03/01 01:28 102,754 pip.exe
2020/03/01 01:28 102,754 pip2.7.exe
2020/03/01 01:28 102,754 pip2.exe
2020/03/01 01:29 428 rebot-script.py
2020/03/01 01:29 74,752 rebot.exe
2020/03/01 01:29 428 robot-script.py
2020/03/01 01:29 74,752 robot.exe
我们可以找到robot.exe,找不到jbot,因为它已经在Robot Framework 3.2b2上与机器人结合了,您可以从Robot Framework Github中进行检查以获取更多信息。
好的,我们的环境完成了。
检查!
********** SDK
C:\Users\65787>jython --version
Jython 2.7.2b3
C:\Users\65787>java -version
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)
C:\Users\65787>robot --version
Robot Framework 3.2b2 (Jython 2.7.2b3 on java1.8.0_231)
********** IDE:日食+红色编辑器
1。从elipce markplace下载红色编辑器并安装它。
2。在eclipce性能中配置robotframework-> robotframework ---> installe framework-> dicover(如果不起作用,可以在D:\ Tools \ jython2.7 \ bin中手动设置路径)
让我们解决您的问题。
===========准备一个Java jar =====================
0。为机器人框架准备一个jar或class / java文件!
这部分我用一个罐子。
1.new一个Maven项目-> robot-utils4j
2.new HelloWorld类
package org.mfm.robot.utils4j;
public class HelloWorld {
public void hello(String name) {
System.out.println("Hello, " + name + "!");
}
public void doNothing() {
}
}
2.pom.xml
<groupId>org.mfm</groupId>
<artifactId>robot-utils4j</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>assembly</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
3。运行mvn clean程序包
4。得到一个罐子 目标目录中的robot-utils4j-1.0.0-jar-with-dependencies。
=============用Java jar运行机器人================
1。新建一个机器人项目
2.import库位于red.xml
在“ Refrenceed Library”视图中添加新库。
单击robot-utils4j-1.0.0-jar-with-dependencies库。
搜索org.mfm.robot.utils4j.HelloWorld
并单击
最后,结果将如下所示:
最好右键单击它标记为静态库。
3.new一个JavaHello.robot测试套件
JavaHello.robot
*** Settings ***
Library org.mfm.robot.utils4j.HelloWorld
*** Test Cases ***
My Test
Do Nothing
Hello world
4。运行它,您将得到以下结果:
Command: jython.exe -J-Dpython.path=D:\Tools\jython2.7\Lib\site-packages -J-cp .;D:\AllWorkspace\lib\robot-utils4j-1.0.0-jar-with-dependencies.jar;D:\AllWorkspace\lib\/*.jar -m robot.run --listener C:\Users\65787\AppData\Local\Temp\RobotTempDir8138272493583159262\TestRunnerAgent.py:14246 --argumentfile C:\Users\65787\AppData\Local\Temp\RobotTempDir8138272493583159262\args_2df9cc70.arg D:\AllWorkspace\EWorkspace4Java\RobotDemo
Suite Executor: Robot Framework 3.2b2 (Jython 2.7.2b3 on java1.8.0_231)
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
==============================================================================
RobotDemo
==============================================================================
RobotDemo.JavaHello
==============================================================================
My Test | PASS |
------------------------------------------------------------------------------
RobotDemo.JavaHello | PASS |
1 critical test, 1 passed, 0 failed
1 test total, 1 passed, 0 failed
==============================================================================
RobotDemo | PASS |
1 critical test, 1 passed, 0 failed
1 test total, 1 passed, 0 failed
==============================================================================
Output: D:\AllWorkspace\EWorkspace4Java\RobotDemo\output.xml
Log: D:\AllWorkspace\EWorkspace4Java\RobotDemo\log.html
Report: D:\AllWorkspace\EWorkspace4Java\RobotDemo\report.html
此外,我使用redisson连接robot-utils4j-1.0.0-jar-with-dependencies中的redis集群。
1.code
robot-utils4j的代码:
package org.mfm.robot.utils4j;
import org.redisson.Redisson;
import org.redisson.api.RBucket;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
public class RedisClient {
private static RedissonClient instance = null;
/**
* 获取连接redis的Session
* @param clusterNodes "redis://127.0.0.1:7000", "redis://127.0.0.1:7001"
* @param password abc123
* @return
*/
public RedissonClient getRedissonClient(String clusterNodes,String password) {
Config config = new Config();
config.useClusterServers()
.setScanInterval(2000)
.setPassword(password)
.addNodeAddress(clusterNodes.split(","));
if(instance == null) {
instance = Redisson.create(config);
}
return instance;
}
public static void main(String[] args) {
RedisClient redisClient = new RedisClient();
RedissonClient redissonClient = redisClient.getRedissonClient("redis://172.16.2.132:7001, redis://172.16.2.133:7002,redis://172.16.2.134:7003", "keplerredis");
System.out.println(redissonClient+"连接成功。。。。");
}
public String getKey(String key) {
RBucket<String> rvalue = instance.getBucket(key);
System.out.println("获取key"+key+"的值"+rvalue.get());
return rvalue.get();
}
public void setKeyValue(String key,String value) {
RBucket<String> rvalue = instance.getBucket(key);
System.out.println("获取key"+key+"的值"+rvalue.get());
rvalue.set(value);
}
}
2.import库位于red.xml
在“ Refrenceed Library”视图中添加新库。
单击robot-utils4j-1.0.0-jar-with-dependencies库。
搜索org.mfm.robot.utils4j.RedisClient
最好右键单击它标记为静态库。
3。创建机器人TestSutie
*** Settings ***
Library org.mfm.robot.utils4j.RedisClient
*** Test Cases ***
My Test
${connectResult}= Get Redisson Client redis://172.16.2.132:7001, redis://172.16.2.133:7002,redis://172.16.2.134:7003 keplerredis
Log To Console ${connectResult}
运行
================================================ ===============================
RobotDemo :: python.path
========================================= ===========================
RobotDemo.RobotDemo
========================================= ===========================
RobotDemo.RobotDemo.RedisDemoJava
========================================= ===========================
我的测试org.redisson.Redisson@10bdfbcc
|通过|
-------------------------------------------------- ----------------------------
RobotDemo.RobotDemo.RedisDemoJava |通过|
1个关键测试,1个通过,0个失败
总共1个测试,1个通过,0个失败
========================================= ===========================
RobotDemo.RobotDemo |通过|
1个关键测试,1个通过,0个失败
总共1个测试,1个通过,0个失败
========================================= ===========================
RobotDemo :: python.path |通过|
1个关键测试,1个通过,0个失败
总共1个测试,1个通过,0个失败
================================================== =========================
答案 4 :(得分:0)
*************关于
图书馆A
库A.java
图书馆A.class
public class A{
public void hello(String name) {
System.out.println("Hello, " + name + "!");
}
public void doNothing() {
}
}
*** Settings ***
Library A
#or Libary A.java this way is also ok
#or Libary A.class this way is also ok
#Both of these need javac A.java ,you need hava a A.class
*** Test Cases ***
My Test
Do Nothing
Hello world
*************关于使用Java或类文件运行的机器人commont和jython
在同一目录中,您需要编译A.java
javac A.java
A.java
A.class
JavaHello.robot
运行命令
robot --pythonpath=. JavaHello.robot
#or
jython -Dpython.path=. -m robot.run JavaHello.robot
#or
jython -J-cp . -m robot.run JavaHello.robot
*************关于机器人公地和jython用广口瓶运行
jar-cvf my.jar A.class
获取my.jar
您可以运行它使用此通用命令,请注意
cd D:\AllWorkspace\EWorkspace4Java\RobotDemo\
D:
jython -J-cp D:\AllWorkspace\lib\my.jar -m robot.run JavaHello.robot
jython -Dpython.path=D:\AllWorkspace\lib\my.jar -m robot.run JavaHello.robot
jython -Dpython.path=D:\AllWorkspace\lib\/*.jar -m robot.run JavaHello.robot
或
robot --pythonpath=D:\AllWorkspace\lib\my.jar JavaHello.robot
robot --pythonpath=D:\AllWorkspace\lib\/*.jar JavaHello.robot
如果您在窗口环境“ PATH”中配置CLASSPATH = D:\ AllWorkspace \ lib \ my.jar
robot JavaHello.robot
jython -m robot.run JavaHello.robot
关于JYTHONPATH PYTHONPAHT CLASSPATH
您可以从机器人框架github文档中获取更多信息和差异。