【超詳細】全國大學生軟件測試大賽:移動應用測試腳本編寫要求

博主提供練習題下載,導入eclipse即可運行。點擊查看

移動測試腳本編寫要求:點擊查看

博主參賽紀錄分享:點擊查看


目錄

腳本編寫要求

UIAutomatorViewer 工具介紹

1、獲取快照

2、頁面層級

3、屬性詳情

定位控件的參數選擇要求

例1

例2

其他注意事項


腳本編寫要求

UIAutomatorViewer 工具介紹

在你開始寫測試用例之前,使用 uiautomatorviewer 工具可以幫助你熟悉你的 UI 組件(包括視圖和控件),並獲取組件的各項屬性信息。

你可以使用它對當前連接到你電腦上的手機屏幕進行一個快照,然後可以看到手 機當前頁面的層級關係和每個控件的屬性。利用這些信息,你可以寫出針對特定 UI 控件的測試用例。

在本地的 ..\sdk\tools\ 目錄下打開 uiautomatorviewer.bat (打開前請手機連接 電腦,手機開啓 USB 調試)。

1、獲取快照

        當你要分析一個頁面時,首先將手機的頁面停留在你要分析的頁面,然後用數據 線連接電腦。

然後點擊 uiautomatorviewer 左上角的第二個圖標按鈕 Device Screenshot,點擊 之後會將當前手機界面的快照更新到這裏來。

2、頁面層級

        右上方的整個區域,就是當前頁面佈局的層級關係。

3、屬性詳情

        右下方的整個區域,是當前選中的頁面或者是控件的屬性信息。這部分比較重要, 我們以後寫代碼的時候就是需要通過查看屬性中的控件的 id 或者是 text 等來獲 取控件的實例,然後點擊操作它。

定位控件的參數選擇要求

原則:對腳本控件定位參數的選擇要追求在要求範圍內的唯一性。

即除了在多個頁面中都會出現的公共控件之外(例如返回按鈕),其它的控 件定位參數的選擇要做到在題目範圍內的全局唯一

本題只涉及到使用兩種參數對控件進行定位,控件 id 或控件 XPath,其中

參數選擇優先級:控件 Resource-id > 控件 XPath

        優先使用控件的 id 來定位控件(對應 driver.findElementById()方法),若 id 在題目範圍內 並不全局唯一, 則 使 用 XPath 進行定位 (對應 driver.findElementByXPath()方法)。

 

例1

        如上圖中使用 UI Automator Viewer 工具(這個工具在本機的 Android sdk 目錄下的 tools 文件夾下,名爲 uiautomatorviewer.bat 的文件,雙擊運行即可啓 動該工具,點擊工具中左上角,見上圖,第二個按鈕即可獲取當前已連接設備 的當前頁面,並查看對應控件屬性)查看已連接設備當前頁面上的控件及其屬 性。

        對比以上兩圖可以發現,“商城”控件的 id 爲 com.floral.life:id/rb_bottom_s hop,而與其同類的控件“我的”的 id 爲 com.floral.life:id/rb_bottom_person,我 們如果要定位控件“商城”,可知其 id 滿足定位參數唯一性的原則,所以這裏 使用 id 作爲“商城”定位的參數

 

例2

        比較上面兩張圖可以發現,當前屏幕上“乾花”這個控件的 id 和“鮮切 花”的 id 是相同的,都爲 com.floral.life:id/tv_title。如果我們要定位“鮮切花” 這個控件,根據優先使用全局唯一的參數來定位的原則,發現 id 並不全局唯 一,不能和例 1 一樣處理,故考慮使用 XPath 進行定位。

        XPath 是一種特殊的路徑,可以理解爲使用多個參數來唯一定位到一個控 件。

        在此處我們使用的 XPath 爲//android.widget.TextView[@text='鮮切花 '],即 其格式如下。

//控件類名[@控件屬性名='控件屬性值']

        即定位到當前頁面中的 android.widget.TextView 類控件且其對應的 text 屬性值 爲'鮮切花 '(此處'鮮切花 '的花字後面還有一個空格,所以不要自己輸入屬性 值,應該直接把在 UI Automator Viewer 中的值直接拷貝到代碼中去)。

        理論上來說 XPath 中的控件屬性名可以是該控件的任意屬性,但因爲全局 唯一性的要求,首要選擇 text、content-desc 這種特殊性較強的屬性值,不要選 擇 index、bounds 這種多個控件極易相同(即未滿足全局唯一)的屬性值。

 

其他注意事項

  • 腳本中不要使用 driver.findElementsByxxx()一類的方法,不要用該方法 定位多個控件得到一個 list 再循環來操作 list 中控件(除非該控件的 XPath 都不能滿足在測試範圍內的全局唯一)。
  • 腳本中允許自定義函數,但對於 driver.findElementById() 這類原生方法,不 要進行封裝。
  • 腳本中使用 XPath 進行定位時,務必與腳本編寫要求中的 XPath 格式完全一 致,即
    //控件類名[@控件屬性名='控件屬性值'] 
    不要使用//*[@控件屬性名='控件屬性值']等一系列其他格式。
  • 邏輯上是一句話的代碼務必寫在一行內,不要在函數的參數處換行。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章