2016-06-15 5 views
2

私はappiumを初めて使っています。appiumの要素を見つける方法

私はショッピングアプリの自動化でappiumを学習しています(Flipkart)

要素を選択しようとしています第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を学習するにはどのアプリを自動化する必要がありますか? すべてのネイティブアプリ、appiumを使用するには、iOS用のUICatalog、android用のプレイストアのアプリを使用してください。

    3. アプリのUIが常に変更されている場合のUIの自動化の仕組み UIアプリケーションを自動化するスケーラブルなソリューションでは、ページオブジェクトを作成し、ロケータを1か所に維持し、テストケースなどに広がらないようにします。変更されたナビゲーション、変更された要素階層などです。リソースIDベースの選択が常に優先されます。これは、アプリケーションにレイアウト変更がある場合、自動スクリプトの変更を減らすためです。しかし、私はこの問題に取り組む一つの方法がないのではないかと心配しています。アプリ内の要素を検索する

    +0

    同じresource_idを持つ複数のリソースがある場合はどうなりますか?同じresource_idを持つ複数のリソースが表示されているため – Ankur

    +0

    RecyclerViewでは、アイテムは同じViewであるため、非常に一般的に同じresourceIdsを持ちます。一意のアイテムを使用してRecyclerViewを作成する場合を除き、RecyclerViewの意図に反するものではありません。 – Daniel

    2
    1. ベスト(またはむしろ最速の)方法は、リソースIDを使用しています。 リソース-IDもしあなたがのxpath

    2. を使用して、それを見つけるために持っている同じ/利用できないあなたがAppiumを学びたい場合は、ここでムケシュOtwaniすることにより、これらのチュートリアルに従うことによって開始することができますlink

      です
    3. UIが唯一の方法を更新し続けている場合は、これを変更してスクリプトを更新し続けます。

    希望します。

    +0

    同じresource_idを持つ複数のリソースがある場合はどうなりますか?同じresource_idを持つ複数のリソースが表示されているため – Ankur

    0

    ビューがどの種類のリストビューであっても、すべての要素が同じIDを持つため、その名前を使用してタップするか、xpathを作成してurアクションを実行することができます

    0

    同じリソースIDを持つUI要素が複数ある場合は、resource-idとともにindexを使用できます。

    WebElement element=driver.findElements(By.id("your_id")).get(1); 
    
    関連する問題