2

test.py 脚本内容:

import ....

device = MonkeyRunner.waitForConnection(10,sys.argv[1])

device.startActivity(component='package/activity')

'''
some monkeyrunner events
'''

我有两个设备,标记为 device1-id 和 device2-id

  1. 运行 monkeyrunner test.py device1-id &

  2. 运行 monkeyrunner test.py device2-id &

我发现 device2-id 中的一些事件已发送到 device1-id。我不知道为什么?

我注意到一些教程,他们说,如果在更多设备上运行 monkeyrunner,可以编写如下脚本:

device1 = MonkeyRunner.waitForConnection(10,device1-id)
device2 = MonkeyRunner.waitForConnection(10,device2-id)

device1.actions

device2.actions

但这不是我需要的。任何人都知道为什么monkeyrunner会这样做?

我需要的是,我有一个脚本,可以同时在多台设备上运行相同的脚本。

4

2 回答 2

3

您必须指定猴子端口,因此您可能需要像这样使用命令行参数

 # Imports the monkeyrunner modules used by this program
 from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
 import sys

 # Connects to the current device, returning a MonkeyDevice object
 device = MonkeyRunner.waitForConnection(timeOut,"emulator-"+ sys.argv[1])

 MONKEYRunner Actions . . . . 

注意:sys.arv[0] 始终是测试文件

通过在命令行中输入以下内容进行调用:

   monkeyrunner test.py PortNumber  
于 2012-11-19T19:09:02.043 回答
1

我相信 Monkeyrunner 不是线程安全的。

要对此进行测试,请创建 2 个脚本,将 deviceId 硬编码到每个脚本中。启动每个脚本:在 windows 中,使用“start script1”然后“start script2” 在 Unix 中使用“script1 &; script2 &”

请注意,script1 在看起来开始正常工作后失败并出现错误。并且 SCript2 也未能完成它想要做的事情,因为它从两个窗口获取命令。

于 2013-06-21T15:50:03.523 回答