将用户定义的 java 库指定到 RED 机器人框架 eclipse 编辑器时出错
Posted
技术标签:
【中文标题】将用户定义的 java 库指定到 RED 机器人框架 eclipse 编辑器时出错【英文标题】:It errors when specifying the user defined java library into RED robot framework eclipse editor 【发布时间】:2017-07-12 02:36:40 【问题描述】:我的要求是使用 RED eclipse 编辑器在机器人框架中使用用户定义的 java 库。尝试在机器人框架中指定库时,系统错误为没有可用的库(在库名称中显示为红色下划线)。请纠正我所做的错误。我已按照以下步骤操作,
-
使用 RED 编辑器更新了 Eclipse(Eclipse Neon (v 4.6),RED - Robot Editor v0.7.5)
在同一个 Eclipse 中创建了一个类文件,就像 Project 一样。 (包名:org.robot.KCCKeywords 类名:LogonToKCC)
将类文件转换为“.JAR”类型并将其存储在 jython 文件夹中(C:\jython2.7.0\Lib\site-packages\KCCLibraries)
使用launch4j-3.8-win32将RED与Maven插件集成(使用https://github.com/nokia/RED/blob/9d62dccce18ee7f3051162d05bf3d027e33dccef/red_help/user_guide/maven.html.md)
将 RED 与机器人框架和 Jython 集成。 (使用https://github.com/nokia/RED/blob/9d62dccce18ee7f3051162d05bf3d027e33dccef/red_help/user_guide/maven.html.md)
为以下 jar 更新了 CLASS PATH,
a) jython.jar b) 机器人框架-3.0.2.jar c)myOwnJavaLibrary.jar(我在步骤 3 中创建的 jar) d) jdk 和 jre 路径
在 red.xml 中也验证了相同的类路径。创建RED项目并开始初始化关键字如下,
a) 库 Selenium2Library
b) 库 org.robot.KCCKeywords.LogonToKCC
这是系统无法读取我自己的图书馆的地方。 我还参考了下面的博客并相应地调整了我的步骤。但没有帮助我。引用多个博客和堆栈也让我感到困惑。我终于来了。
robot framework user java libraries error Test Library "mavenPackage.MyKeyWords.java" does not exist Robot Framework-RIDE,Import Java Libraries Stuck with creating Keyword library using Java in Eclipse and using that JAR file in RIDE Robot Framework - using User Libraries【问题讨论】:
【参考方案1】:使用以代码为中心的博客:Robot Framework Tutorial – Writing Keyword Libraries in Java 作为基础,其中包含一些针对 RED 而不是 RIDE 的特定步骤。本演练将允许您设置 Jython,在 Java 中创建一个简单的库并从机器人脚本运行它。
在 Eclipse 中安装 Eclipse (NEON) 和 RED Feature 后,在 Eclipse 中创建一个新的 Java 项目。完成后,继续创建一个具有以下内容的新 Java 类。
package org.robot.sample.keywords;
import java.util.Stack;
/**
* This is an example for a Keyword Library for the Robot Framework.
* @author thomas.jaspers
*/
public class SampleKeywordLibrary
/** This means the same instance of this class is used throughout
* the lifecycle of a Robot Framework test execution.
*/
public static final String ROBOT_LIBRARY_SCOPE = "GLOBAL";
//</editor-fold>
/** The Functionality to be tested */
private Stack<String> testStack;
/**
* Keyword-method to create an empty stack.
*/
public void createAnEmptyStack()
testStack = new Stack<String>();
/**
* Keyword-method to add an element to the stack.
* @param element The element
*/
public void addAnElement(String element)
testStack.push(element);
/**
* Keyword-method to remove the last element from the stack.
*/
public void removeLastElement()
testStack.pop();
/**
* Keyword-method to search for an element position.
* @param element The element
* @param pos The expected position
*/
public void elementShouldBeAtPosition(String element, int pos)
throws Exception
if (testStack.search(element) != pos)
throw new Exception("Wrong position: " + testStack.search(element));
/**
* Keyword-method to check the last element in the stack.
* @param result Expected resulting element
*/
public void theLastElementShouldBe(String result) throws Exception
String element = testStack.pop();
if (!result.equals(element))
throw new Exception("Wrong element: " + element);
请确保您已使用 Windows Installer 安装了 Jython。在我的示例中,Jython 安装在 c:\Jython 中。与常规的 Python 解释器机器人框架一样,仍然需要安装。假设您的机器可以访问互联网,在命令行中转到c:\Jython\bin\
并运行命令pip install robotframework
。这将在 Jython 环境中安装 Robot Framework。
现在在 Eclipse 中创建一个新的 Robot Framework 项目。请确保您拥有Window > Perspective > Open Perspective > Robot
或Other > Robot
。
在项目中,默认的机器人框架是基于 Python 的,我们需要配置 Jython 解释器。在 Eclipse 中转到Window > Preferences
,然后从树形菜单中选择Robot Framework > Installed Frameworks
。单击Add
并指向c:\Jython\bin\
。点击确定。
从机器人项目中打开 Red.XML 并转到 general
选项卡。这是项目解释器设置的地方。如果它设置为 Python(如下例所示),则单击 use local settings for this project
并检查 Jython 解释器。将设置保存到文件 (CTRL-S)。
通过 Robot Framework 项目设置,是时候将 Java 类导出到 Jar 文件了。右键单击类文件并单击export
。然后选择JAR file
并单击next
。单击Browse
并设置JAR 文件的位置和文件名。在这种情况下,我选择了ExampleLibrary.jar
和我的机器人项目的文件夹。按Finish
完成导出。
返回 Red.XML 并单击 Referenced Libraries
,然后继续单击 Add Java library
,选择导出的 Jar 文件 (ExampleLibrary.jar) 并按 OK。这将继续加载 jar 并从 Jar 文件中读取关键字。保存文件 (CTRL-S)。这应该导致以下参考。
现在是时候创建一个机器人文件并使用该库了。在引用的博客中,给出了使用 java 函数/关键字的以下示例脚本。
*** Settings ***
Library org.robot.sample.keywords.SampleKeywordLibrary
*** Test Cases ***
ExampleJava
Create An Empty Stack
Add An Element Java
Add An Element C++
Remove Last Element
The Last Element Should Be Java
对于已加载的库,不应出现红线,否则请右键单击该库并单击 quick-fix
并自动发现该库。
然后使用常规的 Eclipse/RED Run 菜单运行脚本。这将成功运行脚本并输出以下内容:
Command: C:\jython2.7.0\bin\jython.exe -J-Dpython.path=C:\jython2.7.0\Lib\site-packages -J-cp .;C:\Eclipse\Workspace\ExamplJava\ExampleLibrary.jar -m robot.run --listener C:\Users\User\AppData\Local\Temp\RobotTempDir8926065561484828569\TestRunnerAgent.py:57292:False -s ExamplJava.ExampleJava C:\Eclipse\Workspace\ExamplJava
Suite Executor: Robot Framework 3.0.2 (Jython 2.7.0 on java1.8.0_60)
==============================================================================
ExamplJava
==============================================================================
ExamplJava.ExampleJava
==============================================================================
ExampleJava | PASS |
------------------------------------------------------------------------------
ExamplJava.ExampleJava | PASS |
1 critical test, 1 passed, 0 failed
1 test total, 1 passed, 0 failed
==============================================================================
ExamplJava | PASS |
1 critical test, 1 passed, 0 failed
1 test total, 1 passed, 0 failed
==============================================================================
Output: C:\Eclipse\Workspace\ExamplJava\output.xml
Log: C:\Eclipse\Workspace\ExamplJava\log.html
Report: C:\Eclipse\Workspace\ExamplJava\report.html
【讨论】:
非常感谢 Kootstra!这行得通。我现在可以成功添加库而没有任何红线。我所做的错误是将 myOwnLibrary.jar 添加到类路径中,而不是将其放在“添加 Java 库”选项中。我销毁了所有设置,只是按照您的步骤进行操作,这使我成功集成。谢谢!但不幸的是我无法执行它。它的错误如下, Unknown option: J-Dpython.path=C:\jython2.7.0\Lib\site-packages 用法:jython [option] ... [-c cmd | -m 模组 |文件 | -] [arg] ... 尝试使用 `jython -h' 获取更多信息。 我也验证了错误中指定路径的环境变量。还有什么原因? 该示例适用于 Jython 安装。如果您按照这些步骤操作,那么您将能够运行您的 java 代码。但是,如果您使用 Launch4j 生成的 jython.exe,则会生成您收到的错误。这似乎是一个特定于 RED 的问题,因为它会生成Command: C:\Launch\jython.exe -J-cp .;C:\Eclipse\Jython\ExampleLibrary.jar ... Suite Executor: Robot Framework 3.0.2 (Jython 2.7.0 on java1.8.0_71) Unknown option: J-cp
我将提出一个关于 RED 的问题,因为 Launch4J 生成的 exe 文件不支持 -J-cp
参数。
我今天按照上面的设置进行 jython 集成,之前我与 lauch4j 集成,似乎这两个设置都中断了它。现在我已经完全清除了 lauch4j 并尝试按照上述方法继续。现在在 Eclipse 编辑器中,Selenium2Library 及其关键字无法识别。它用红线显示。通过从 python 文件夹复制 selenium2library 重新尝试,但这并没有帮助我。我现在应该怎么做才能让它被识别?
我终于实现了。这一切都是因为您的宝贵回应 A. Kootstra。非常感谢。我使用机器人框架卸载了与测试自动化相关的整个领域,并使用您的对话执行了步骤。有效。下面添加了我所做的一瞥。【参考方案2】:
我终于按照下面的方法进行了机器人框架的伟大旅程。
1 Installed Java, Eclipse, RED Eclipse plugin.
a) Java(JDK 1.8.0/JRE 1.8.0)
b) Eclipse Neon (v 4.6)
c) RED - Robot Eclipse Editor v0.7.5.2(Eclipse Plugin)
2 Downloaded and Installed Python 2.7.12 using windows. A folder created automatically after installation in C:\python27
3 "Installed Robot Framework using pip command in Command Prompt.
Command: C:\python27\scripts>pip install robotframework"
4 Downloaded and installed Jython 2.7.0 using windows. A folder created automatically after installation in C:\jython2.7.0
5 "Installed Robot Framework using pip command in Command Prompt.
Command: C:\jython2.7.0\bin>pip install robotframework"
6 "Installed Selenium2Library using pip command in Command Prompt.
Command: C:\jython2.7.0\bin>pip install robotframework-selenium2library"
7 "Set the below,
a) Goto Window-Preferences-Robot Framework-Installed Framework
b) Map Robot framework with Jython Interpreter
I used c:\jython2.7.0\bin"
8 Created JavaProject and export it into a jar file. Right click on the class name, click on export-Java-Jarfile. Select the path name where the new jar file to be put including the new file name.jar. Click Ok.
9 Open RED.xml Click Add Java Library and select the newly created jar file.
10 "Set up this before proceeding with robot framework
goto Windows - Perspective - Open Perspective-Other-Robot"
11 Create a robot suite, import library selenium2library & user defined library, Write Test cases.
【讨论】:
以上是关于将用户定义的 java 库指定到 RED 机器人框架 eclipse 编辑器时出错的主要内容,如果未能解决你的问题,请参考以下文章
java下载文件,怎么指定下载到指定的文件夹下啊,就是不弹出保存框,直接下载到指定的文件夹下,谢谢回答