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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章