2017-02-14 1 views
0

Ich erstelle einige automatisierte Tests für mobile Web-Apps, die Appium mit Java verwenden. Und ich benutze den Genymotion-Emulator. Ich gründe einige Fähigkeiten, wieGenymotion Gerätename

DesiredCapabilities cap = new DesiredCapabilities(); 
cap.setCapability(MobileCapabilityType.DEVICE_NAME, "TheDeviceName"); 

Aber ich bin über den Gerätenamen nicht sicher, von cmd, wenn ich adb Geräte geben -l ich:

>adb devices -l 
List of devices attached 
192.168.54.101:5555 device product:vbox86p model:AminaPhone device:vbox86p 

Dies ist der Code ich benutzte:

package com.example; 

import java.net.MalformedURLException; 

import java.net.URL; 

import org.openqa.selenium.By; 
import org.openqa.selenium.Platform; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.remote.BrowserType; 
import org.openqa.selenium.remote.DesiredCapabilities; 
import org.testng.annotations.BeforeClass; 
import org.testng.annotations.Test; 

import io.appium.java_client.AppiumDriver; 
import io.appium.java_client.android.AndroidDriver; 
import io.appium.java_client.remote.MobileCapabilityType; 
import io.appium.java_client.remote.MobilePlatform; 

public class FirstAppiumTest { 


// create instance for appium driver 
    AppiumDriver<WebElement> driver; 
    @Test 

    public void Setup() throws MalformedURLException, InterruptedException 
    { 
     DesiredCapabilities cap = new DesiredCapabilities(); 
     cap.setCapability(MobileCapabilityType.BROWSER_NAME,BrowserType.CHROME); 
     cap.setCapability(MobileCapabilityType.PLATFORM,Platform.ANDROID); 
     cap.setCapability(MobileCapabilityType.PLATFORM_NAME,MobilePlatform.ANDROID); 
     cap.setCapability(MobileCapabilityType.DEVICE_NAME,"Android"); 
     //cap.setCapability("udid","192.168.54.101:5555"); 

     //cap.setCapability("AVD", "emulator-5554"); 
     driver = new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4723/wd/hub/status"), cap); 
     driver.get("http://www.facebook.com"); 
     System.out.println("Title "+driver.getTitle()); 
     System.out.println("SetUp is successful and Appium Driver is launched successfully"); 
     driver.findElement(By.name("email")).sendKeys("[email protected]"); 
     driver.findElement(By.name("pass")).sendKeys("test_selenium"); 
     driver.findElement(By.id("u_0_5")).click(); 
     //Thread.sleep(5000); 
     driver.quit(); 

    } 


} 

Was ist der Name, den ich in den gewünschten capabilities und in der appium Konfiguration sollte? Danke.

Antwort

0

Nur zur Verdeutlichung: "adb devices" gibt Ihnen die Geräte-ID, nicht den Gerätenamen. außerdem ist es nicht möglich genymotion Emulator direkt von appium Fähigkeiten zu starten, so dass Sie Optionen haben:

Wenn seine wichtig, dass Sie auch den Emulator zu starten, bevor Test beginnt: https://stackoverflow.com/a/28961477/7368913

wenn es nicht wichtig ist, die zu starten Emulator, fügen Sie einfach die Fähigkeit:

cap.setCapability("udid, "192.168.54.101:5555"); 
+0

Vielen Dank für Ihre Antwort. Das Problem ist, wenn ich ein echtes Gerät benutze, gebe ich den Namen an; adb-Geräte. und der Test läuft ok. Aber mit Emulator mit dem gleichen Code passiert nichts. Ich dachte, dass Appium den Emulator nicht erkennt. Und ich brauche den Emulator nicht selbst zu essen. Ich starte es, bevor ich den Code ausführe. – victoria

+1

Wenn Sie einen Genymotion-Emulator verwenden - setzen Sie eine generische Gerätenamen-Fähigkeit 'capabilities.setCapability (" deviceName "," Android ");' haben Sie versucht, "udid" zu den Funktionen hinzuzufügen? es ist genau das, was Sie brauchen –

+0

Danke. Ich habe beide ausprobiert und nichts passiert auf dem Emulator :( – victoria