将用户定义的 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 &gt; Perspective &gt; Open Perspective &gt; RobotOther &gt; Robot

在项目中,默认的机器人框架是基于 Python 的,我们需要配置 Jython 解释器。在 Eclipse 中转到Window &gt; Preferences,然后从树形菜单中选择Robot Framework &gt; 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 编辑器时出错的主要内容,如果未能解决你的问题,请参考以下文章

RED 无法识别标准库(RobotFW 4.0)

oracle impdp全库导入时如何指定表空间位置

java下载文件,怎么指定下载到指定的文件夹下啊,就是不弹出保存框,直接下载到指定的文件夹下,谢谢回答

将 NFS 文件夹挂载到远程机器上(两台机器都在 Red Hat Linux 上)

用户定义函数将多个数据框导出到全局环境中

java中怎样提取文本框中的内容输出到文件?