2017-11-14 7 views
0

私はこのようなことを達成したいと思います。
Gmailアプリを開き、特定のメールを探し(スクロールも可能)、そのメールをクリックします。
以下の方法では、特定のメールを検索してクリックすることができます。
UI Automator/Ui Automator2:Recyclerビューの子UI要素をスクロールして見つけてください

public void openMailWithParticularTitle(){ 
     UiObject2 obj = Utils.getDeviceInstance().findObject(By.res("com.google.android.gm:id/recycler_list_view")); 
     List<UiObject2> mails = obj.findObjects(By.clazz("android.view.View")); 
     for(int i =0; i<mails.size();i++){ 
      if(mails.get(i).getContentDescription()!=null && mails.get(i).getContentDescription().contains("My Mail Link")){ 
       mails.get(i).click(); 
       break; 
      } 
     } 
    } 

しかし、それだけで目に見えるアイテムを探し、子要素を探すためにスクロールしません。
私はこれを見回して試しましたが、何らかの理由でこれも機能していないようです。

public void scrollMailWithParticularTitle2() throws UiObjectNotFoundException { 
     openApp(Const.package_gmail_app,true); 
     UiScrollable settingsItem = new UiScrollable(new UiSelector() 
       .className("android.support.v7.widget.RecyclerView")); 
     UiObject about = settingsItem.getChildByText(new UiSelector() 
       .className("android.view.View"), "My Mail Link"); 
     about.click(); 
    } 


すべてのヘルプ/提案をいただければ幸いです。 (Iは、UIテストの限られた知識をしました)

答えて

0

scrollIntoView関数としてみてください:セレクタに一致する可視項目を

見つかるまでスクロールレイアウト要素を移動し、スクロールフォワードアクションを実行

私はそれをアプリのメニューに私のアプリを見つけるために1時間を使用:

UiDevice mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()); 
UiObject allAppsButton = mDevice.findObject(new UiSelector().description("Apps")); 
allAppsButton.clickAndWaitForNewWindow(); 

UiScrollable appView = new UiScrollable(new UiSelector().scrollable(true)); 
appView.scrollIntoView(new UiSelector().text(APP_TITLE)); 
mDevice.findObject(new UiSelector().text(APP_TITLE)).clickAndWaitForNewWindow(); 
+0

私の答えを見て、より良い提案をしてください。 – AnswerDroid

0

UIAutoについてmator2;私はこれらの2つの方法を作成し、私のために働いています:

//This method returns child from scrollable parent using description 


public UiObject findChildFromScrollParentByDescription(String scrollParentClass, String childItemClass, String childDesc) throws UiObjectNotFoundException { 
     UiScrollable parent = new UiScrollable(new UiSelector() 
       .className(scrollParentClass)); 
     UiObject child = parent.getChildByDescription(new UiSelector() 
       .className(childItemClass), childDesc, true); 
     return child; 
    } 

//This method returns child from scrollable parent using text 
public UiObject findChildFromScrollParentByText(String scrollParentClass, String childItemClass, String childDesc) throws UiObjectNotFoundException { 
    UiScrollable parent = new UiScrollable(new UiSelector() 
      .className(scrollParentClass)); 
    UiObject child = parent.getChildByText(new UiSelector() 
      .className(childItemClass), childDesc, true); 
    return child; 
} 
関連する問題