我是Robot Framework的新手,致力于使用带有Selenium和java关键字的Robot Framework。我知道RF是基于python的,但是,项目需要使用java关键字。
我的想法是创建java函数和文本文件,然后使用:
java -jar robotframework-2.8.x.jar <..>.txt
openBrower
,我该如何在文本文件中定义关键字?
任何人都可以通过selenium和java关键字向我提供一个非常简单的RF示例吗?非常感谢!
答案 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实现。