Android + Appium 自動化測試完整的環境配置及程式碼詳解
環境的的搭建
參考大神部落格:https://www.cnblogs.com/fnng/p/4540731.html
該部落格有一套詳細的入門教程,奈何時間有點久遠有些東西不能用了,但是參考價值還是有滴。
1.安裝各種SDK
jre必須1.8以上 AndroidSDK需要8.0以下的測試,8.0我測試還不行,環境變數如下圖所示
Android的sdk怎麼裝我就懶得說了,基本安卓開發的電腦上都有了,安裝參考傳送門:http://www.testclass.net/appium/appium-base-sdk/
2.安裝node.js
官網也說了,8.11.4LTS相對用的人最多,開發追求的是穩定,所以我下載了這個版本
如果你不會安裝可以找你們公司的H5開發工程師,vue.js 跟 react.js 這些流行的前端框架都有用node
裝完成後的校驗:cmd 輸入npm回車
3.appiumForWindows 安裝
下載地址:https://pan.baidu.com/s/1x8iA_tDCNwLIpOEUQ6BodQ 密碼: 94ig
或者看傳送門:http://www.testclass.net/appium/appium-base-server/
安裝,完成後啟動長這樣:
安裝完成後設定下環境變數,把appium的目錄設定進去
然後檢測安裝是否成功:
特別說明下:只要檢測不成功就是少了環境變數,一個一個檢查對照一下很快就能弄好了
環境變數依次是:ANDROID_HOME JAVA_HOME ADB Emulator 需要說明的是ADB跟Emulator都在android_sdk中,Emulator是安卓模擬器,也需要把它所在的目錄設定為環境變數:
設定好這些,檢測通過了,那麼恭喜你Appium測試的環境算是搭建完成了。
建立模擬器
其實費力去安裝Android-sdk還不如安裝一個Android studio 各種工具齊全,sdk也可以想下什麼下什麼,模擬器建立也很方便
這裡我建立了兩5.1的模擬器
需要說明的是:只有模擬器才會支援X86 正常情況下,應用市場的apk都不會去支援x86的,主要是為了減少apk包的大小【至於為啥會減少,你問你們安卓開發去】,那麼我想用微信這個apk來測試就不能用x86的模擬器了,所以我建立了arm的模擬器
arm核心的模擬器才可以安裝一般世面上的apk,這個時候我就把微信這apk給裝進去了。
這裡我遇到一個問題:我的模擬器網速那真TM慢,網上搜了一波,發現是DNS的問題【如果你也是這樣,可以跟我一樣啟動模擬器】傳送門:https://blog.csdn.net/z860368871/article/details/73285978/
模擬器的名字我shan上面的截圖有了,例如:Tommy5 Tommy55 Tommy8 這些就是模擬器名稱,啟動的時候需要用命令啟動模擬器,如果你網速正常,請跳過這段,正常啟動模擬器即可。
定位控制元件
採用 uiautomatorviewer 定位控制元件,它是android-sdk自帶的東西
如果你開啟不了,說明你的jre還不是1.8,請設定好你的jre環境變數,必須是1.8
到此,控制元件就能正常定位了,你也可以參考傳送門:http://www.testclass.net/appium/appium-base-find-element/
編寫測試指令碼程式碼
這裡我用的是java語言哈
原始碼下載地址:https://download.csdn.net/download/u010381752/10615814
首先下載兩jar包,我原始碼裡面有了 java-client 跟 selenium-server-standalone 這兩jar就是用於測試的主要工具了
啟動Appium-server
程式碼編寫使用的是 idea 2018,這東西網上一大把破解方法,自行那啥,推薦使用這東西畢竟是牌子貨。
【如果真不會裝,請找到你們公司的java後臺開發,他們用的就是這東西】
配置說明:
此外,我簡單封裝了一個工具類,方便使用,寫有註釋,看一眼就能明白,這裡不羅嗦了
右鍵,啟動看下demo效果你應該就能明白了
下面獻上 appium 測試使用的API:
模擬操作類
- driver.runAppInBackground(5); //將當前活躍的應用放在後臺執行
- driver.hideKeyboard(); //隱藏鍵盤
- driver.lockDevice(); //鎖屏
- driver.openNotifications(); //開啟Android的下拉通知欄
- driver.isAppInstalled(“com.example.android.apis”) //判斷應用是否安裝
- driver.installApp(“path/to/my.apk”) //安裝應用
- driver.removeApp(“com.example.android.apis”) //解除安裝應用
- driver.closeApp() //關閉App
- driver.getContextHandles() //可用上下文,context可以理解為可進入的視窗,如果是native則為native_app,如果是webview為對應webview;
- driver.context(); //設定上下文 (context),對hybrid app會用到
- driver.getAppStringMap(); //獲取應用的字串
- driver.pressKeyCode(AndroidKeyCode.HOME); //給裝置傳送一個按鍵事件,所有鍵盤按鍵值可參考AndroidKeyCode類
- driver.pullFile(“Library/AddressBook/AddressBook.sqlitedb”); //從裝置中拉出檔案
- driver.pullFolder(“Library/AddressBook”); //從裝置中拉出資料夾
- driver.PushFile(“/data/local/tmp/file.txt”, “some data for the file”); //推送檔案到裝置中去
- driver.swipe(75, 500, 75, 0, 0.8) //模擬使用者滑動
- driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(1)); //設定等待時間
- driver.navigate().forward(); // 前進
- driver.navigate().back(); // 後退
- driver.navigate().refresh(); // 重新整理
- driver.currentActivity(); //當前activity,可用於斷言跳轉是否正確
- driver.startActivity(appPackage,appActivity); //啟動其他app的activity
- 座標操作,降低適配帶來的不適用:
double Screen_X = driver.Manage().Window.Size.Width;//獲取手機螢幕寬度
double Screen_Y = driver.Manage().Window.Size.Height;//獲取手機螢幕高度
double startX = element.Location.X; //獲取元素的起點座標,即元素最左上角點的橫座標
double startY = element.Location.Y; //獲取元素的起點座標,即元素最左上角點的縱座標
double elementWidth = element.Size.Width; //獲取元素的寬度
double elementHight = element.Size.Height; //獲取元素的寬度
傳送門:https://blog.csdn.net/mmk1992/article/details/56016528
經測試上面這些方法,有些不支援高版本了,比如說滑動就不支援了swipe
這裡還有一個遺留問題:H5-WebView裡面的東西是否也可以定位?搜了一波,發現有兩方法理論上可行,但我感覺還是有點侷限吧,這裡不展開了,大家可以自行百度。
相關文章
- app自動化測試環境配置:adb環境配置、monkey環境配置、appium環境配置大全APP
- 搭建appium+python自動化測試環境APPPython
- 搭建基於C#和 Appium 的 Android自動測試環境C#APPAndroid
- Appium+Python實現iOS自動化測試~環境搭建APPPythoniOS
- Appium+python自動化(一)- 環境搭建—上(超詳解)APPPython
- 🔥Appium+python 自動化(二)- 環境搭建—下(超詳解)APPPython
- 3分鐘瞭解Appium:使用appium做Android手機自動化測試!APPAndroid
- 搭建自動化測試環境
- iOS appium UI 自動化測試配置可控 xpathiOSAPPUI
- java+appium 自動化環境搭建JavaAPP
- 自動化測試 selenium 環境搭建
- Android自動化測試第二篇 Appnium環境搭建AndroidAPP
- 自動化測試 —— Pytest fixture及conftest詳解
- python+selenium UI自動化測試環境搭建及使用PythonUI
- 自動化測試框架AutoTestFramework及軟硬體環境-Alltesting|澤眾雲測試框架Framework
- IOS自動化測試環境搭建(Python & Java)iOSPythonJava
- Appium自動化測試之常用的adb命令APP
- Mac搭建appium環境及python執行程式碼示例MacAPPPython行程
- appium uiautomator 移動端自動化測試工具APPUI
- Jenkins整合appium自動化測試(Windows篇)JenkinsAPPWindows
- Android 自動化測試及效能資料採集的 Python 指令碼AndroidPython指令碼
- Appium自動化(15) - 針對 webview 進行自動化測試APPWebView
- 『與善仁』Appium基礎 — 1、Android系統的測試環境搭建APPAndroid
- 自動化測試之Selenium篇(一):環境搭建
- Web自動化測試 環境搭建(selenium+python)WebPython
- 測試開發之自動化篇-Appium指令碼開發APP指令碼
- APP自動化第一步:Appium環境搭建APP
- Appium+python自動化(十二)- Android UIAutomator終極定位凶器(超詳解)APPPythonAndroidUI
- Web自動化測試 —— 測試環境搭建 (Selenium+Python) Windows篇WebPythonWindows
- 前端自動化UI測試的完整方案前端UI
- 『與善仁』Appium基礎 — 14、Appium測試環境搭建APP
- python+appium+pytest做app自動化測試PythonAPP
- 一隻自動化測試小白的學習記錄——Python+Selenium+pip+webdriver下載安裝 python自動化測試環境配置PythonWeb
- android測試環境搭建Android
- Mac下安裝appium+python+Android sdk 環境完整流程MacAPPPythonAndroid
- Android常用9種自動化測試框架對比,Appium有哪些優勢?Android框架APP
- Ansible自動化配置詳解
- 配置開發環境、生成環境、測試環境開發環境