test.py脚本内容:
import ....
device = MonkeyRunner.waitForConnection(10,sys.argv[1])
device.startActivity(component='package/activity')
'''
some monkeyrunner events
'''
我有两个设备,标签为device1-id和device2-id
运行monkeyrunner test.py device1-id&
运行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会这样做?
我需要的是,我有一个脚本,可以同时在多个设备上运行相同的脚本。
答案 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也无法完成预期的操作,因为它从两个窗口获取命令。