Appium Android Ui自動化環境搭建及使用實戰

1.1 Appium簡介

Appium是一個開源的,適用於原生或混合移動應用( hybrid mobile apps )的自動化測試平台,Appium應用WebDriver: JSON wire protocol驅動安卓和iOS移動應用。

  1. 2. 環境配置

(1) 配置java環境。

首先安裝jdk。安裝完成後新建用戶變數,變數名:JAVA_HOME,變數值:C:Program Files (x86)Javajdk1.6.0_43。並在系統變數path中加入C:Program Files (x86)Javajdk1.6.0_43in。

(2) 配置android環境。

新建系統變數,變數名: ANDROID_HOME,變數值:E:softwareandroid-sdk-windows(根據你電腦sdk實際的位置確定)。並在系統變數path中加入%ANDROID_HOME%platform-tools;%ANDROID_HOME% ools(實際上就是把你sdk下的platform-tools以及tools加入到了環境變數中)。

(3) 下載您最熟悉的腳本開發語言並安裝(我用的是Python,你也可以使用JS、Java、php、c和ruby),

Python安裝包下載地址:python.org/download/(建議使用python2.7),安裝完成後在系統變數path中加入C:Python27。

(4)安裝pythonsetuptools

下載地址:cncrk.com/downinfo/2851。安裝完成後:在cmd命令行中進入到C:Python27Scripts目錄,執行:easy_install.exe pip,執行完成後,再執行easy_install pip selenium。

如果想在Eclipse中寫python腳本的話,需要下載pydev插件,下載地址:uzzf.com/soft/51258.htm。下載完成解壓後將這兩個文件夾直接覆蓋到eclipse中。然後打開eclipse,在 Eclipse 菜單欄中,選擇 Window > Preferences >Pydev> Interpreter -(Python),點擊New,然後點擊Broswe,添加之前安裝python後生成的Python.exe(路徑是:C:Python27)。

(5)安裝Appium Client Libraries

Appium 1.0.0以後的版本(含1.0.0)。封裝了webdriver協議,所以使用appium時需要安裝appium的lib,下載地址:pypi.python.org/pypi/Ap.下載完成解壓後,在cmd下進入到E:123Appium-Python-Client-0.10(就是setup.py所在的目錄),並執行python setup.py install。

(6) 下載appium客戶端。

Appium客戶端的下載地址如下(下載zip結尾的安裝包,dmg結尾的是ios的):bitbucket.org/appium/ap

下載完成解壓後,打開appium.exe啟動appium服務,也可以進入到appium的bin目錄(E:softwareAppiumForWindows-1.2.0.1Appium
ode_modulesappiumin)通過node命令打開appium服務。(node appium.js,使用此命令前需要先安裝node,下載地址:nodejs.org/

此時環境已經配置好了,可以運行腳本進行appium的自動化測試了。

2,appium的使用

2.1 對象識別

Appium對象識別採用Selenium的對象識別方式,是其子集,我們可以通過sdk/tools/下的uiautomatorviewer.bat查看元素的類別,目前實現的方式有:name、id、class_name、xpath

對照上邊的截圖,有text的我們可以通過name去識別;有resource-id的我們可以通過id去識別;有class的我們可以通過class_name去識別去找到此元素。

Python方式識別樣例:

1. 通過name找到界面的某個元素,如下例:

txt = driver.find_element_by_name("取消")

txt = driver.find_elements_by_name("取消")

element和elements的區別在於element找到的元素是唯一的,elements找到的元素是這一類,可以理解為一個數組一樣的東西,我們可以通過索引來對它區分。

2. 通過id找到界面的某個元素,如下例:

txt = driver.find_element_by_id("com.me:id/search_news_item_type")

txt = driver.find_elements_by_id("com.me:id/search_news_item_type")

3. 通過id找到界面的某個元素,如下例:

txt = driver.find_element_by_class_name("android.widget.TextView")

txt = driver.find_elements_by_class_name("android.widget.TextView")

二、動作類型及常用方法

1. 點擊 click/tap

點擊界面某個元素:

driver.find_element_by_name("取消").click()

點擊某一坐標:

driver.execute_script("mobile: tap",{"x":220,"y":634})

點擊某個元素:

TouchAction(driver).tap(element).perform()

該動作實現的機制是通過調用外部動作來實現的,以Python為例:

首先需要引入外部TouchAction的動作。

fromappium.webdriver.common.touch_action import TouchAction

2. 滑屏 flick/flick_element

該動作實現的機制是通過調用外部動作來實現的,以Python為例:

首先需要引入外部TouchActions的動作。

from selenium.webdriver.common.touch_actions import TouchActions,之後可通過調用該動作實現長按功能。

TouchActions(driver).flick(x, y).perform()

對整個手機屏幕進行滑動,x表示左右滑動,y表示上下滑動,xy的正負表示滑動方向,x軸的負代表向左滑動,y軸的負代表向上滑動。

TouchActions(driver).flick_element(element, x,y,speed).perform()

針對於具體的控制項進行滑動,x表示左右滑動,y表示上下滑動,xy的正負表示滑動方向,其中speed表示需要滑動的快慢速度。

3. 長按long_press

TouchActions(driver).long_press(element).perform()

該動作實現的機制是通過調用外部動作來實現的,以Python為例:

首先需要引入外部TouchActions的動作,

from selenium.webdriver.common.touch_actions import TouchActions,之後可通過調用該動作實現長按功能。長按某個元素,先使用對象識別的方法找到這個

element,然後可以去長按它。

4. 滑動 swipe

driver.execute_script("mobile: swipe", {startX:497, startY:1824, endX:497, endY:77, tapCount:1, duration:10})

startX,startY是滑動的起始坐標;endX和endY是滑動的結束坐標;touchCount (默認為1): 觸摸數量,即手指的個數;duration是滑動的持續時間,單位s。

5. 獲取文本或者其他控制項上的text方法(.text)

首先我們需要先找到某個element,然後通過.text方法獲取文字,例如:

aa = driver.find_elements_by_class_name("android.widget.TextView")

printaa[0].text

6. 輸入框輸入方法.sendkeys()

button = driver.find_element_by_name("輸入框")

button.sendkeys(u「您要輸入的內容「)

7. 調用系統命令os.system()

os.system("adb shell input text baoma "),我們可以在括弧裡邊寫上我們想調用的外部命令,但是用此方法時,需要先import os。

8. 其他常用動作

(1) 點擊返回鍵

driver.press_keycode(4)

(2) 點擊搜索鍵

driver.press_keycode(84)

(3) 點擊退格鍵

driver.press_keycode(67)

其他按鍵的操作可參見KEYCODE列表。

三、Appium檢查點設置

檢查點的設置在測試中是至關重要的,這是驗證你先前操作的預期合理性和正確性,如果一個功能點的測試腳本不設置檢查點的話,這個測試腳本做的任何操作都是無用功,因此,每一個測試腳本至少要有一個檢查點,來驗證你操作是否達到預期的結果。

驗證方法如下:

assert實際結果==預測結果;

assert true 表示結果正確,測試結果返回OK

assert false 表示結果錯誤,測試結果返回Fail

斷言的方法有很多種這裡不一一介紹,有興趣的可以在網上查找。

舉例:

assert cmp(bb,「文案」)!=0

assert cmp(bb,「文案」)=0

assertEqual(bb,「文案」)

assertNotEqual(bb,「文案」)

四、基本測試demo

Appium支持多語言,根據喜好進行語言選擇:ruby、java、javascript、python、c#、perl、php等。


推薦閱讀:

TAG:自動化測試 | android自動化測試 | 軟體測試和開發 |