2017-02-14 142 views
0

我正在創建一些自動化Web移動應用程序測試,使用Java的appium。我正在使用genymotion模擬器。 我設置的一些功能,像Genymotion設備名稱

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

但我不知道該設備的名稱,從CMD當我輸入-l我得到ADB設備:

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

這是代碼我用過:

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(); 

    } 


} 

我應該在期望的能力和appium配置中的名字是什麼?謝謝。

回答

0

只是爲了闡明: 「adb設備」爲您提供設備ID,而不是設備名稱。 此外,它不可能直接從appium能力推出genymotion模擬器,所以你必須選擇:

如果其重要的是你測試開始之前,還啓動模擬器:https://stackoverflow.com/a/28961477/7368913

,如果它推出並不重要模擬器,只需添加能力:

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

謝謝你的回答。問題是當我使用真實設備時,我把名字顯示在; adb設備。並且測試運行正常。但是對於具有相同代碼的模擬器,沒有任何反應。我認爲appium不認識模擬器。而且我不需要通過它自己來模擬仿真器。我在運行代碼之前啓動它。 – victoria

+1

當使用genymotion模擬器 - 把一個通用的設備名稱能力capabilities.setCapability(「deviceName」,「Android」);' 你嘗試添加「udid」的能力?它正是你所需要的 –

+0

謝謝。我嘗試了他們兩個,並沒有發生什麼事在模擬器上:( – victoria