机器人框架与Selenium和Java关键字

时间:2014-08-27 07:23:42

标签: java selenium keyword robotframework

我是Robot Framework的新手,致力于使用带有Selenium和java关键字的Robot Framework。我知道RF是基于python的,但是,项目需要使用java关键字。

我的想法是创建java函数和文本文件,然后使用:
java -jar robotframework-2.8.x.jar <..>.txt

例如,java函数是使用selenium webdriver打开浏览器,问题是我不知道如何将java函数与文本文件结合起来。我试过但错误是“找不到关键字”。如果我的java函数被称为openBrower,我该如何在文本文件中定义关键字?

任何人都可以通过selenium和java关键字向我提供一个非常简单的RF示例吗?非常感谢!

3 个答案:

答案 0 :(得分:2)

尝试使用带有Robot Framework like this:

的Run函数运行Java类

CommonResource.robot

# This file is located in "robot" folder

*** Settings ***
Documentation   CommonResource file with KWs
Library         OperatingSystem

*** Variables ***
${SRC_PATH}    ../../src/

*** Keywords ***

Compile Class
    [Arguments]  ${class_name}  ${path}=${SRC_PATH}
    Run    javac ${path}${class_name}.java

Run Java Class
    [Arguments]  ${class_name}  ${path}=${SRC_PATH}
    Compile Class  ${path}  ${class_name}
    ${output}=   Run    java -cp ${path} ${class_name}
    Log     ${output}   WARN

Test.java

/**
 * This file is located in "src" folder
 */
public class Test {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

TestCase.robot

# This file is located in "robot/Tests" folder
*** Settings ***
Documentation  Running Java class with RF
Resource       ../CommonResource.robot

*** Testcases ***

TestOne
    Run Java Class  Test

答案 1 :(得分:0)

我没有将RF与Selenium一起使用,但我正在使用它来测试基于HTTP的API,所以希望您可以使用此示例并将其应用于您的情况。

这有几个部分。首先,您需要构建Java类,并将其包含在类路径中,然后在脚本中使用它。我有一个陷阱,因为出于某种原因,RF不喜欢读取Java代码,除非它在JAR文件中。我不确定为什么,也许这是一个Jython问题。我使用了一个包装器Gradle脚本来处理我的Java库的依赖/构建(因为我也有一些编译时deps),它会生成一个非常基本的shell脚本来运行测试。

<强>的src /主/ JAVA / COM / mypackage的/ Foo.java

package com.mypackage;

public class Foo {
  public void methodNameIsKeyword() {
    // ...
  }
}

<强>的build.gradle

apply plugin: "java"

repositories {
  mavenCentral()
}

dependencies {
  runtime "org.robotframework:robotframework:2.8.5"
}

task writeScript() {
  def classpath = sourceSets.main.runtimeClasspath + files("build/libs/mylibrary.jar")
  println "java -cp ${classpath.asPath} org.robotframework.RobotFramework \$@"
}

task wrapper(type: Wrapper) {
  gradleVersion = "1.10"
}

下一步是在脚本中使用新关键字

*** Settings ***

Library    com.mypackage.Foo # constructor args go here.

*** Testcases ***

It should use the Java class
    Method Name Is Keyword 

当然,你的类可以使用Constructor args,并从你的方法中获取参数/返回值。

答案 2 :(得分:0)

即使我有类似的情况,我不得不使用Java与Robotframework。通过使用Robot Selenium2library for Java,可以实现关键字的链接。

您还可以创建自定义关键字,然后将它们链接到Java类以实现各自的实现。

尝试查看下面的项目

https://github.com/mskumar1809/StraitTimesAppiumRobot

为Robot关键字提供java实现。