Espresso 自動化測試(十二) -recyclerView 以及 viewPager的使用

這段時間一直在使用espresso 進行Android 自動化測試,說句實在話,真是不實際用一下有很多東西都不會明白吧。下來列舉兩個遇到的問題以及解決的方法吧

界面存在一個viewpager,viewpager中的內容是兩個Recyclerview並且他們的resourceId都是一致的,

這裏寫圖片描述

這個時候,如果瞭解espresso的大概都能知道如果我簡單的通過onView=(withId(recyclerviewId))的話,測試過程中就會拋出如下的異常

AmbiguousViewMatcherException:This matcher matches multiple views in the hierarchy

那麼這個問題要如何解決呢,其實也挺簡單的。因爲我們簡單對比下兩個recyclerView就會發現問題了,一個是VISIBLE,另一個則是INVISIBLE。所以我們可以通過下面的代碼來進行確定當前界面的RecyclerView.

onView(allOf(withId(recyclerViewId), isDisplayed()))

通過當前可見的來指定出對應的元素了。

解決完上一個問題,又出來一個新的問題了。有一個操作需要滑動到下一個RecyclerView界面,進行某個按鈕的點擊。代碼如下:

 Commons.viewPagerSwipLeft(R.id.edit_performance_avatars_viewPager);   
 Commons.clickRecyclerViewElementByPos(R.id.fragment_avatars_recyclerView, position);

我做了一個簡單的封裝,上面的步驟應該看名字就能知道做了一個向左滑動的操作,再來點擊Recyclerview的某一個位置的按鈕。可是就這麼一個簡單的操作問題就來了。每次運行到點擊的時候又報了跟上面一樣的錯誤。

AmbiguousViewMatcherException:This matcher matches multiple views in the hierarchy

我再三的檢查了代碼,沒問題啊,但是通過看log發現兩個Recyclerview竟然當前的狀態都是VISIBILE。這個也太奇怪了。
通過再三的分析,發現調試的時候就可以運行成功,正式運行就失敗。最後終於發現原來是我的向左操作太快了,導致上一個滑動界面都未更新完,點擊就出問題了,所以我們在滑動的後面增加一個延時。增加sleep的方法需要實現IdingResource。具體可以查看

Espresso自動化測試(十一) - IdlingResource

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