2016-06-15 7 views
2

appium을 처음 사용합니다.appium에서 요소를 찾는 방법

쇼핑 앱 (Flipkart)의 자동화 기능으로 appium을 배우고 있습니다.

내가 요소 5 요소 에서 "권장 당신을위한 할인" 목록을 선택하려합니다.

이렇게하려면 해당 요소에 손을 뻗기 위해 가로 스크롤을해야합니다. 하지만 문제가 발생했습니다 "당신을위한 권장 할인"의 요소가있는 컨테이너 요소를 얻으므로 5th element을 가져올 수 있습니다.

나는 문제가 플립 카드의 UI가 항상 바뀌고 있다고 생각합니다.

driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); 
    Thread.sleep(3000); 
    driver.scrollToExact("Recommended Offers for You"); 
    Thread.sleep(10000); 
    // Getting error on below line 
    AndroidElement ele = (AndroidElement) driver.findElement(By.xpath("//android.support.v7.widget.RecyclerView[@index='1']")); 

    for(int i=0;i<4;i++) 
    { 
    Thread.sleep(2000); 
    if (ele.findElement(By.xpath("android.widget.RelativeLayout[@index='2']")).isDisplayed()) 
    { 
     ele.findElement(By.xpath("android.widget.RelativeLayout[@index='2']")).click(); 
     break; 
    } 
    else 
    { 
     horizontalScroll(ele); 
    } 

    } 

public void horizontalScroll(AndroidElement ele) 
{ 
    Dimension size=driver.manage().window().getSize(); 
    int x_start=(int)(size.width*0.60); 
    int x_end=(int)(size.width*0.30); 
    int y=130; 
    ele.swipe(SwipeElementDirection.RIGHT,x_end,y,4000); 
} 

나는 find elementsuiautomator을 사용하고 있습니다. 다음은 UI의 스크린 샷입니다. 응용 프로그램의 UI가 표시 될 때 경우 요소를 찾을 수있는 가장 좋은 방법은

  1. 무엇 :

    enter image description here

    나는 다음과 같은 질문이 있습니다.

  2. appium을 배우기 위해 어느 앱을 자동화해야합니까? 응용 프로그램의 UI는 항상 변화

을 얻는 경우

  • 어떻게 도와주십시오 응용 프로그램을 자동화하는! 미리 감사드립니다.

  • 답변

    1

    여기에서 요소에 resource-id가 있음을 확인했습니다. 왜 그것을 사용하지 않습니까?

    1. 앱의 UI가 표시된 것처럼 요소를 찾는 가장 좋은 방법은 무엇입니까? 항상 리소스 ID로 요소를 찾는 것이 좋습니다. 왜냐하면, 그것은 xpath보다 더 빨리 요소를 찾는다. 또한 요소가 중간에 추가되면 계층 구조의 요소가 변경되므로 xpath가 변경됩니다.

    2. appium을 배우려면 어떤 앱을 자동화해야합니까? 기본 앱은 iOS 용 UICatalog 및 Android 용 Playstore 앱을 제공합니다.

    3. 앱의 UI가 항상 변경되는 경우 UI 앱을 자동화하는 확장 가능한 솔루션은 페이지 개체를 생성하고 한 위치에서 로케이터를 유지하며 테스트 사례 등을 통해 퍼지지 않도록하는 것입니다. 크기에 따라 다릅니다. 변경된 탐색, 변경된 요소 계층 구조 등입니다. 자원 ID 기반 선택이 항상 선호됩니다. 이는 앱에 레이아웃 변경 사항이있는 경우 자동화 스크립트의 변경을 줄입니다. 그러나 나는이 문제를 해결할 단일 방법이 없다는 사실을 두려워합니다.응용 프로그램의 요소를 찾을 수

    +0

    동일한 resource_id를 가진 자원이 여러 개인 경우 어떻게 될까요? 동일한 resource_id를 갖는 여러 리소스를보고 있기 때문에 – Ankur

    +0

    RecyclerView에서 항목은 동일한 View이기 때문에 매우 일반적으로 동일한 resourceIds를 갖습니다. 고유 항목을 사용하여 RecyclerView를 채우지 않는 한 RecyclerView의 의도에 어긋나지 않는 한. – Daniel

    2
    1. 최상 (또는 오히려 가장 빠른) 방법은 자원 ID을 사용하고 있습니다. 자원 ID를 사용할 수없는 경우/같은 당신이 여기 무 케시 Otwani하여이 자습서에 따라 Appium 시작할 수을 배우고 싶은 경우에 XPath는

    2. 를 사용하여 찾을 수있는 것은 link

      입니다
    3. UI가 유일한 방법을 계속 업데이트하는 경우 변경 사항으로 스크립트를 계속 업데이트합니다.

    희망 하시겠습니까?

    +0

    동일한 resource_id를 가진 자원이 여러 개인 경우 어떻게됩니까? 동일한 resource_id를 가진 여러 리소스를보고 있기 때문에 – Ankur

    0

    보기가 모든 종류의 목록보기 인 경우 모든 요소는 동일한 ID를 가지므로 해당 이름을 사용하여 이름을 탭하거나 xpath를 만들어 UR 동작을 수행 할 수 있습니다.

    0

    동일한 리소스 ID를 가진 UI 요소가 여러 개인 경우 resource-id와 함께 인덱스를 사용할 수 있습니다.

    관련 문제