как подключить несколько устройств с помощью AndroidViewClient

я хочу подключиться к двум нескольким устройствам (device1,device2) с помощью AndroidViewclient для автоматизации тестового примера, где мне нужно сделать вызов с устройства1 и принять вызов на устройстве2. Помогите, пожалуйста, как подключиться к двум устройствам одновременно.


person user    schedule 27.11.2013    source источник


Ответы (1)


Обновлять

culebra теперь поддерживает режим несколько устройств, поэтому шаги, описанные в этом ответе, больше не нужны. Описание, пример и видео, демонстрирующее одновременный запуск одного и того же теста на 3 разных устройствах, можно найти по адресу Android: возможности мульти-устройства culebra.

Отвечать

Как всегда. я рекомендую позволить culebra создать сценарий, а затем вы можете адаптировать его. culebra сгенерирует сценарий для одного устройства, затем вы сможете продублировать строки для другого или перебрать список устройств, если возникнет такая необходимость.

Вот модифицированный скрипт, сгенерированный (замените serialno1 и serialno2 фактическими серийными номерами ваших устройств):

$ 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/no_id/1 на обоих и распечатать результат.

person Diego Torres Milano    schedule 28.11.2013
comment
спасибо за код, теперь, после подключения к обоим устройствам, я попытался разблокировать экран с помощью device1.unlock() и device2.unlock(). не вижу разблокировки экрана. не могли бы вы помочь? - person user; 29.11.2013
comment
Попробуйте сначала только с одним устройством, когда вы будете удовлетворены результатами сценария, попробуйте расширить его, чтобы он поддерживал более одного. - person Diego Torres Milano; 29.11.2013
comment
После замены серийных номеров1 и серийных номеров2 на фактические серийные номера код подключается к обоим устройствам очень редко, в большинстве случаев подключается к одному устройству дважды. Но серийные номера устройства: 0123456789ABCD, 0123456789ABCDEF Пожалуйста, помогите - person user; 05.12.2013
comment
Кроме serialno, есть ли способ подключиться к двум устройствам с помощью AndroidViewClient? - person user; 06.12.2013
comment
Не могли бы вы опубликовать свой сценарий? - person Diego Torres Milano; 07.12.2013
comment
from com.dtmilano.android.viewclient import ViewClient kwargs1 = {'verbose': True, 'ignoresecuredevice': False} kwargs2 = {'startviewserver': True, 'forceviewserveruse': False, 'autodump': False, 'ignoreuiautomatorkilled': True} device1, serialno1 = ViewClient.connectToDeviceOrExit(serialno='0123456789ABCD', **kwargs1) vc1 = ViewClient(device1, serialno1, **kwargs2) vc1.dump(window='-1') device2, serialno2 = ViewClient.connectToDeviceOrExit (serialno='0123456789ABCDEF', **kwargs1) vc2 = ViewClient(device2, serialno2, **kwargs2) vc2.dump(window='-1') - person user; 09.12.2013
comment
Это настоящие серийные номера? - person Diego Torres Milano; 09.12.2013
comment
Да, это настоящие серийные номера - person user; 09.12.2013
comment
Могу ли я подключить несколько устройств, используя IP-адрес устройств Android, если да, то, пожалуйста, сообщите мне, какие изменения требуются в приведенном выше сценарии. - person user; 17.12.2013
comment
Как вы можете использовать приведенный выше код, когда есть несколько устройств с одинаковым серийным номером? Можно ли как-то зациклить все подключенные устройства (даже если серийный номер у всех одинаковый)? - person Micro; 26.04.2016
comment
Почему все устройства имеют одинаковый серийный номер? В любом случае, взгляните на AdbClient.getDevices(), он может вернуть список со всеми устройствами. - person Diego Torres Milano; 26.04.2016
comment
Не начав еще один вопрос, у меня есть несколько устройств, подключенных к моему компьютеру, которые, к сожалению, имеют один и тот же серийный номер (как 0123456789ABCDEFG. Есть ли способ просто сказать Culebra или AndroidViewClient выполнять один и тот же скрипт на всех подключенных устройствах, независимо от того, какие они? - person Micro; 28.04.2016
comment
Android: возможности мультиустройства culebra объясняют, как можно использовать параметр командной строки -s all для запуска на всех подключенных устройствах. - person Diego Torres Milano; 28.04.2016