摘要:附錄自動化測試從入門到入門自動化測試從入門到入門自動化測試從入門到入門入門自動化測試從入門到入門自動化測試從入門到入門的測試自動化測試從入門到入門會玩的自動化測試從入門到入門
之前的文章中,我們介紹了Android自動化測試的一些背景,以及Espresso的基本應(yīng)用。除了之前介紹過的Espresso的相關(guān)用法,Espresso還提供了一些其他的用法,可以讓我們在不同場景下靈活使用。這篇文章我們依然關(guān)注于Espresso提供的功能。
Sibling View有些時候,一個布局中可能包含很多重復(fù)的控件。這些控件可能擁有相同的ID以及相同的text,不容易通過簡單的匹配規(guī)則進行匹配。很典型的一個例子是ListView,比方在我們的通訊錄列表中每一項都有一個打電話的按鈕,這些按鈕有同樣的ID,并且顯示同樣的文字,這樣一來我們很難通過onView()進行匹配。
除了通過上一篇文章AdapterView的測試介紹的onData()方法以外,Espresso還提供了一個hasSibling()方法,用來通過目標(biāo)控件的Sibling進行匹配。
官網(wǎng)提供了這么一個例子:我們有一個如下圖所示的列表,
這個列表的每一項都有一個顯示“7”的TextView,這些TextView的text屬性是相同的,但是在View層級中,每一個TextView左邊都對應(yīng)有一個彼此不同的TextView。比方說我們要找的第一個“7”左邊顯示了“item: 0”,此時可以通過如下的代碼匹配目標(biāo)控件:
onView(allOf(withText("7"), hasSibling(withText("item: 0")))) .perform(click());Child View
有時候我們需要對一個View中的某個子控件進行操作(比如點擊一個ListView條目中的某個指定Button),這時我們可以通過onChildView()方法指定相應(yīng)的子控件。
我們來看如下一個例子。
在這個列表中,對于每個列表項,左邊顯示了一個字符串,右邊顯示了該字符串的長度。我們現(xiàn)在想要點擊“item: 50”這一行右邊的TextView。我們已經(jīng)通過onData()匹配出了該行View:
onData(withItemContent("item: 60"))
其中withItemContent()提供了一個自定義Matcher。關(guān)于自定義Matcher的介紹可以參考之前的AdapterView的測試中的相關(guān)介紹。
此時,我們可以再通過onChildView()方法找到相應(yīng)的子控件:
onData(withItemContent("item: 60")) .onChildView(withId(R.id.item_size)) .perform(click());Web測試
Espresso還支持對WebView的測試,如果需要對Web進行測試,需要在buid.gradle中添加如下依賴:
androidTestCompile "com.android.support.test.espresso:espresso-web:2.2.1"
請注意,目前Espresso-Web只支持Espresso 2.2+以及testing support library 0.3+版本。
Espresso-Web對Web的測試思路與對原生APP的測試思路大體相同,也是首先匹配出我們需要的目標(biāo)元素,然后執(zhí)行一系列操作,再通過Assertions進行結(jié)果的檢查。因此在這里簡單說明一下Espresso-Web提供的一系列方法,大家可以自行查看官方文檔或者源碼了解細節(jié)。
withElement(ElementReference)方法提供了尋找目標(biāo)元素的功能,實例代碼如下:
onWebView().withElement(findElement(Locator.ID, "teacher"))
perform(Atom)方法會對目標(biāo)元素進行一系列操作:
onWebView().withElement(findElement(Locator.ID, "teacher")) .perform(webClick());
check(WebAssertion)方法會對目標(biāo)元素進行檢查:
onWebView() .withElement(findElement(Locator.ID, "teacher")) .withContextualElement(findElement(Locator.ID, "person_name")) .check(webMatches(getText(), containsString("Socrates")));小結(jié)
本篇文章作為之前文章對Espresso介紹的補充,比較簡單,總體上也是根據(jù)官方提供的文檔選取了我認為比較好玩的幾個小話題,除了這些以外官方文檔中還提供了其他一些細節(jié)的說明,在此附上Espresso官方文檔的地址,大家可以自行查閱:
Espresso官方文檔
到此為止,我們的系列文章已經(jīng)完成了對Espresso的介紹。實際上大家看完官方文檔之后,也會發(fā)現(xiàn)其實內(nèi)容很少,基本上也就是我介紹過的這些東西,具體怎么使用還是需要結(jié)合我們的實際業(yè)務(wù)場景靈活進行選擇。
接下來的文章中,我們會相繼介紹Android自動化測試的一些其他相關(guān)工具和話題。
附錄Android自動化測試-從入門到入門(1) Hello Testing!
Android自動化測試-從入門到入門(2) Testing APIs
Android自動化測試-從入門到入門(3) Espresso入門
Android自動化測試-從入門到入門(4) uiautomatorviewer
Android自動化測試-從入門到入門(5) AdapterView的測試
Android自動化測試-從入門到入門(6) 會玩的Espresso
Android自動化測試-從入門到入門(7) UI Automator
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/65529.html
摘要:右下角部分顯示當(dāng)前選中控件的各個屬性。然后,向這個中輸入賬號信息就完成了一個表單的輸入。我們可以根據(jù)屬性區(qū)域顯示的來進行匹配賬號小總結(jié)所提供的界面簡單,使用方便,對于我們的自動化測試來說是一個很好的輔助工具。 我們用如下一行代碼來回顧一下之前介紹過的內(nèi)容: import static android.support.test.espresso.Espresso.onView; impo...
摘要:檢查操作的結(jié)果是否符合預(yù)期。大家在實際編寫自動化測試腳本時可以靈活選用。 到目前為止,我們已經(jīng)完成了對Espresso的介紹。從之前的文章我們可以看到,Espresso對Android APP的自動化測試提供了一系列非常強大的工具和方法。 現(xiàn)在試想這樣一個場景:我們在APP中有一個更改頭像的功能,此時我們需要調(diào)用系統(tǒng)相機進行拍照,然后再回到APP提交拍好的照片。在這種場景下,我們需要從...
閱讀 3569·2021-11-18 13:20
閱讀 2727·2021-10-15 09:40
閱讀 1740·2021-10-11 10:58
閱讀 2107·2021-09-27 13:36
閱讀 2586·2021-09-07 10:06
閱讀 1848·2021-08-11 11:21
閱讀 1425·2019-08-29 17:04
閱讀 2080·2019-08-29 14:06