不能在多个设备上同时运行monkeyrunner脚本(例如两个monkeyrunner进程)

时间:2012-11-05 12:11:04

标签: android monkeyrunner

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&

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

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

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

    但这不是我需要的。有谁知道为什么monkeyrunner会这样做?

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

2 个答案:

答案 0 :(得分: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  

答案 1 :(得分:1)

我认为Monkeyrunner不是线程安全的。

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

请注意,在脚本1开始正常工作后,它会失败并出现错误。并且SCript2也无法完成预期的操作,因为它从两个窗口获取命令。