成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Android自動化測試-從入門到入門(7)UI Automator

Dean / 3287人閱讀

摘要:檢查操作的結(jié)果是否符合預(yù)期。大家在實(shí)際編寫自動化測試腳本時可以靈活選用。

到目前為止,我們已經(jīng)完成了對Espresso的介紹。從之前的文章我們可以看到,Espresso對Android APP的自動化測試提供了一系列非常強(qiáng)大的工具和方法。

現(xiàn)在試想這樣一個場景:我們在APP中有一個更改頭像的功能,此時我們需要調(diào)用系統(tǒng)相機(jī)進(jìn)行拍照,然后再回到APP提交拍好的照片。在這種場景下,我們需要從自己的APP跳轉(zhuǎn)到其他的APP,而這種跳轉(zhuǎn)的交互在產(chǎn)品中是經(jīng)常會發(fā)生的。

Espresso并沒有對這種跨APP的交互測試提供支持。我們無法在腳本中通過Espresso獲取到非自己APP之外其他APP(或者系統(tǒng)界面)的UI組件。這時,我們就需要用到Android提供的UI Automator來進(jìn)行自動化測試。

配置

想要使用UI Automator,只需要添加如下依賴:

dependencies {
    ...
    androidTestCompile "com.android.support.test.uiautomator:uiautomator-v18:2.1.1"
}

UI Automator僅支持Android 4.3(API Level 18)及以上版本。

可行性探索

在使用UI Automator編寫測試腳本之前,我們需要對當(dāng)前測試用例是否可以用UI Automator進(jìn)行測試做一些探索。簡單來說,就是要確保我們需要的界面元素是否都能找到、希望出發(fā)的操作是否都支持。

確定可行性的方法也很簡單,只要確保我們需要操作的UI元素有可以進(jìn)行匹配的屬性(這一點(diǎn)類似于Espresso),比如唯一的ID,text等等。我們可以按照該系列第四篇對uiautomatorviewer的介紹來使用Android提供的uiautomatorviewer工具,對測試用例中的各個頁面,尤其是跨APP交互的頁面中的各個UI元素進(jìn)行分析,確保每個我們需要操作的元素都有相應(yīng)可以匹配的屬性值,以便于我們可以通過腳本找到相應(yīng)的元素。

對此,Android官方對我們開發(fā)者也提出了一些針對自動化測試的建議,便于我們在開發(fā)時采用:

對于ImageView, ImageButton, CheckBox這些控件,對其設(shè)置android:contentDescription屬性。

對于EditText,設(shè)置其android:hint屬性。

對于其他有交互作用但沒有顯式文本的控件(比方說可以點(diǎn)擊的icon之類),設(shè)置其android:hint屬性。

以上這些建議的目的,無非就是可以讓我們通過自動化測試API去找到頁面上的控件。

UI Automator測試流程

使用UI Automator進(jìn)行腳本編寫的一些前置條件和Espresso基本類似,實(shí)際上,我們基于之前幾篇文章的配置就可以直接進(jìn)行UI Automator的編寫。

采用UI Automator的過程如下:

獲得一個UiDevice對象,代表我們正在執(zhí)行測試的設(shè)備。該對象可以通過一個getInstance()方法獲取,入?yún)橐粋€Instrumentation對象:

UiDevice mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());

通過findObject()方法獲取到一個UiObject對象,代表我們需要執(zhí)行測試的UI組件。

對該UI組件執(zhí)行一系列操作。

檢查操作的結(jié)果是否符合預(yù)期。

整個流程和Espresso基本類似,除了增加了第一項:首先獲得一個UiDevice對象。這一點(diǎn)也容易理解,為了要支持跨APP的測試,我們就不能只從APP層面而是需要從整個設(shè)備層面來進(jìn)行測試了,因此也是首先需要獲取設(shè)備對象,再執(zhí)行相關(guān)的操作。

獲取UI組件

根據(jù)如上所說,我們是通過UiDevice來調(diào)用findObject()方法來獲取到我們想要執(zhí)行操作的UI組件。我們來看一下這個方法的聲明:

/**
 * Returns a UiObject which represents a view that matches the specified selector criteria.
 *
 * @param selector
 * @return UiObject object
 */
public UiObject findObject(UiSelector selector) {
    return new UiObject(this, selector);
}

從如上聲明可以看出,findObject()方法接受了一個UiSelector對象,返回了我們需要的UiObject對象。在這里,UiSelector類似于Espresso中的Matcher,也是指定了某種匹配規(guī)則,UI Automator會按照UiSelector指定的規(guī)則從當(dāng)前UI上進(jìn)行控件的查找。不同于Espresso的是,如果找到多個滿足規(guī)則的控件,則會返回第一個控件。如果沒有控件滿足當(dāng)前指定的規(guī)則,則會拋出一個UiAutomatorObjectNotFoundException異常。

Espresso類似,我們可以通過ID、text等屬性來進(jìn)行控件的查找,同時也可以指定目標(biāo)控件的類型??梢灾付ㄒ粋€規(guī)則,也可以通過鏈?zhǔn)秸{(diào)用指定多個規(guī)則。比如:

UiObject mCameraSureBtn = mDevice.findObject(new UiSelector().resourceId("com.android.camera:id/v6_btn_done")
                .className("android.widget.ImageView"));

這行代碼的UiSelector構(gòu)建就是采用了如下兩個組合規(guī)則:

控件ID"com.android.camera:id/v6_btn_done",這個ID是從某個MIUI版本系統(tǒng)的系統(tǒng)相機(jī)獲取的,對應(yīng)于拍照按鈕;

控件類型為ImageView。

除了UiObject之外,UI Automator還提供了其他的UI對象,比如UiCollection對象可以對一組控件之間進(jìn)行操作,對布局之間的包含關(guān)系做了支持;比如UiScrollable對象支持了對可滑動組件的支持。這些組件的用法大同小異,可以自行參考API接口。

執(zhí)行操作

找到了我們需要的控件,接下來該對控件進(jìn)行操作了!

UiObject提供了一系列方法用來執(zhí)行各種各樣的操作。比如:

click():點(diǎn)擊控件中心;

dragTo():拖動控件到指定位置;

setText():對可輸入控件設(shè)置文本;

swipeUp():對控件執(zhí)行上滑操作。類似地,swipeDown(), swipeLeft()swipeRight()可以執(zhí)行相應(yīng)的操作

這一部分也是比較簡單,和Espresso的用法大體類似,只是API層面的區(qū)別。具體的可以在使用的時候查看API文檔。

檢查結(jié)果

執(zhí)行一系列操作之后,我們需要對操作的結(jié)果進(jìn)行驗證了!
對于結(jié)果的驗證,我們可以使用之前說到的一系列Assert方法了。比如說,我們需要檢測某個控件的文字:

assertEquals(TargetText, mUiObject.getText())

便可以這樣進(jìn)行執(zhí)行。

總結(jié)

從該篇文章來看,UI Automator的使用方法和Espresso基本相同,整體的思路也是完全一致,只是一個對APP內(nèi)部提供了很好的支持,另一個對跨APP提供了支持。大家在實(shí)際編寫自動化測試腳本時可以靈活選用。

附錄

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://systransis.cn/yun/65624.html

相關(guān)文章

  • Android動化測試-入門入門(2)Testing APIs

    摘要:標(biāo)識一個測試方法。附錄自動化測試從入門到入門自動化測試從入門到入門自動化測試從入門到入門入門自動化測試從入門到入門自動化測試從入門到入門的測試自動化測試從入門到入門會玩的自動化測試從入門到入門 根據(jù)該系列文章的第一篇:Hello Testing,大家已經(jīng)對整個自動化測試運(yùn)行流程有了一個基本的了解,接下來我們該集中精力關(guān)注具體的腳本實(shí)現(xiàn)了!在具體實(shí)現(xiàn)之前,我們先來了解一下Android提...

    Meathill 評論0 收藏0
  • Android動化測試-入門入門(4)uiautomatorviewer

    摘要:右下角部分顯示當(dāng)前選中控件的各個屬性。然后,向這個中輸入賬號信息就完成了一個表單的輸入。我們可以根據(jù)屬性區(qū)域顯示的來進(jìn)行匹配賬號小總結(jié)所提供的界面簡單,使用方便,對于我們的自動化測試來說是一個很好的輔助工具。 我們用如下一行代碼來回顧一下之前介紹過的內(nèi)容: import static android.support.test.espresso.Espresso.onView; impo...

    winterdawn 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<