首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Robotframework的MonkeyRunner

使用Robotframework的MonkeyRunner
EN

Stack Overflow用户
提问于 2012-10-02 23:48:18
回答 2查看 2.7K关注 0票数 3

我计划使用monkeyrunner脚本来做自动化测试用例,并且我想使用robotframework(我对robotium不感兴趣)。我在http://blog.mykhailo.com/2011/02/how-to-sikuli-and-robot-framework.html上看到了一个用robotframework自动化sikuli脚本的很好的教程

有没有办法做类似的事情,使用robotframework和monkeyrunner?

这是我的monkeyrunner示例脚本,当使用monkeyrunner调用时,它可以正确执行。

代码语言:javascript
复制
from __future__ import with_statement
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice

def testCase() :
    device = MonkeyRunner.waitForConnection()
    result2 = device.takeSnapshot()
    # Writes the screenshot to a file
    result2.writeToFile("scr.png","png")

def my_keyword():
    print 'Hello, world!'

if __name__ == '__main__':
    testCase()

我想用roboframework调用同样的方法。我正在尝试下面的方法。我不确定下面的调用是否正确,我只是简单地复制了sikuli自动化示例并对其进行了修改。

代码语言:javascript
复制
monkey_jar=/home/user/android-sdks/tools/lib/monkeyrunner.jar
guava_jar=/home/user/android-sdks/tools/lib/guavalib.jar
java -cp "robotframework-2.7.4.jar:$monkey_jar:$guava_jar" -Dpython.path="/home/user/android-sdks/tools/lib/" \
org.robotframework.RobotFramework --pythonpath=./  --outputdir=results --loglevel=TRACE $1

当我这样做的时候,我得到了下面的错误。

代码语言:javascript
复制
 Importing test library 'MyLibrary' failed: NoClassDefFoundError: Could not initialize class com.android.monkeyrunner.MonkeyDevice
java.lang.NoClassDefFoundError: 
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:247)
    at MyLibrary$py.f$0(/home/user/automation/DemoScripts/MyLibrary.py:9)
    at MyLibrary$py.call_function(/home/user/automation/DemoScripts/MyLibrary.py)
    at robot.utils.importer$py._import$13(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/utils/importer.py:154)
    at robot.utils.importer$py.call_function(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/utils/importer.py)
    at robot.utils.importer$py.import_$28(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/utils/importer.py:241)
    at robot.utils.importer$py.call_function(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/utils/importer.py)
    at robot.utils.importer$py._import_class_or_module$4(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/utils/importer.py:67)
    at robot.utils.importer$py.call_function(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/utils/importer.py)
    at robot.utils.importer$py.import_class_or_module$3(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/utils/importer.py:64)
    at robot.utils.importer$py.call_function(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/utils/importer.py)
    at robot.run$py.main$3(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/run.py:367)
    at robot.run$py.call_function(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/run.py)
    at robot.utils.application$py._execute$10(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/utils/application.py:87)
    at robot.utils.application$py.call_function(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/utils/application.py)
    at robot.utils.application$py.execute_cli$5(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/utils/application.py:45)
    at robot.utils.application$py.call_function(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/utils/application.py)
    at robot.run$py.run_cli$6(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/run.py:396)
    at robot.run$py.call_function(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/run.py)
    at robot.jarrunner$py._run$3(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/jarrunner.py:60)
    at robot.jarrunner$py.call_function(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/jarrunner.py)
    at robot.jarrunner$py.run$2(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/jarrunner.py:53)
    at robot.jarrunner$py.call_function(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/jarrunner.py)
    at org.robotframework.RobotFramework.run(RobotFramework.java:62)
    at org.robotframework.RobotFramework.main(RobotFramework.java:37)
PYTHONPATH:
  /home/user/automation/DemoScripts
  /home/user/automation/DemoScripts/robotframework-2.7.4.jar/Lib/robot/libraries
  /home/user/automation/DemoScripts/robotframework-2.7.4.jar/Lib
  /home/user/android-sdks/tools/lib/
  /home/user/automation/DemoScripts/Lib
  __classpath__
  __pyclasspath__/
  .
  /home/user/automation/DemoScripts
CLASSPATH:
  robotframework-2.7.4.jar
  /home/user/android-sdks/tools/lib/monkeyrunner.jar
  /home/user/android-sdks/tools/lib/guavalib.jar
==============================================================================

我相信执行monkeyrunner测试用例和机器人框架是很有可能的。

有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-10 05:13:51

嗯,经过几天的尝试,我发现在Robotframework中使用MonkeyRunner脚本是可能的。

简而言之,你可以使用下面的代码来启动robotframework和monkeyrunner。

代码语言:javascript
复制
export cpath=$(echo libs/*.jar | tr ' ' ':')
java   -Dpython.path=$cpath -jar robotframework-2.7.4.jar robo-tests.txt

但唯一的问题是,没有调用monkeyrunner的main,因此没有初始化ChimpChat对象,这会导致空指针异常。我在MonkeyRunner.java中修复了这个问题,并创建了一个新的monkeyrunner.jar。这样,我就可以从roboframework运行monkeyrunner脚本了。我将尝试创建一个逐步教程,并张贴它。

票数 2
EN

Stack Overflow用户

发布于 2012-11-01 15:51:10

@jollychang这样做

将此文件添加到文件MonkeyRunner.java

代码语言:javascript
复制
   if(chimpchat == null) {
        Map<String, String> chimp_options = new TreeMap<String, String>();
        chimp_options.put("backend", "adb");
        chimpchat = ChimpChat.getInstance(chimp_options);
        MonkeyRunner.setChimpChat(chimpchat);
    }

之前:

代码语言:javascript
复制
    JythonUtils.convertDocAnnotationsForClass(MonkeyRunner.class, dict);

然后制作一个新的monkeyrunner.jar;

还需要一些像这样的jar:

使用新的monkeyrunner.jar而不是旧的。

最后:使用以下命令运行robot:

在我的电脑中使用以下命令:

java -cp /Users/komejun/Documents/devtool/android/android-sdk-mac_x86/tools/lib/chimpchat.jar:/Users/komejun/Documents/devtool/android/android-sdk-mac_x86/tools/lib/ddmlib.jar:/Users/komejun/Documents/devtool/android/android-sdk-mac_x86/tools/lib/guavalib.jar:/Users/komejun/Documents/devtool/android/android-sdk-mac_x86/tools/lib/monkeyrunner.jar:/Users/komejun/Documents/devtool/android/android-sdk-mac_x86/tools/lib/sdklib.jar:/Users/komejun/Downloads/robotframework-2.7.5.jar -Dcom.android.monkeyrunner.bindir="/Users/komejun/Documents/devtool/android/android-sdk-mac_x86/tools“-Djava.library.path="/Users/komejun/Documents/devtool/android/android-sdk-mac_x86/tools/lib”org.robotframework.RobotFramework a.txt

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12693744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档