Monkeyrunner。同时连接到多个设备

时间:2018-07-09 20:15:32

标签: monkeyrunner

我使用此脚本同时连接到多个Android设备(即通过adb发送文件):

from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
import time
import sys
import time
import os

devices = os.popen('adb devices').read().strip().split('\n')[1:]
device1 = MonkeyRunner.waitForConnection( devices[0].split('\t')[0])  
package = 'com.android.browser'
activity = 'com.android.browser.BrowserActivity'
runComponent = package + '/' + activity
device1.startActivity(component=runComponent)

MonkeyRunner.sleep(1)
device2 = MonkeyRunner.waitForConnection( devices[1].split('\t')[0])  
package = 'com.android.browser'

activity = 'com.android.browser.BrowserActivity'
runComponent = package + '/' + activity
device2.startActivity(component=runComponent)

我用过

adb 1.0.36 (Rev 1:7.0.0+r33-2) and
monkyrunner(Jython 2.5.3 (2.5:c56500f08d34+, Aug 13 2012, 14:54:35) 

但是我得到的是:

09:02:54 E/DeviceMonitor: Adb connection Error:EOF                                                                                                                                                                               
09:02:54 E/DeviceMonitor: Connection attempts: 1                                                                                                                                                                                 
09:02:55 E/DeviceMonitor: Connection attempts: 2                                                                                                                                                                                 
09:02:56 E/DeviceMonitor: Connection attempts: 3  

任何提示怎么办?

谢谢!

(原始线程:How to run Monkeyrunner script on multiple devices at the same time

1 个答案:

答案 0 :(得分:0)

您可以使用支持多种设备的AndroidViewClient/culebra。如果我没记错的话,这是AndroidViewClient解决的monkeyrunner局限性之一。

您只需使用以下命令即可生成脚本

$ culebra -Uu --multi-device --start-activity='com.android.chrome/com.google.android.apps.chrome.Main' -o multi-browser.py

生成单元测试(-U),不验证屏幕转储(-u)中的内容,使用多个设备,启动特定活动作为前提,并将生成的脚本保存到{ {1}}。

然后,将脚本运行为

multi-device.py

其中$ multi-browser.py -s all 指定要运行脚本的设备的序列号,在这种情况下为-s,浏览器将在所有设备上启动。