51Testing软件测试论坛

标题: monkeyrunner简单示例的疑问 [打印本页]

作者: xmperfect    时间: 2011-11-4 09:33
标题: monkeyrunner简单示例的疑问
各位大侠,在网上搜到monkeyrunner的小示例

按照上面的说明,一步步实施,实施到device = MonkeyRunner.waitForConnection()时(我是已经打开了一个模拟器的)

命令行会提示[attach]75900[/attach]


图片可能看不清,就是下面这段话:


Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
        at com.android.monkeyrunner.JythonUtils.createArgParser(JythonUtils.java
:117)
        at com.android.monkeyrunner.MonkeyRunner.waitForConnection(MonkeyRunner.
java:63)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)

java.lang.NullPointerException: java.lang.NullPointerException

请问,是不是环境配置方面的问题啊,这个错误提示,就跟我没打开模拟器时运行这个命令是一样的。
各位,帮帮忙啊!

作者: monkeytest15    时间: 2011-11-7 23:28
例子是什么呢?能告知么?
作者: xmperfect    时间: 2011-11-9 10:09
例子是什么呢?能告知么?
monkeytest15 发表于 2011-11-7 23:28


http://www.51testing.com/html/59/n-242759.html

就是上面那个例子啊,终于等到有人回复了。。

执行到device = MonkeyRunner.waitForConnection()时(我是已经打开了一个模拟器的)

命令行提示如下错误
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
        at com.android.monkeyrunner.JythonUtils.createArgParser(JythonUtils.java
:117)
        at com.android.monkeyrunner.MonkeyRunner.waitForConnection(MonkeyRunner.
java:63)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)

java.lang.NullPointerException: java.lang.NullPointerException
作者: wj8106    时间: 2011-11-9 17:59
你的测试是在模拟器上做还是在物理手机上做?
感觉像是设备没有连接上。
作者: xmperfect    时间: 2011-11-10 09:30
你的测试是在模拟器上做还是在物理手机上做?
感觉像是设备没有连接上。
wj8106 发表于 2011-11-9 17:59


是在模拟器上,是设备没连接上,但是我已经打开一个模拟器了呀,那要怎么样连接设备啊
作者: xmperfect    时间: 2011-11-10 09:30
你的测试是在模拟器上做还是在物理手机上做?
感觉像是设备没有连接上。
wj8106 发表于 2011-11-9 17:59


是在模拟器上,是设备没连接上,但是我已经打开一个模拟器了呀,那要怎么样连接设备啊
作者: yyuanxiang    时间: 2011-11-11 23:15
你把路径切换到tools目前下执行看看,不要在monkeyrunner命令行下执行
作者: xmperfect    时间: 2011-11-14 09:56
你把路径切换到tools目前下执行看看,不要在monkeyrunner命令行下执行
yyuanxiang 发表于 2011-11-11 23:15


不在monkeyrunner命令行下执行,会提示命令不正确啊

我就是按照这个步骤来的

  1. 用Elipse打开andorid的模拟器或者在CMD中用andorid命令打开模拟器,如下:

  D:\Software\Android SDK2.3\android-sdk-windows\tools>emulator -avd AVD2.3.3

  Comments: 定位到android SDK的路径下的tools目录,运行上面这个命令。“AVD2.3.3”是我的模拟器的名字,这个命令是每个人自己命名的,用的时候需改成实际的名字。

  2. 这个时候,如果一切正常的话,模拟器应该可以启动起来了。(运行monkeyrunner之前必须先运行相应的模拟器,不然monkeyrunner无法连接设备。这点很多教程上都没有说,我也试了好多次才明白过来)。接着,我们打开另一个CMD窗口(前一个不要关),还是定位到tools目录,输入命令"monkeyrunner",回车,将进入shell命令交互模式。

  好了,接下来就可以导入monkeyrunner所要使用的模块了。当然是我们的"From...import..."

  直接在shell命令中输入: from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice  回车

  OK,这步完成之后,我们就可以开始和模拟器“勾兑”了,哈哈,命令如下:

  device = MonkeyRunner.waitForConnection()

  没有报错的话,就代表和模拟器勾兑成功,我们可以接着“骚扰”它了。接下来,我们可以在里面装点东西了。输入如下命令,并传入你的apk所在相对路径即可。我这安装的是著名的ApiDemos。成功了会返回true。如果没有返回true,一般都是语法错误或者你传入的相对路径有问题,仔细检查下就没问题了。

  device.installPackage("../samples/android-10/ApiDemos/bin/Apidemos.apk")

  接下来,我们就可以启动其中的任意activity了,只要传入package和activity名称即可。命令如下:

  device.startActivity(component = "com.example.android.apis/com.example.android.apis.ApiDemos")

  此时模拟器会自动打开ApiDemos这个应用程序的主页。


作者: zered    时间: 2011-12-12 15:30
回复 8# xmperfect


    device = MonkeyRunner.waitForConnection()
括号内 要输入你的设备名称 可以用adb devices 查看
作者: doctman    时间: 2012-1-16 15:53
好像应该是
device = MonkeyRunner.waitForConnection(1.0,'AVD2.3.3')
第一个参数是设备数量,第二个参数是设备名~
作者: summercc2008    时间: 2012-12-17 17:35
我也遇到一样的问题,一模一样,同事的电脑,windows7和XP 上都是正常的。我的也是Windows7.我实在找不出原因。
device = MonkeyRunner.waitForConnection(1.0,'AVD2.3.3')如果只有一台模拟器设备,不需要加名字吧
作者: summercc2008    时间: 2012-12-18 10:28
我也遇到一样的问题,一模一样,同事的电脑,windows7和XP 上都是正常的。我的也是Windows7.我实在找不出原 ...
summercc2008 发表于 2012-12-17 17:35



我遇到的这个问题终于解决了,我的JDK版本太低了,是1.5的,同事让我换成1.6的,再未报错。多些我的同事
作者: ingwlhot0801    时间: 2013-1-7 10:53
回复 11# summercc2008

如果模拟器的话,且开启1个,是不需要加设备名称的,默认为空即可指向该模拟器
如果是手机设备的话,应该要指向手机设备
作者: ingwlhot0801    时间: 2013-1-7 10:54
回复 12# summercc2008

原来如此,学习了
作者: qiqi744    时间: 2014-7-13 22:56
为什么只能启动主Activity?不能启动任意的acivity?




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2