一:APP自動化測試框架比較
跨應用:比如在測試抖音的同時還想測試微信
Hybrid:混合應用程序
二:Appium自動化測試框架
優點:
1:跨架構、支持原生、混合以及web移動應用
2:跨平臺,Android&IOS
3:跨語言,Java、Python、Ruby
下載安裝:
這裏我是通過翻qiang下載的
安裝後打開就是這玩意
當然下載了這個還不行,還要去配置JDK,eclipse,模擬器,Android SDK(我直接用android studio)
這裏可能會存在夜神內置的adb和SDK的adb衝突,可以把SDK的adb替換到夜神中(我沒弄這個)
複製SDK裏面的,改名字成這個,然後黏貼進去
Appium Client下載:https://github.com/appium/java-client
三:Appium組件
Appium Server:實際上是一個web接口服務器,使用node.js實現
Appium GUI:Appium Desktop的前身,目前已經停止維護,封裝的Appium Server是1.4.16(不推薦使用)
Appium Desktop:內嵌Appium Server,提供了GUI界面(就是我上面下載那個,它集成了node.js,所以不用安裝node.js)
Appium Client:客戶端向Appium Server發起請求,可以使用不同語言實現,如Java
四:基本配置
簡單瞭解一下
simple配置(簡單)
advanced配置(高級)
presets(預置配置)
我這配置一個
這裏對安卓測試
運行,因爲appium是工作在本地下的,所以爲127.0.0.1,默認監聽端口默認就行
最後一行說明appium工作已經開啓
五:開啓探測會話
這是啓動測試app要的一些信息,appium主要用來探測app的元素信息
我這用的是夜神模擬器
deviceName 127.0.0.1:62001
所以這樣填,用來找到測試的設備
確認測試的平臺,比如安卓或者IOS
platformName Android
確定測試的app,也就是包
怎麼查詢?可以通過這種方式,進入sdk裏面,路徑(我的是Android studio):E:\android-studio-bundle-145.3276617-windows\sdk\build-tools\24.0.2
選中上面的地址,輸入cmd
輸入這些內容後,比如我是要測試抖音,找到apk拉進去就行了,它會幫你填充apk的路徑,回車
這個就是包名字(其實也可以通過之前adb那種方式去查)
appPackage com.ss.android.ugc.aweme
啓動應用程序,要加這個app的入口,在上面那裏也可以找到,不過我看抖音的時候沒看到
像微信可以看到
也可以用這種方式,模擬器啓動這個app,命令行輸入adb shell dumpsys window w | findstr \/ | findstr name=(方法很多,可以去百度看看)
appActivity com.ss.android.ugc.aweme.splash.SplashActivity
看一下,沒問題就保存,下次就不用再次輸入
這裏可以看到
然後報錯了,大概的意思是說環境變量有問題
看了下日誌:
因爲我這是使用android studio的sdk,之前在配置adb的時候也弄了這個
E:\android-studio-bundle-145.3276617-windows\sdk\platform-tools
在這裏要重新改造一下
在系統變量新增一個環境變量,就是要這個名字,讓appium能識別(如果java識別不了,也可以改成JAVA_HOME這個名字)
在path加上這兩個
%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools;
在這裏我怕adb不行了,測試一下有沒有問題,發現沒問題
重啓一下appium,發現識別成功
回到之前運行,發現又報錯了
看日誌出現這個
error: pkg: /data/local/tmp/appium_cache/7280876e456c1bb793964772b5bcb2ac96ecfcc4.apk
Trying to proxy a session command without session id
Could not find 'apksigner.jar'
安裝這個後,我發現這個問題沒了:Could not find 'apksigner.jar'
於是我看最新的日誌
[2020-06-17 03:18:09][ADB] Install command stdout: pkg: /data/local/tmp/appium_cache/7280876e456c1bb793964772b5bcb2ac96ecfcc4.apk
[2020-06-17 03:18:09][ADB] Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
[2020-06-17 03:18:09][UiAutomator2] Did not get confirmation UiAutomator2 deleteSession worked; Error was: UnknownError: An unknown server-side error occurred while processing the command. Original error: Trying to proxy a session command without session id
[2020-06-17 03:18:09][ADB] Running 'E:\android-studio-bundle-145.3276617-windows\sdk\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:62001 shell am force-stop com.tencent.mm'
Encountered internal error running command: Error: pkg: /data/local/tmp/appium_cache/7280876e456c1bb793964772b5bcb2ac96ecfcc4.apk
[2020-06-17 03:18:10][MJSONWP] Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
想了一下,跑去試試是不是SDK的問題,於是我更新了這兩個
後面發現同樣的問題還是存在,於是我查了很久,忽然想到我這個appium軟件是最新版本的,於是我想是不是有變動
於是我就這個方向翻牆去查(太難了,英文不過關的我),終於被我查到了問題
我夜神模擬器的安卓版本是5.1.1,一般是使用UIAutomator1的,比較新的一些安卓系統可能使用的是UIAutomator2,我想是不是1.7以後版本的appium默認是使用了UIAutomator2,於是我加了這個配置
automationName UiAutomator1
然後運行,發現報錯不一樣了,現在是報這個錯誤
Encountered internal error running command: Error: Could not find package com.tencent.mm on the device
百度翻譯了一下,應該是我微信的包沒有安裝到模擬器上,可以直接拉包進模擬器,就能安裝了
但不知道爲毛,我的微信安裝不了,於是我用adb命令安裝,也安裝不了
於是算了,裝了個抖音去試試,運行是沒問題的了(能調起抖音app來運行)
看了一下日誌也沒問題
附加:在踩坑過程中也用了這些去查看,當然也不知道有沒有前置作用
(1)安裝appium-doctor
它是用來檢測環境的,使用 npm --registry http://registry.npm.taobao.org install appium-doctor -g
看着好像沒問題
(2)Python庫安裝
pip install appium-python-client
驗證一下
也可以直接在pycharm工具裏面輸入from app(這時候有提示,說明安裝成功)