Espresso 測試框架 - 檢視操作



如前所述,檢視操作自動化了 Android 應用程式中使用者可以執行的所有可能操作。Espresso 的 onView 和 “onData” 提供了 perform 方法,該方法接受檢視操作並呼叫/自動化測試環境中的相應使用者操作。例如,“click()” 是一個檢視操作,當傳遞給 onView(R.id.myButton).perform(click()) 方法時,將在測試環境中觸發按鈕(id:“myButton”)的點選事件。

在本章中,讓我們瞭解 Espresso 測試框架提供的檢視操作。

typeText()

typeText() 接受一個型別為 String 的引數(文字)並返回一個檢視操作。返回的檢視操作將提供的文字輸入到檢視中。在放置文字之前,它會點選檢視一次。如果內容已包含文字,則內容可能會放置在任意位置。

onView(withId(R.id.text_view)).perform(typeText("Hello World!"))

typeTextIntoFocusedView()

typeTextIntoFocusedView()typeText() 類似,但它將文字放置在檢視中游標位置的右側。

onView(withId(R.id.text_view)).perform(typeTextIntoFocusedView("Hello World!"))

replaceText()

replaceText()typeText() 類似,但它會替換檢視的內容。

onView(withId(R.id.text_view)).perform(typeTextIntoFocusedView("Hello World!"))

clearText()

clearText() 沒有引數,並返回一個檢視操作,該操作將清除檢視中的文字。

onView(withId(R.id.text_view)).perform(clearText())

pressKey()

pressKey() 接受鍵碼(例如 KeyEvent.KEYCODE_ENTER)並返回一個檢視操作,該操作將按下對應於鍵碼的鍵。

onView(withId(R.id.text_view)).perform(typeText(
   "Hello World!", pressKey(KeyEvent.KEYCODE_ENTER))

pressMenuKey()

pressMenuKey() 沒有引數,並返回一個檢視操作,該操作將按下硬體選單鍵。

onView(withId(R.id.text_view)).perform(typeText(
   "Hello World!", pressKey(KeyEvent.KEYCODE_ENTER), pressMenuKey())

closeSoftKeyboard()

closeSoftKeyboard() 沒有引數,並返回一個檢視操作,該操作將關閉鍵盤(如果已開啟)。

onView(withId(R.id.text_view)).perform(typeText(
   "Hello World!", closeSoftKeyboard())

click()

click() 沒有引數,並返回一個檢視操作,該操作將呼叫檢視的點選操作。

onView(withId(R.id.button)).perform(click())

doubleClick()

doubleClick() 沒有引數,並返回一個檢視操作,該操作將呼叫檢視的雙擊操作。

onView(withId(R.id.button)).perform(doubleClick())

longClick()

longClick() 沒有引數,並返回一個檢視操作,該操作將呼叫檢視的長按操作。

onView(withId(R.id.button)).perform(longClick())

pressBack()

pressBack() 沒有引數,並返回一個檢視操作,該操作將點選後退按鈕。

onView(withId(R.id.button)).perform(pressBack())

pressBackUnconditionally()

pressBackUnconditionally() 沒有引數,並返回一個檢視操作,該操作將點選後退按鈕,如果後退按鈕操作退出應用程式本身,則不會丟擲異常。

onView(withId(R.id.button)).perform(pressBack())

openLink()

openLink() 有兩個引數。第一個引數(連結文字)型別為 Matcher,並引用 HTML 錨標記的文字。第二個引數(url)型別為 Matcher,並引用 HTML 錨標記的 url。僅適用於 TextView。它返回一個檢視操作,該操作收集文字檢視內容中所有可用的 HTML 錨標記,找到與第一個引數(連結文字)和第二個引數(url)匹配的錨標記,最後開啟相應的 url。讓我們考慮一個文字檢視,其內容如下:

<a href="http://www.google.com/">copyright</a>

然後,可以使用以下測試用例開啟和測試連結:

onView(withId(R.id.text_view)).perform(openLink(is("copyright"),
   is(Uri.parse("http://www.google.com/"))))

在這裡,openLink 將獲取文字檢視的內容,找到文字為版權,www.google.com 為 url 的連結,並在瀏覽器中開啟 url。

openLinkWithText()

openLinkWithText() 具有一個引數,該引數可以是 **String* 或 Matcher 型別。它只是 openLink *方法的快捷方式。

onView(withId(R.id.text_view)).perform(openLinkWithText("copyright"))

openLinkWithUri()

openLinkWithUri() 具有一個引數,該引數可以是 String 或 Matcher 型別。它只是 openLink* 方法的快捷方式。

onView(withId(R.id.text_view)).perform(openLinkWithUri("http://www.google.com/"))

pressImeActionButton()

pressImeActionButton() 沒有引數,並返回一個檢視操作,該操作將執行在 android:imeOptions 配置中設定的操作。例如,如果 android:imeOptions 等於 actionNext,這將把游標移動到螢幕上下一個可能的 EditText 檢視。

onView(withId(R.id.text_view)).perform(pressImeActionButton())

scrollTo()

scrollTo() 沒有引數,並返回一個檢視操作,該操作將滾動螢幕上匹配的 scrollView。

onView(withId(R.id.scrollView)).perform(scrollTo())

swipeDown()

swipeDown() 沒有引數,並返回一個檢視操作,該操作將在螢幕上觸發向下滑動操作。

onView(withId(R.id.root)).perform(swipeDown())

swipeUp()

swipeUp() 沒有引數,並返回一個檢視操作,該操作將在螢幕上觸發向上滑動操作。

onView(withId(R.id.root)).perform(swipeUp())

swipeRight()

swipeRight() 沒有引數,並返回一個檢視操作,該操作將在螢幕上觸發向右滑動操作。

onView(withId(R.id.root)).perform(swipeRight())

swipeLeft()

swipeLeft() 沒有引數,並返回一個檢視操作,該操作將在螢幕上觸發向左滑動操作。

onView(withId(R.id.root)).perform(swipeLeft())
廣告

© . All rights reserved.