2016-03-16 2 views
0

Я настроил на устройстве два устройства Android. Одним из них является реальное устройство Android (ZX1D63R33N) [Moto G Second Gen - с 5.0.2 - API 21] и эмулятор Android GenyMotion [с 5.1.1 с API 22].[Selendroid] [Java-клиент]: запуск скриптов на конкретном устройстве/эмуляторе

Сценарий успешно выполняется на обоих устройствах. Но я не могу контролировать выполнение, в котором устройство должно выполнить выполнение.

Считайте, что я подключаю свое настоящее устройство для Android и запускаю эмулятор Genymotion. то устройство adb даст следующий результат.

C:\Users\Ramkumar>adb devices 
List of devices attached 
ZX1D63R33N  device 
192.168.56.101:5555  device 

Я установил следующие SelendoidCapabilities в своем скрипте.

WebDriver driver; //AppiumDriver driver 

    //new SelendroidCapabilities. 
    SelendroidCapabilities selendroidCapabilities = SelendroidCapabilities.emulator(DeviceTargetPlatform.ANDROID22, "Android Emulator"); 
    selendroidCapabilities.setEmulator(true); 
    selendroidCapabilities.setCapability("browserName", "Chrome"); 
    selendroidCapabilities.setCapability("device", "Android"); 
    selendroidCapabilities.setCapability("version", "5.1"); 
    selendroidCapabilities.setCapability("deviceName", "192.168.56.101:5555"); 
    selendroidCapabilities.setCapability("platformName", "Android"); 

    //capabilities.setCapability("app", app.getAbsolutePath()); 
    //capabilities.setCapability("appPackage","com.android.chrome"); 
    driver = new SelendroidDriver(new URL("http://localhost:4723/wd/hub"), selendroidCapabilities); 
    driver.get("https:google.com"); 
    Thread.sleep(20000); 
    driver.quit(); 

Когда я выполнить сценарий, его получение выполняется в phone.It открывается как хром браузер и открыть страницу Google. Независимо от того, я установил эмулятор как истинный и создал SelendroidCapabilities с emualtor как опцией.

Даже когда я закрываю свой эмулятор GenyMotion и подключен к реальному устройству Android, а команда adb device также отображает только одно реальное подключенное устройство. Затем я также вижу, что его выполнение выполняется в реальном устройстве андроида.

C:\Users\Ramkumar>adb devices 
List of devices attached 
ZX1D63R33N  device 

И наоборот, это же проблема. если я начать реальное устройство первого и второго GenyMotion emualtor, то команда ADB устройство дает выход в

C:\Users\Ramkumar>adb devices 
List of devices attached 
ZX1D63R33N  device 
192.168.56.101:5555  device 

Имея следующие SelendroidCapabilities не работает скрипт на реальном устройстве Android, но на GenyMotion emualtor.

SelendroidCapabilities selendroidCapabilities = SelendroidCapabilities.device(DeviceTargetPlatform.ANDROID22, "Android Emulator"); 
    selendroidCapabilities.setEmulator(false); 

Просьба указать, не хватает ли какой-либо конфигурации. Спасибо заранее.

С уважением, Рамкумар

ответ

0
1. Use this: SelendroidCapabilities caps = new SelendroidCapabilities(); 
     in place of this:  
    SelendroidCapabilities selendroidCapabilities = SelendroidCapabilities.emulator(DeviceTargetPlatform.ANDROID22, "Android Emulator"); 

    2. Use capability caps.setSerial(deviceId) 
     in place of 
     selendroidCapabilities.setCapability("deviceName", "192.168.56.101:5555"); 

DeviceId тот же серийный номер устройства, который вы получаете на выполнение ADB устройств, этот вывод можно передать в управление, где вы должны выполнить тест.

+0

Спасибо за ваш ответ, я попробовал то же, о чем вы упоминали, но все же он всегда выбирает первые устройства, поступающие из команды adb devices. – Ramkumar

+0

'SelendroidCapabilities selendroidCapabilities = new SelendroidCapabilities(); selendroidCapabilities.setSerial ("192.168.56.101:5555"); selendroidCapabilities.setCapability («версия», «5.1»); selendroidCapabilities.setCapability ("deviceName", "192.168.56.101:5555"); selendroidCapabilities.setCapability ("browserName", "chrome") ' – Ramkumar

+0

Ниже приведены журналы в узле appium.js info: [debug] Попытка найти подключенное устройство Android info: [debug] Подключение подключенных устройств ... info : [debug] Выполнение cmd: C: \ Users \ Ramkumar \ AppData \ Local \ Android \ android-sdk \ platform-tools \ adb.exe устройства ** информация: [debug] подключено 2 устройства (ов) информация: Найдено устройство ZX1D63R33N info: [debug] Установка идентификатора устройства на ZX1D63R33N ** – Ramkumar

0

Ну, наконец, я смог выполнить конкретный запуск устройства. Единственное, чего мне не хватало в моем старом коде, я устанавливал свое устройство в свойство deviceName, а не udid.

C:\Users\Ramkumar>adb devices 
List of devices attached 
192.168.56.101:5555  device 
ZX1D63R33N  device 

Для этого мне нужно установить серийный номер с помощью udid.

capabilities.setCapability("version", "5.1"); 
    capabilities.setCapability("deviceName", "SomethingDoesntMatter"); 
    capabilities.setCapability("browserName", "chrome"); 
    capabilities.setCapability("device", "Android"); 
    capabilities.setCapability("udid","ZX1D63R33N"); // 192.168.56.101:5555 // ZX1D63R33N 
    capabilities.setCapability("platform", "Android"); 

capabilities.setCapability ("UDID", "ZX1D63R33N"); - Это свойство, которое устанавливает идентификатор устройства. Когда я устанавливаю значение в ZX1D63R33N, он запускается на моем реальном устройстве Android, и когда он установлен в 192.168.56.101:5555, он выполняется на эмуляторе.

Когда deviceName было обязательным, я попытался установить серийный номер с этим значением. Не имеет значения, какое значение мы установили в deviceName

Спасибо!

Смежные вопросы