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,無結果收集,需手工復現