Вопрос

Я планирую использовать сценарии Monkeyrunner, чтобы сделать автоматические тестовые случаи, и я хочу использовать RobotFramework (я не заинтересован в Robotium). Я видел отличное руководство для автоматизации сценариев Sikuli с RobotFrame http://blog.mykhailo.com/2011 /02/how-to-sikul-and-robot-framework.html

Есть ли способ сделать подобное, с роботфреймом и Monkeyrunner?

Вот мой образец скрипта Monkeyrunner, это выполняет правильно при вызове с Monkeyrunner.

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 и изменил его.

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
.

Когда я делаю это, я получаю следующую ошибку.

 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 наряду с Roboframework вполне возможно.

Любые входы?

Это было полезно?

Решение

Ну, после пробования в течение нескольких дней я обнаружил, что можно использовать сценарии Monkeyrunner с RobotFramework.

Короче говоря, вы можете использовать следующую запуск RobotFramework вместе с Monkeyrunner.

export cpath=$(echo libs/*.jar | tr ' ' ':')
java   -Dpython.path=$cpath -jar robotframework-2.7.4.jar robo-tests.txt
.

Но только проблема была, Главная проблема Monkeyrunner не была вызвана, поэтому не инициализация объекта ChimpChat, который приводит к исключению NULL указателя.Я зафиксировал это в Monkeyrunner.java, и создал новый monkeyrunner.jar.С этим я могу запустить скрипты Monkeyrunner от RoboFramework.Я постараюсь создать шаг за шагом учебник и опубликовать его.

Другие советы

@jollychang сделать этот путь

Добавить это к файлу monkeyrunner.java

   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);
    }
.

до:

    JythonUtils.convertDocAnnotationsForClass(MonkeyRunner.class, dict);
.

Тогда сделайте новый monkeyrunner.jar;

Нужны некоторые другие банку, как это: Библиотеки

Используйте новый monkeyrunner.jar вместо старой.

Наконец: запустить робот с командой:

В моем компьютере используйте это:

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: / пользователи / komejun / documents / devtool / android / android-sdk-sdk-mac_x86 / инструменты / 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="/ пользователи / Komejun / Documents / devtool / android / android-sdk-mac_x86 / andiles" -djava.library.path="/ пользователи / Komejun / Documents / devtool / android / android-sdk-mac_x86 / инструменты / lib "org.robotframework.robotframework a.txt

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top