2014-12-29 79 views
8

我有一個由相同片段視圖的副本組成的Viewpager。你可以在它們之間滑動。我正在寫一個Espresso測試,並試圖在每個頁面的ID上聲明,但它們顯然不明確,因爲有多個頁面加載並且它們都共享相同的ID。我不想將視圖尋呼機一次只加載一個頁面。在我的應用程序中,這樣做效率不高。如何使用Espresso檢查Viewpager項目ID?

我也想過使用標籤並用一個唯一的字符串標記每個視圖,但後來我只修改了源代碼,以便測試工作。我不喜歡那樣。使用Espresso檢查Viewpager頁面內容的正確方法是什麼?

回答

2

假設一次只顯示其中一個頁面,您可以使用swipeLeft/swipeRight移動到頁面,然後檢查該頁面是否顯示正確的內容。

There are some examples here

例如

onView(withId(R.id.pager)) 
    .perform(swipeLeft()) 
    .check(matches(hasDescendant(withText("Position #2")))); 
+0

問題不在滑動,而是在檢查內容。我需要訪問每個頁面上的特定元素。不幸的是,我不能使用hasDescendant(withText()),因爲這些元素內部的內容的性質(它經常重複)。 – Eduard

+0

那麼從用戶的角度來看,什麼是獨特的? – yogurtearl

+1

爲了清楚起見,假設我在viewpager的每個頁面中都有R.id.mytext。它的內容在每一頁都是獨一無二的,但有一個重複的部分。例如,在第1頁上它說「高級軟件工程師」,第2頁上它說「測試中的軟件工程師」。我想斷言內容會從滑動刷新到滑動,但仍包含重複的部分:「軟件工程師」。所以要回答你的問題,R.id.mytext的完整字符串是唯一的(工作的標題) – Eduard

相關問題