2015-06-02 63 views
2

在Google Espresso測試中,我試圖點擊DatePickerDialog的OK按鈕。Android Epresso:DatePicker點擊OK添加一年而不是驗證

但不是驗證我的輸入,它只是添加一年而不關閉對話框。

看來,點擊是在年份欄的「+」按鈕上完成的。這是一個咖啡的錯誤還是我錯過了什麼?

這裏是我的咖啡代碼(在科特林):

onView(allOf(iz(instanceOf(javaClass<Button>())), withText("OK"), 
      isDisplayed()) as Matcher<View>).perform(click()) 
+0

我仍然有今天的問題,它僅適用於Android 4.x的與發生微調日期選擇器,日曆視圖工作得很好。這就像點擊發生在Ok按鈕上方的一個像素,然後點擊微調器的年份列: -/ –

回答

0

升級我的測試設備到4.4.4之後,這個bug已經被自己:這是一款Android 4.4 <錯誤T_T

6

它可能不是完美的(因爲我硬編碼文本「OK」),但我設法用這個片段做在我的測試:

// Change the date of the DatePicker. Don't use "withId" as at runtime Android shares the DatePicker id between several sub-elements 
onView(withClassName(Matchers.equalTo(DatePicker.class.getName()))).perform(PickerActions.setDate(1989, 8, 25)); 
// Click on the "OK" button to confirm and close the dialog 
onView(withText("OK")).perform(click()); 
+0

我已經在我的發佈代碼中執行了此操作(有更多條件試圖將其縮小到按鈕),而且它沒有工作。我的問題不是設置日期,而是點擊「確定」使DatePicker添加一年而不是點擊按鈕。 –

+0

我的觀點是,它對我來說工作得很好(只有我在上面發佈的兩行代碼),並且不會爲結果添加一年。所以這個問題可能出現在你的代碼中(也許你添加了一個onClickListener,並且你在ID或者監聽器上有衝突)。但是,只要您發佈的代碼,恐怕我們無能爲力。您可以發佈所有代碼,也可以僅使用DatePicker創建一個新的空活動來測試。如果它起作用,這意味着你在代碼中添加了一些錯誤。 – jdebon

1

在某些版本的Android上,「確定」DatePickerDialog被替換爲「Set」或「Done」。 嘗試:

onView(withId(android.R.id.button1)).perform(click()); 

這將點擊對話框的正面按鈕。不管它如何被調用。

+0

沒有運氣,它向DatePickerDialog添加了一年:/ –

相關問題