如何使用 AndroidViewClient 连接多个设备

Posted

技术标签:

【中文标题】如何使用 AndroidViewClient 连接多个设备【英文标题】:how to connect multiple devices using AndroidViewClient 【发布时间】:2013-11-27 09:43:57 【问题描述】:

我想使用 androidViewclient 连接到两个多台设备(device1、device2)以自动化测试用例,我必须从 device1 拨打电话并在 device2 上接听电话。请帮助如何同时连接到两个设备。

【问题讨论】:

【参考方案1】:

更新

culebra 现在支持 多设备 模式,因此不再需要此答案中描述的步骤。可以在android: culebra multi-device capabilities 找到说明、示例和视频,展示在 3 个不同设备上同时运行的相同测试。

回答

一如既往。我的建议是让 culebra 创建您的脚本,然后您可以调整它。 culebra 将为一个设备生成一个脚本,然后您可以为另一个设备复制这些行,或者如果需要,您可以遍历设备列表。

这是一个修改后的脚本(将 serialno1serialno2 替换为您设备的实际序列号):

$ culebra -VC -d on -t on -o myscript.py serialno1

修改后myscript.py 将如下所示:

#! /usr/bin/env python
# -*- coding: utf-8 -*-
'''
Copyright (C) 2013  Diego Torres Milano
Created on 2013-11-28 by Culebra v4.5.2

                      __    __    __    __
                     /  \  /  \  /  \  /  \ 
____________________/  __\/  __\/  __\/  __\_____________________________
___________________/  /__/  /__/  /__/  /________________________________
                   | / \   / \   / \   / \   \___
                   |/   \_/   \_/   \_/   \    o \ 
                                           \_____/--<
@author: Diego Torres Milano
@author: Jennifer E. Swofford (ascii art snake)
'''


import re
import sys
import os


try:
    sys.path.append(os.path.join(os.environ['ANDROID_VIEW_CLIENT_HOME'], 'src'))
except:
    pass

from com.dtmilano.android.viewclient import ViewClient


kwargs1 = 'verbose': True, 'ignoresecuredevice': False
device1, serialno1 = ViewClient.connectToDeviceOrExit(serialno='serialno1', **kwargs1)
device2, serialno2 = ViewClient.connectToDeviceOrExit(serialno='serialno2', **kwargs1)
kwargs2 = 'startviewserver': True, 'forceviewserveruse': False, 'autodump': False, 'ignoreuiautomatorkilled': True
vc1 = ViewClient(device1, serialno1, **kwargs2)
vc2 = ViewClient(device2, serialno2, **kwargs2)
vc1.dump(window='-1')
vc2.dump(window='-1')

no_id1_1 = vc1.findViewById("id/no_id/1")
print no_id1_1
no_id1_2 = vc2.findViewById("id/no_id/1")
print no_id1_2

这将同时连接到两个设备,获取转储,并在两个设备上找到一个 ID 为 id/no_id/1 的视图并打印结果。

【讨论】:

感谢代码,现在在连接到两个设备后,我尝试使用 device1.unlock() 和 device2.unlock() 解锁屏幕。我没有看到屏幕解锁。你能帮忙吗? 先尝试只使用一台设备,当您对脚本的结果感到满意时,尝试扩展它以支持多台设备。 用实际的serialno替换serialno1和serialno2后,代码很少连接到两个设备,大多数时候连接到一个设备两次。但是设备序列号是:0123456789ABCD,0123456789ABCDEF 请帮忙 除了serialno之外,还有其他方法可以使用AndroidViewClient连接到两台设备 你能发布你的脚本吗?

以上是关于如何使用 AndroidViewClient 连接多个设备的主要内容,如果未能解决你的问题,请参考以下文章

AndroidViewClient,找不到视图

python MonkeyRunner和AndroidViewClient示例。检测呼叫是否即将到来。

如何在android avd命令行中选择文本输入?

使用连接池后返回连接时如何检查连接是不是处于活动状态?

如何检查是不是使用了连接池

如何使用XManager下的Xshell远程连接Linux