天天看點

Espresso UI自動化測試 二(點選事件)

上面介紹了基本的輸入框、文字顯示,接下來我們說下監聽事件

監聽事件包含:文字監聽、按鈕、listView監聽、gridView、arrayLIST、RecycleListView。

1、文字和按鈕

通過id或是文字找到

onView(withId(R.id.search_text)).perform(click());
onView(withText("搜尋")).perform(click());
           

如果當你遇到有相同文字時你可以通過他相鄰的控件來判斷;

onView(allOf(withText("資料"), hasSibling(withText("item 0")))).perform(click());
           

hasSibling ( withText ( "第一行" );表示是在第一行的旁邊

2、listView、gridView、arrayLIST

下面我們通過代碼說下listView的點選

Thread.sleep(1000);
        onView(withId(R.id.rl_contact_main_group_item)).perform(click());
        Thread.sleep(1000);//等待加載清單
        onData(instanceOf(TNPFeed.class))                  //item的資料類型
                .inAdapterView(withId(R.id.lv_contact))    //根據listView的id 找到adapter
                .atPosition(1)                             //找到listView的某個item
                .perform(click());                         //點選
        Thread.sleep(2000);
           

       Thread.sleep(1000); 表示主線程等待1秒;為什麼需要些這個代碼呢,那是因為如果界面還未加載出來,你就去執行點選控件的操作,會報找不到View的錯誤,所有如果界面上的内容比較複雜可以相應的控制時間,特别是在請求接口時候,就更要延長時間;

      onView(withId(R.id.rl_contact_main_group_item)).perform(click());表示點選一個id為R.id.rl_contact_main_group_item的控件;

     instanceOf(TNPFeed.class);表示你清單資料的對象

     .atPosition(1)   裡面的1表示你要點選的位置;

onData(instanceOf(TNPFeed.class)).inAdapterView(allOf(withId(R.id.lv_apps),isDisplayed())).atPosition(0).perform(click());
           

  allOf(withId(R.id.lv_apps),isDisplayed()) 表示id是R。id.lv_apps并且是在目前頁,隻有滿足了這兩個要求才是我們要找的控件

3、RecycleListView

這個是比較特殊的,他和listView還有有很大差别的,他不能像listView那樣通過InAdapterView()來擷取,

 ViewInteraction interaction = onView(withId(R.id.lst_class));

            interaction.check(matches(isDisplayed()));

            interaction.perform(RecyclerViewActions.scrollToPosition(0));

            Thread.sleep(1000);

            interaction.perform(RecyclerViewActions.actionOnItemAtPosition(0, click()));

RecyclerViewActions.scrollToPosition(0)表示的是其需要找到的位置,

RecyclerViewActions.actionOnItemAtPosition(0, click())) 這個是其需要點選的位置,并且調用click()方法點選;

那麼還有一個問題如果一個頁面隻能顯示10條資料,你要點選第15條怎麼辦,沒關系的如果有存在第15條資料,那麼它會自動滑動的;

下面這個裡面作者也寫的挺好的,涉及到的内容比較廣;

https://testerhome.com/topics/5145

繼續閱讀