2016-08-30 3 views
0

Appium Insecptor가 사용하는 Java 언어의 Appium 스크립트가 있습니다.Java Appium Test를 AWS Device Farm에서 실행하지 못했습니다.

내 스크립트는 5 단계로 할 것입니다

:

  1. 클릭 사용자 이름 필드

  2. 입력 이름

  3. 클릭 암호 필드

  4. 입출력 암호

  5. 로그인 버튼을 클릭하십시오.

AWS Device Farm에서 스크립트를 실행하고 싶습니다.

나는, 내 pom.xml 파일을 수정하는 document AWS의 장치 농장을 따라했다 메이븐 패키지 mvn clean package -Dskiptests=true를 사용하여 포장하고 마지막으로 zip-with-dependencies.zip AWS에 장치 농장을 업로드했습니다.

하지만 내 테스트를 실행하지 못했습니다. 는 여기에 내가 AWS 내 스크립트를 실행하는 데 실패하게 실수를 한 곳

Screenshot of my result 1 Screenshot of my result 2

내가 모르는 결과의 스크린 샷이다. 여기

은 내가 녹음 한 나는 AWS 장치 농장 팀을 위해 일

package com.hostname.myapp; 

import io.appium.java_client.AppiumDriver; 
import io.appium.java_client.android.AndroidDriver; 
import io.appium.java_client.android.AndroidElement; 

import java.io.IOException; 
import java.net.MalformedURLException; 
import java.net.URL; 
import java.util.concurrent.TimeUnit; 

import org.junit.AfterClass; 
import org.junit.BeforeClass; 
import org.junit.Test; 
import org.openqa.selenium.By; 


public class AppiumTest { 

    private static AppiumDriver<AndroidElement> wd; 

    @BeforeClass 
    public static void setUpClass() throws MalformedURLException { 

     DesiredCapabilities capabilities = new DesiredCapabilities(); 
     capabilities.setCapability("appium-version", "1.0"); 
     capabilities.setCapability("platformName", "Android"); 
     capabilities.setCapability("platformVersion", "5.0.2"); 
     capabilities.setCapability("deviceName", "XXXXXXXXXXXX"); 
     capabilities.setCapability("app", "/Users/X/X.apk"); 
     capabilities.setCapability("appPackage", "com.hostname.myapp"); 
     wd = new AndroidDriver<AndroidElement>(new URL("http://0.0.0.0:4723/wd/hub"), capabilities); 
     wd.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS); 
    } 

    @AfterClass 
    public static void tearDownClass() { 
     if (wd != null) { 
      wd.quit(); 
     } 
    } 

    @Test 
    public void test() throws IOException { 
     wd.findElement(By.xpath("android.widget.EditText[1]")).click(); 
     wd.findElement(By.xpath("android.widget.EditText[1]")).sendKeys("username"); 
     wd.findElement(By.xpath("android.widget.EditText[2]")).click(); 
     wd.findElement(By.name("Android.widget.EditText[2]")).sendKeys("password"); 
     wd.findElement(By.xpath("android.widget.Button[1]")).click(); 
     wd.close(); 
    } 
+1

동일한 스크립트가 물리적 장치에서 정상적으로 작동하는지 확인하십시오. 'wd = new AndroidDriver <> (새로운 URL ("http://127.0.0.1:4723/wd/hub"), capabilities);를 사용하여 시도해보고 요소 로케이터와 그 값이 올바른지 확인하십시오. – Abhinav

답변

2

입니다.

감사합니다. 이것은 도움이됩니다.

솔루션

  1. 원하는 기능 : 장치 농장 당신이 사용하고 원하는 기능을 무시합니다. 장치 팜에서 별도로 응용 프로그램을 업로드하고 실행을 예약하는 동안 장치를 선택하면 코드에서 사용하는 장치 유형, 이름 및 기타 기능이 적용되지 않으며 그에 따라 달라지는 코드가 작동하지 않을 가능성이 높습니다. 빈 원하는 기능 개체를 생성하고이를 AndroidDriver 생성자에 전달하는 것이 가장 이상적인 방법입니다.

  2. 안드로이드 드라이버 : 당신이

    wd = new AndroidDriver<AndroidElement>(new URL("http://0.0.0.0:4723/wd/hub"), capabilities);

    을 사용하는 코드는

    wd = new AndroidDriver<AndroidElement>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);

  3. 비디오해야한다 : 우리는 모두 iOS 및 안드로이드에 대한 비디오 녹화 기능이 .테스트가 실패하면 해당 실행 비디오가있는 경우 엄청난 도움이됩니다. "파일"탭에서 확인할 수 있습니다. 테스트를 실행하는 동안 팝업이 장치에 나타나거나 다른 예기치 않은 이벤트가 발생할 수 있습니다. 이 경우 동영상에서 더 많은 통찰력을 제공해야합니다.

나는이 3 가지 변경을 시도 할 것을 제안합니다. 계속 진행할 수없는 경우 알려주십시오.

희망이 도움이됩니다.

+0

@Nikof에 감사드립니다. AWS 및 Appium에 새로운 기능을 제공하는 몇 가지 질문이 있습니다. 1. 업로드하기 전에 원하는 기능을 비워 두어야합니까? 나는 그것들의 유무에 관계없이 다른 것을 발견했다. 2. IP를 127.0.0.1로 변경 한 후에 다른 오류가 있습니다 : "지정된 검색 매개 변수를 사용하여 페이지에 요소를 배치 할 수 없습니다.", [detail here] (http://pastebin.com/hVnnb6t3) 매개 변수는 Appium Inspector에 의해 기록됩니다. 나는 그것이 정확해야한다고 생각한다. 3. 예, 비디오 레코드가 있다는 것을 알고 있습니다. –

+0

당신의 도움이 필요합니다 @Nikof = ( –

+0

안녕 케빈, 지연 시간 동안 죄송합니다 예 1. 빈칸으로 남겨 두는 것이 좋습니다 2. 실행 URL을 검색 할 때 사용할 수 있기 때문에 공유 할 수 있습니까? 문제의 원인을 제로로 낮추기위한 세부 정보 – NikofTime

관련 문제