天天看點

Robotium Solo Api 簡介

------手機自動化測試之Robotium

 Robotium是一個通用的測試Android App的架構,是以官方提供了一套通用的PKI文檔。我們在下載下傳Solo包的時候同時可以下載下傳一個javadoc包,解壓後就能看到官方文檔了,不過官方文檔是英文版本的,如果通讀一遍的話也是挺有難度的。還好網上也有對應的翻譯,是以我們不打算講述所有的API,隻講解一些兒常用的。

3.1 點選類操作

在手機App操作中,點選操作是非常常用的,下面幾個API是基本的點選操作:

(1)clickOnText(String text)

clickOnText(java.lang.String text, int match)  clickOnText(java.lang.String text, int match, boolean scroll) 

功能:點選包含該文字的地方,其中text可以用正規表達式表示。如:(?i)----忽略大小寫。預設情況是大小寫敏感的,正規表達式與java保持一緻。Scroll:true如果可滾動Match:比對

(2)clickLongOnText(String text)

clickLongOnText(java.lang.String text, int match) clickLongOnText(java.lang.String text, int match, boolean scroll) clickLongOnText(java.lang.String text, int match, int time) 

功能:長按一個包含該文字的地方。

參數:

Scroll:true如果可滾動 ,Time:長按的時間 Match:比對

(3) clickOnButton(int index) 

clickOnButton(java.lang.String name) 

功能:以序号或是名稱單擊各種按鈕,index代表這個按鈕在view中的序号,name是屬性值。

(4)clickOnImageButton(int index)  

功能:以序号的方式單擊一個圖檔按鈕。

(5)clickOnCheckBox(int index)

功能:以序号的方式單擊一個複選按鈕。

(6)clickOnRadioButton(int index) 

功能:以序号來單擊一個單選按鈕。

(7)clickOnToggleButton(java.lang.String name)

功能:點選一個切換按鈕

(8) clickOnEditText(int index)

功能:以序号來單擊文本框,使其獲得焦點,然後執行後序的操作。

(9)clickOnScreen(float x, float y)

clickLongOnScreen(float x, float y)

    clickLongOnScreen(float x, float y, int time) 

功能:單擊螢幕的某一坐标。參數x,y辨別出坐标的位置,time 代表長按的時間。

(10)clickLongOnTextAndPress(java.lang.String text, int index) 

功能:長按後從list中選擇一個項目 

(11)clickOnView(android.view.View view) clickLongOnView(android.view.View view) clickLongOnView(android.view.View view, int time) 

功能:單擊一個View,或是長按一個View,參數time代碼長按的時間。

(12)clickOnImage(int index)  

功能:以序号來執行單擊圖檔操作。

(13)clickOnMenuItem(java.lang.String text) clickOnMenuItem(java.lang.String text, boolean subMenu) 

功能:以菜單項來單擊選擇菜單,參數subMenu:子菜單,如果可以設定在子菜單中 

3.2 輸入類操作

  對要操作的App進行輸入操作,這也是常見的操作,Robotium輸入操作有如下幾種:

(1)void enterText(android.widget.EditText editText, String text)

  功能:向一個符合條件的EditText輸入特定的文本。

(2)void enterText(int index, String text)

  功能:對特定的符合序号index的文本框輸入文本。

(3)void enterTextInWebElement(By by, String text)

   功能:通過By定位,對頁面元素輸入文本。

(4)void clearEditText(android.widget.EditText editText)

  功能:清除特定的文本框中的内容。

(5)void clearEditText(int index)

  功能:清除符合序号index的文本框中的内容。

(6)void clearLog()

  功能:清除日志檔案

(7)void clearTextInWebElement(By by)

  功能:清除頁面元素文本框内的資訊。

這些兒是常用的輸入操作,為了不影響操作效果,建議在對文本框進行輸入之前,先清空一下。當然像菜單選擇,單選框,多選框也能輸入的,這些兒操作在上一節已經講過。

3.3 Get相關操作

在對App元素進行操作之前,首先要擷取這個元素的句柄,然後再去執行相關的操作。是以擷取到要操作的元素是第一步的,這也是自動化操作最基本的。

(1)getButton(int index) 

getButton(java.lang.String text) 

getButton(java.lang.String text, boolean onlyVisible) 

功能:通過序号,文本擷取按鈕,參數onlyVisible為true時隻擷取可見的按鈕。

(2)getCurrentActivity() 

功能:傳回目前activity。

(3)getCurrentButtons() 

功能:傳回button的list。

(4)getCurrentCheckBoxes() 

功能:傳回複選框的list。

(5)getCurrentDatePickers() 

功能:傳回日期選擇器的list。

(6) getCurrentEditTexts() 

功能:傳回目前文本框的list

(7)getCurrentGridViews()  

功能:擷取目前網格視圖List。

(8) getCurrentImageButtons()

getImageButton(int index)

功能:擷取目前圖檔按鈕list;根據序号擷取圖檔按鈕。

(9)getCurrentImageViews() 

功能:擷取目前ImageView清單。

(10)getCurrentListViews()

功能:擷取目前ListView清單。

(11)getCurrentProgressBars() 

功能:擷取目前進度條資訊。

(12)getCurrentRadioButtons() 

功能:擷取目前單選按鈕清單。

(13)getCurrentScrollViews() 

功能:擷取目前滾動條清單。

(14)getCurrentTextViews(android.view.View parent) 

功能:擷取目前TextView的清單。

(15)getCurrentViews()

getView(int id)  getViews() 

getViews(android.view.View parent)  

功能:擷取目前View,或是所有View的清單。 

(16)getEditText(int index) 

getEditText(java.lang.String text) 

getEditText(java.lang.String text, boolean onlyVisible)  

功能:根據序号,文本擷取EditText的句柄。

(17)getText(int index) 

getText(java.lang.String text) 

getText(java.lang.String text, boolean onlyVisible) 

功能:擷取文本

3.4 Search相關操作

   在要操作的App中查找到相關的元素或是文本,這個是判讀執行結果的時候很重要的一步作,下面我們将常用的查找元素的方法介紹一下:

(1)boolean searchButton (String text [, int minimumNumberOfMatches, boolean onlyVisible])

功能:判斷目前的螢幕中是否能找到指定的button

參數:

text-查找的button的文字

minimumNumberOfMatches-最小指定多少才算是通過,0表示1個或者多個

onlyVisible-隻記錄可見的

傳回:

true-如果找到了該控件

false-如果沒有找到該控件

(2)boolean searchText (String text [, int minimumNumberOfMatches, boolean scroll, boolean onlyVisible])

功能:判斷目前的螢幕中是否能找到指定的text,即文本。

參數:

text-查找的Text的文字

minimumNumberOfMatches-最小指定多少才算是通過,0表示1個或者多個

scroll-是否允許滾動搜尋,true表示支援,false表示隻能在目前螢幕内查找

onlyVisible-隻記錄可見的

傳回:

true-如果找到了該文本

false-如果沒有找到該文本

(3)boolean searchToggleButton (String text [, int minimumNumberOfMatches])

功能:判斷目前的螢幕中是否能找到指定的ToggleButton

參數:text-查找的ToggleButton的文字。

minimumNumberOfMatches-最小指定多少才算是通過,0表示1個或者多個。

傳回:

true-如果找到了該控件

false-如果沒有找到該控件

(4)boolean searchEditText (String text)

判斷目前的螢幕中是否能找到指定的EditText

參數:text-查找的Text的文字

傳回:

true-如果找到了該文本

false-如果沒有找到該文本

3.5 Assert斷言相關操作

   斷言是自動化測試的關鍵,任何測試操作都是由斷言來檢測用例執行的是否正确。好的斷言設定是展現自動化測試人員水準的關鍵,我們還是先了解一下robotium的斷言函數吧!

(1)void assertCurrentActivity (String message, Class activityClass [,boolean isNewInstance])

功能:斷言目前的activity是否是預期的

參數:message-如果運作失敗列印的消息。

activityClass-預期的activity。

isNewInstance-可選項,實際activity是否是預期activity的繼承,如果為true則隻要是繼承關系就通過,false則必須是目前activity

傳回:無

(2)void assertCurrentActivity (String message, String name [,boolean isNewInstance])

功能:斷言目前的activity是否是預期的

參數:

message-如果運作失敗列印的消息

name-預期activity的名字

isNewInstance-可選項,實際activity是否是預期activity的繼承,如果為true則隻要是繼承關系就通過,false則必須是目前activity

傳回:無

(3)void assertMemoryNotLow()

功能:斷言目前系統可用記憶體是否過低,記憶體空間足夠則通過

傳回:無

is方法,雖然不是斷言,但可以當斷言來用。

(4)boolean isCheckBoxChecked (int index | String text)

功能:判斷checkBox是否處于被選中的狀态,可以通過index和text兩種方法定位

參數:

index-檢查的checkBox的索引值,如果隻有一個可用則為0

text-檢查的checkBox的文字,可使用正規表達式

傳回:

true-如果被選中

false-如果沒有被選中

(5)boolean isRadioButtonChecked (int index | String text)

功能:判斷RadioButton是否處于被選中的狀态,可以通過index和text兩種方法定位

參數:

index-檢查的RadioButton的索引值,如果隻有一個可用則為0

text-檢查的RadioButton的文字,可使用正規表達式

傳回:

true-如果被選中

false-如果沒有被選中

(6)boolean isRadioButtonChecked (int index | String text)

功能:判斷RadioButton是否處于被選中的狀态,可以通過index和text兩種方法定位

參數:

index-檢查的RadioButton的索引值,如果隻有一個可用則為0

text-檢查的RadioButton的文字,可使用正規表達式

傳回:

true-如果被選中

false-如果沒有被選中

(7)boolean isToggleButtonChecked (int index | String text)

功能:判斷ToggleButton是否處于被選中的狀态,可以通過index和text兩種方法定位。

參數:

index-檢查的ToggleButton的索引值,如果隻有一個可用則為0。

text-檢查的ToggleButton的文字,可使用正規表達式。

傳回:

true-如果被選中

false-如果沒有被選中

(8)boolean isTextChecked (String text)

功能:判斷text是否處于被選中的狀态,可以通過text定位

參數:text-檢查的text的文字,可使用正規表達式

傳回:

true-如果被選中

false-如果沒有被選中

3.6 本章小結

  本章我們介紹了Robotium API,solo相關函數,這些兒隻是基本的,常用的,但是還有很多相關的函數,随着版本的更新,會增加新的方法。是以建議大家去官方下載下傳最新的API文檔,随時了解最新的函數情況,以便更好的編寫自己的自動化測試代碼。本章我們先了解有哪些兒方法,其功能是什麼,參數有哪些兒,緻于如何使用,下面的章節我們将會慢慢地介紹到。