1. 程式人生 > >Appium Android UI自動化簡介 + 實戰

Appium Android UI自動化簡介 + 實戰

指令碼SVN地址:

一、自動化比較適合的場景

1、穩定迭代;

2、迴歸階段;迴歸上一版功能,對新功能不適用。

3、研發驅動的底層程式碼重構;

不適合case:無網、支付、需要資料準備的case

二、Appium簡介

Appium是目前最為強大的自動化測試框架,支援IOS 與Android。

Ø  IOS: 蘋果公司的 UIAutomation。

Ø  Android 4.2+: Google公司的 UiAutomator。

Ø  Android 2.3+: Google公司的 Instrumentation. (Instrumentation 的支援是通過繫結另外一個獨立的Selendroid專案來實現的)。

C/S 架構

Appium的核心是一個遵守REST設計風格的web 伺服器,它接受客戶端的連線,接收客戶端的命令,在手機裝置上執行命令,然後通過HTTP的響應收集命令執行的結果。

支援多語言

三、case編寫思路

過程抽象: 定位-------操作-------等待---------校驗---------定位  

定位方式:

1、文案

2、id

3、xpath

4、類名

5、屬性

6、組合

PS:元素資訊通過UIAutomator Viewer工具檢視:

操作:

1、點選;2、輸入;3、滑動;

等待、判斷頁面元素出現或者消失:

1、 sleep

2、 View或文案顯示

3、 View或文案消失

校驗:

按需求~文案顯示或消失,View顯示或消失,Dialog消失或消失,Toast等等

四、操作步驟

1、JDK、Android、eclipse、appium 等環境安裝

2、啟動appium server端

3、run,舉例說明~~

/**
* example用例
*/
@Test
public void test_000_example() {
Gotocate(1);
Sleep(2000);
//文案
driver.findElementByAndroidUIAutomator("new UiSelector().text(\"餐飲\")").click();
Sleep(2000);
driver.findElementById("com.baidu.lbs.waimai:id/back").click();
Sleep(2000);

//id
driver.findElementById("com.baidu.lbs.waimai:id/left_container").click();
Sleep(2000);
driver.findElementById("com.baidu.lbs.waimai:id/actionbar_left").click();
Sleep(1000);

//xpath
driver.findElementByXPath("//android.widget.LinearLayout/android.widget.LinearLayout[1]/android.widget.RelativeLayout[2]").click();
Sleep(2000);
driver.findElementById("com.baidu.lbs.waimai:id/back").click();
Sleep(2000);
//類名--推薦在View數量小的頁面使用

//滑動--下拉
int width = driver.manage().window().getSize().width;
int height = driver.manage().window().getSize().height;

for(int i = 0; i < 10; i++)
{
driver.swipe(width / 2, height * 3 / 4, width / 2, height / 4, 1000);
}

// WaitForStringShow("餐飲");
// WaitForViewShow("com.baidu.lbs.waimai:id/left_container");
// WaitForViewHide("com.baidu.lbs.waimai:id/left_container");
}

五、失敗case問題定位

三種可能:1、bug—>提icafe;2、指令碼問題->Fix;3、工具問題->尋求其他方式解決;4、環境準備問題(無網、手機無電、有彈窗、目標app後臺未殺死等等)

定位問題方式:

1、檢視失敗case截圖

2、定位程式碼行,查看出錯原因(函式級)

3、結合功能,確定出錯點

特例:crash,無結果收集,需手工復現