Appium Android Ui自動化環境搭建及使用實戰
1.1 Appium簡介
Appium是一個開源的,適用於原生或混合移動應用( hybrid mobile apps )的自動化測試平台,Appium應用WebDriver: JSON wire protocol驅動安卓和iOS移動應用。
- 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安裝包下載地址:http://www.python.org/download/(建議使用python2.7),安裝完成後在系統變數path中加入C:Python27。
(4)安裝pythonsetuptools
下載地址:http://www.cncrk.com/downinfo/28512.html。安裝完成後:在cmd命令行中進入到C:Python27Scripts目錄,執行:easy_install.exe pip,執行完成後,再執行easy_install pip selenium。
如果想在Eclipse中寫python腳本的話,需要下載pydev插件,下載地址:http://www.uzzf.com/soft/51258.html。下載完成解壓後將這兩個文件夾直接覆蓋到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,下載地址:https://pypi.python.org/pypi/Appium-Python-Client.下載完成解壓後,在cmd下進入到E:123Appium-Python-Client-0.10(就是setup.py所在的目錄),並執行python setup.py install。
(6) 下載appium客戶端。
Appium客戶端的下載地址如下(下載zip結尾的安裝包,dmg結尾的是ios的):https://bitbucket.org/appium/appium.app/downloads/
下載完成解壓後,打開appium.exe啟動appium服務,也可以進入到appium的bin目錄(E:softwareAppiumForWindows-1.2.0.1Appium
ode_modulesappiumin)通過node命令打開appium服務。(node appium.js,使用此命令前需要先安裝node,下載地址:http://www.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自動化測試 | 軟體測試和開發 |