超詳細Appium測試安卓真機使用JAVA+Maven+TestNG框架實現

前言:前段時間做了selenium的學習和實踐,有點意猶未盡,所以自己就又學了下Appium的使用,因爲這一套東西在16年已經停止維護了,不管實現還是設計上都不是很容易,也踩了很多坑,現在在此記錄下大概過程。後續有時間再完善手冊。
本人比較喜歡前沿的IT技術,暫時用JAVA語言,後期可能會寫一些python的內容,有興趣的小夥伴加我球球:758844861,一起交流學習!

一、準備

  1. 安裝SDK,配置環境變量
    文末下載資源哦

    windows配置環境SDK變量
    我的電腦右鍵->屬性
    在這裏插入圖片描述
    點擊高級系統設置
    在這裏插入圖片描述
    點擊環境變量
    在這裏插入圖片描述
    點擊新建按鈕,變量名輸入ANDROID_HOME,變量值輸入解壓後的SDK目錄
    在這裏插入圖片描述
    path變量加入圖中兩個路徑
    在這裏插入圖片描述
    打開CMD命令,輸入adb後回車 展示如下內容即可
    在這裏插入圖片描述
    在cmd中輸入android並回車,會自動打開android SDK管理器
    在這裏插入圖片描述













  2. 下載Appium服務,並啓動
    https://pan.baidu.com/s/1qGPZewtpzj0RHBbufMoong
    提取碼:2dyh

    雙擊桌面下載好的Appium.exe程序,啓動Appium服務
    在這裏插入圖片描述
    在這裏插入圖片描述
    出現上圖後說明已啓動成功


二、代碼實現

  1. 安裝JDK

    官方下載
    安裝過程比較簡單,這裏就不做詳細的贅述了。
    之後設置環境變量JAVA_HOME
    在這裏插入圖片描述
    編輯Path,添加bin目錄
    在這裏插入圖片描述
    驗證jdk安裝,打開cmd輸入java,回車。出現下面提示後即配置成功
    在這裏插入圖片描述






  2. 設置Capability

// 1.添加配置,創建DesiredCapabilities對象
        DesiredCapabilities des = new DesiredCapabilities();
        // 指定測試設備的名稱
        des.setCapability("deviceName", Utils.getParam("deviceName"));
        // 添加操作系統配置
        des.setCapability("platformName", Utils.getParam("platformName"));
        // 添加操作系統版本設置
        des.setCapability("platformVersion", OpenApp.getVersion());
        // 連接的物理設備的唯一設備標識
        des.setCapability("udid", OpenApp.getDeviceName());
        // 不需要再次安裝
        des.setCapability("noReset", Boolean.valueOf(Utils.getParam("noReset")));
        // 設置apk的安裝路徑
        des.setCapability("app", apkDir.getAbsolutePath());
        //指定想要測試應用的包名
        des.setCapability("appPackage", Utils.getParam("appPackage"));
        // 指定想要測試應用的入口
        des.setCapability("appActivity", Utils.getParam("appActivity"));
        // 支持中文輸入
        des.setCapability("unicodeKeyboard", Boolean.valueOf(Utils.getParam("unicodeKeyboard")));
        des.setCapability("resetKeyboard", Boolean.valueOf(Utils.getParam("resetKeyboard")));
        // 沒有新命令時的超時時間設置
        des.setCapability("newCommandTimeout", Utils.getParam("newCommandTimeout"));
        // 跳過檢查和對應用進行 debug 簽名的步驟
        des.setCapability("nosign", Utils.getParam("nosign"));
        //自動點擊彈窗如:是否允許讀取文件權限
        des.setCapability("autoGrantPermissions",Boolean.valueOf(Utils.getParam("autoGrantPermissions")));
        //安卓版本較新,使用uiautomator2
//        des.setCapability("automationName", Utils.getParam("automationName"));
  1. 指定appium通訊的地址,將相對應的配置傳入到驅動
  2. 運行testNG.xml文件,執行用例(代碼會先檢查手機有沒有連接,沒有連接手機不運行,手機端有沒有安裝要測試的程序,沒有的話先安裝,安裝完成後啓動手機app程序,再執行用例),執行完成後會顯示執行結果,也可以設置失敗截屏,方便我們排查和分析具體失敗原因在這裏插入圖片描述
    看失敗截圖,很顯然現在失敗的原因是因爲網絡原因,ui沒有加載完成,元素未找到
    在這裏插入圖片描述
    代碼中拋異常的地方也是如此
    在這裏插入圖片描述
    SDK下載:https://pan.baidu.com/s/1tJx9I986ZSX7bUbMOAOT6g
    提取碼:8ihz





後面也做了定期執行的程序,包括自動發送郵件,省心。因爲寫的比較倉促,格式和內容都比較簡陋,小白可以做參考(大佬勿噴!)

內容不是很全,持續更新中。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章