目錄
一、appium的Capabilities配置及Appium Inspector安裝
1.1安裝Appium Inspector
1.2Capabilities配置
二、獲取手機(jī)以及app的信息
2.1獲取連接設(shè)計(jì)的配置名稱
2.1.1連接手機(jī)
2.1.2獲取設(shè)備名稱
?2.2利用adb獲取日志找到appPackage和appActivity?
?三、Start Session
3.1 安裝appium-doctor
3.2解決appium-doctor查出的關(guān)鍵警告
3.3解決Start Sesion 失敗的步驟
一、appium的Capabilities配置及Appium Inspector安裝
在上篇文章中我們安裝了appium、python、Android SDK、vscode等軟件,現(xiàn)在我們開(kāi)始下一步,讓appium連上手機(jī)的應(yīng)用
1.1安裝Appium Inspector
雙擊打開(kāi)Appium Server GUI,出現(xiàn)如下頁(yè)面,用默認(rèn)的IP和端口啟動(dòng)服務(wù),點(diǎn)擊startServer
出現(xiàn)如下頁(yè)面,然后點(diǎn)擊這個(gè)搜索按鈕配置Capabilities并啟動(dòng)
可是發(fā)現(xiàn)進(jìn)入了github的頁(yè)面,沒(méi)有出現(xiàn)預(yù)料的配置和啟動(dòng)頁(yè)面
?實(shí)際出現(xiàn)的這個(gè)頁(yè)面
而不是如下這個(gè)頁(yè)面
查了一下原因,是因?yàn)槲覀兊腶ppium-deskop版本是V1.22,而appium-Inspector不再默認(rèn)集成在appium-deskop了,需要單獨(dú)安裝。
既然已經(jīng)到了git的appium-Inspector頁(yè)面,那我們?cè)谙旅嬲业絉elease鏈接
進(jìn)入Release包下載頁(yè)面,選擇我們需要的Windows安裝包,下載安裝。
安裝后出現(xiàn)了Appium Inspector的應(yīng)用,雙擊后出現(xiàn)了久違的頁(yè)面,如下
?Host和端口用默認(rèn)的,剛好能跟appium-server的對(duì)應(yīng)上,Remote Path要改成/wd/hub
1.2Capabilities配置
Capabilities是appium連接的一組配置,配置正確才能正常連接到手機(jī)和要測(cè)試的應(yīng)用,主要配置如下
配置名 | 含義 | 參考值 |
---|---|---|
platformName | 平臺(tái)名稱,我們是安卓的系統(tǒng)所以填 Android | Android |
platfformVersion | 平臺(tái)版本,這個(gè)是安裝系統(tǒng)的版本,我們連真實(shí)手機(jī),在手機(jī)的設(shè)置、關(guān)于手機(jī)里面可以查到Android版本號(hào),我們的版本號(hào)是11 | 11 |
deviceName | 設(shè)備名稱,如何獲取我們?cè)谙乱徽抡f(shuō) | OFYDHUCIPN8PHEBI |
appPackage | APP 的包名;這里我們使用的隨手記,如何獲取app的包名我們?cè)谙乱徽聲?huì)講一個(gè)簡(jiǎn)單的方法 | com.mymoney |
appActivity? | 啟動(dòng)的界面的名字,如何獲取也再下一章中講道 | com.mymoney.biz.main.v12.MainActivityV12 |
二、獲取手機(jī)以及app的信息
2.1獲取連接設(shè)計(jì)的配置名稱
2.1.1連接手機(jī)
首先我們得用USB線連接手機(jī)和電腦,而且手機(jī)要打開(kāi)開(kāi)發(fā)者模式
- 打開(kāi)開(kāi)發(fā)模式
首先打開(kāi)開(kāi)發(fā)者模式,在手機(jī)點(diǎn)擊設(shè)置->關(guān)于手機(jī)->版本信息
連續(xù)點(diǎn)擊版本號(hào)5次,就可以打開(kāi)開(kāi)發(fā)者模式
- USB連接手機(jī)和電腦
USB線一般要用原裝USB充電線才行,買的有的線只支持,用USB線連接電腦和手機(jī),插上線的時(shí)候手機(jī)USB用于選擇 傳輸文件/Androin Auto
這樣手機(jī)連上了
2.1.2獲取設(shè)備名稱
在上一篇中我們已經(jīng)安裝好了Android SDK,并且安裝了Android ADK Platform-tools,現(xiàn)在就要用到它了
- 在命令行輸入 adb devices -l,就列出連接設(shè)備的詳細(xì)信息,其中第一個(gè)就是我們要的deviceName,如果adb命令出不來(lái)或提示非內(nèi)部或外部命令,則是Android SDK沒(méi)安裝正確或者沒(méi)有正確配置環(huán)境變量,解決方法見(jiàn)《APP自動(dòng)化測(cè)試(1)-工具安裝》的Android SDK安裝。如果輸入如下命令沒(méi)有設(shè)備信息,那么應(yīng)該是手機(jī)連接問(wèn)題,確認(rèn)開(kāi)發(fā)者模式是否打開(kāi),連接的USB線是否支持?jǐn)?shù)據(jù)傳輸
?2.2利用adb獲取appPackage和appActivity?
2.2.1利用日志找到appPackage和appActivity?
網(wǎng)上有一些方法可以找到appPackage和appActivity,我們用其中一個(gè)簡(jiǎn)單的方法
- 首先在命令行輸入如下命令,將adb的日志重定向到文件
adb logcat > d:\log.log
- 在手機(jī)上打開(kāi)需要操作的應(yīng)用,我們打開(kāi)隨手記
- 在命令行Ctrl+C停止日志重定向
- 打開(kāi)d:\log.log文件
- 搜索關(guān)鍵字 “Focus entered window”,如下圖前面的com.mymoney就是appPackage,斜杠后面的com.mymoney.biz.main.v12.MainActivityV12就是appActivity?
2.2.2利用adb shell命令
1、打開(kāi)手機(jī)中app的頁(yè)面
2、在命令行輸入如下命令
adb shell
dumpsys activity|grep mFocusedActivity
如果沒(méi)內(nèi)容,那么用如下這條命令
dumpsys activity|grep ?mFocusedWindow
如下圖斜杠前面的是appPackage,斜杠后面的就是appActivity
?
?三、Start Session
都配置后,啟動(dòng)Start Session,然后彈出如下窗口,提示如下錯(cuò)誤,想辦法解決吧,查了下有說(shuō)要打開(kāi)開(kāi)發(fā)者模式如下三個(gè)選項(xiàng)的
Error
Failed to create session. An unknown server-side error occurred while processing the command. Original error: Error executing adbExec. Original error: 'Command ''C:\\Program Files (x86)\\Androidandroid-sdk\\platform-tools\\adb.exe' -P 5037 -s OFYDHUCIPN8PHEBI shell 'settings delete global hidden_api_policy_pre_p_apps;settings delete global hidden_api_policy_p_apps;settings delete global hidden_api_policy'' exited with code 255'; Command output: Exception occurred while executing 'delete': java.lang.SecurityException: Permission denial: writing to settings requires:android.permission.WRITE_SECURE_SETTINGS at com.android.providers.settings.SettingsProvider.enforceWritePermission(SettingsProvider.java:2399) at com.android.providers.settings.SettingsProvider.mutateGlobalSetting(SettingsProvider.java:1428) at com.android.providers.settings.SettingsProvider.mutateGlobalSetting(SettingsProvider.java:1420) at com.android.providers.settings.SettingsProvider.deleteGlobalSetting(SettingsProvider.java:1391) at com.android.providers.settings.SettingsProvider.call(SettingsProvider.java:576) at android.content.ContentProvider.call(ContentProvider.java:2448) at android.content.ContentProvider$Transport.call(ContentProvider.java:517) at com.android.providers.settings.SettingsService$MyShellCommand.deleteForUser(SettingsService.java:399) at com.android.providers.settings.SettingsService$MyShellCommand.onCommand(SettingsService.java:281) at android.os.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:98) at android.os.ShellCommand.exec(ShellCommand.java:44) at com.android.providers.settings.SettingsService.onShellCommand(SettingsService.java:49) at
問(wèn)題定位:
查了下有說(shuō)要打開(kāi)如下三個(gè)選項(xiàng)的,可我的手機(jī)只有一個(gè)USB調(diào)試,應(yīng)該不是這個(gè)問(wèn)題
3.1 安裝appium-doctor
那我們看看是不是appium安裝有問(wèn)題,裝一個(gè)appium-doctor診斷一下,在命令行運(yùn)行“npm install appium-doctor -g”進(jìn)行安裝,看圖安裝了253個(gè)包
在命令行運(yùn)行 appium-doctor,檢查我們appium的安裝情況
3.2解決appium-doctor查出的關(guān)鍵警告
不看不知道,一看嚇一跳,猜測(cè)關(guān)鍵錯(cuò)誤應(yīng)該是這幾個(gè)
WARN AppiumDoctor ?? ANDROID_HOME environment variable is NOT set!
WARN AppiumDoctor ?? JAVA_HOME environment variable is NOT set!
WARN AppiumDoctor ?? adb, android, emulator, apkanalyzer.bat could not be found because ANDROID_HOME or ANDROID_SDK_ROOT is NOT set!
WARN AppiumDoctor ?? Cannot check %JAVA_HOME% requirements since the environment variable itself is not set
看來(lái)是環(huán)境變量沒(méi)有配置ANDROID_HOME和JAVA_HOME,那我們配起來(lái)
?首先我們的Android SDK的目錄是在C:\Program Files (x86)\Androidandroid-sdk,前面安裝的時(shí)候直接把環(huán)境變量配置到了path配置項(xiàng),看來(lái)還不行,需要建ANDROID_HOME和JAVA_HOME的環(huán)境變量,如下圖所示,點(diǎn)新建,然后建兩個(gè)環(huán)境變量
?如果不知道java的安裝目錄,可以在命令行運(yùn)行“java -verbose”,最后一行就是java的jdk安裝目錄了,將此目錄配置問(wèn)JAVA_HOME的路徑
關(guān)閉命令行再執(zhí)行appium-doctor,發(fā)現(xiàn)這幾個(gè)警告都已經(jīng)解決
可是有除了一條新的警告??? apkanalyzer.bat could NOT be found in C:\Program Files (x86)\Androidandroid-sdk!
解決方法:
從Download Android Studio & App Tools - Android Developers?拉到下面找到Command line tools only,如下圖,然后下載Windows的這個(gè)包
解壓后將如下的apkanalyzer.bat復(fù)制到C:\Program Files (x86)\Androidandroid-sdk\platform-tools目錄,然后重啟命令行窗口再運(yùn)行appium-doctor,?? apkanalyzer.bat could NOT be found in C:\Program Files (x86)\Androidandroid-sdk!這條警告解決。
3.3解決Start Sesion 失敗的步驟
再次嘗試啟動(dòng)Start Sesion,
還是報(bào)相同的錯(cuò),如下圖
Failed to create session. An unknown server-side error occurred while processing the command. Original error: Error executing adbExec. Original error: 'Command ''C:\\Program Files (x86)\\Androidandroid-sdk\\platform-tools\\adb.exe' -P 5037 -s OFYDHUCIPN8PHEBI shell 'settings delete global hidden_api_policy_pre_p_apps;settings delete global hidden_api_policy_p_apps;settings delete global hidden_api_policy'' exited with code 255'; Command output: Exception occurred while executing 'delete': java.lang.SecurityException: Permission denial: writing to settings requires:android.permission.WRITE_SECURE_SETTINGS at com.android.providers.settings.SettingsProvider.enforceWritePermission(SettingsProvider.java:2399) at com.android.providers.settings.SettingsProvider.mutateGlobalSetting(SettingsProvider.java:1428) at com.android.providers.settings.SettingsProvider.mutateGlobalSetting(SettingsProvider.java:1420) at com.android.providers.settings.SettingsProvider.deleteGlobalSetting(SettingsProvider.java:1391) at com.android.providers.settings.SettingsProvider.call(SettingsProvider.java:576) at android.content.ContentProvider.call(ContentProvider.java:2448) at android.content.ContentProvider$Transport.call(ContentProvider.java:517) at com.android.providers.settings.SettingsService$MyShellCommand.deleteForUser(SettingsService.java:399) at com.android.providers.settings.SettingsService$MyShellCommand.onCommand(SettingsService.java:281) at android.os.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:98) at android.os.ShellCommand.exec(ShellCommand.java:44) at com.android.providers.settings.SettingsService.onShellCommand(SettingsService.java:49) at?
看來(lái)路子不對(duì),繼續(xù)解決,找打如下一個(gè)解決方式,要在開(kāi)發(fā)者選項(xiàng)中打開(kāi)如下的禁止權(quán)限監(jiān)控配置
設(shè)置后然后再執(zhí)行Start Session,此時(shí)現(xiàn)象不一樣了,會(huì)在手機(jī)上彈出安裝Appium Setting,同意安裝次應(yīng)用,滿懷期待之情,結(jié)果又出現(xiàn)了如下錯(cuò)誤
?Failed to create session. An unknown server-side error occurred while processing the command. Original error: Cannot verify the signature of 'C:\Users\86181\AppData\Local\Temp\2023010-7308-196bghn.o2bj\appium-uiautomator2-server-v4.27.0.apk'. Original error: Could not find 'apksigner.jar' in ["C:\\Program Files (x86)\\Androidandroid-sdk\\platform-tools\\platform-tools\\apksigner.jar","C:\\Program Files (x86)\\Androidandroid-sdk\\platform-tools\\emulator\\apksigner.jar","C:\\Program Files (x86)\\Androidandroid-sdk\\platform-tools\\cmdline-tools\\latest\\bin\\apksigner.jar","C:\\Program Files (x86)\\Androidandroid-sdk\\platform-tools\\tools\\apksigner.jar","C:\\Program Files (x86)\\Androidandroid-sdk\\platform-tools\\tools\\bin\\apksigner.jar","C:\\Program Files (x86)\\Androidandroid-sdk\\platform-tools\\apksigner.jar"]. Do you have Android Build Tools installed at 'C:\Program Files (x86)\Androidandroid-sdk\platform-tools'?
?總算有些進(jìn)展了,出現(xiàn)了不同的錯(cuò)誤,關(guān)鍵信息Could not find 'apksigner.jar' in ["C:\\Program Files (x86)\\Androidandroid-sdk\\platform-tools\\platform-tools\\apksigner.jar",,在Androidandroid-sdk目錄下少了apksigner.jar,那我們網(wǎng)上找到這個(gè)jar包放到此目錄
我放個(gè)資源吧,大家需要的話直接下載,百度搜一下Could not find 'apksigner.jar',有不少解決方法,看到有個(gè)百度網(wǎng)盤(pán)地址,大家可以自行下載
鏈接:https://pan.baidu.com/s/1D7lbJEkFYqA_cMpKg41j7Q
提取碼:5drn
然后再來(lái)執(zhí)行一次Start Session
再次報(bào)錯(cuò)?
Failed to create session. An unknown server-side error occurred while processing the command. Original error: Cannot verify the signature of 'C:\Users\86181\AppData\Local\Temp\2023010-7308-10y6gju.v7xa\appium-uiautomator2-server-v4.27.0.apk'. Original error: The 'java.exe' binary could not be found neither in PATH nor under JAVA_HOME (C:\Program Files (x86)\Common Files\Oracle\Java\javapath\bin)
?好像是我的JAVAHOME的環(huán)境變量設(shè)錯(cuò)了,提示了這個(gè)路徑“C:\Program Files (x86)\Common Files\Oracle\Java\javapath\bin”,這個(gè)是安裝完JDK后自動(dòng)生成環(huán)境變量中Path的路徑,C:\Program Files (x86)\Common Files\Oracle\Java\javapath,而這個(gè)路徑確實(shí)沒(méi)有bin目錄,我們記得JAVA_HOME配置的是C:\Program Files\Java\jre1.8.0_351,我們把path中的路徑改成這個(gè)試試,并將JAVA_HOME也配置到path中
?重啟命令行,運(yùn)行java -version,java環(huán)境變量應(yīng)該沒(méi)問(wèn)題
?再執(zhí)行startSession,發(fā)現(xiàn)還是報(bào)相同的錯(cuò)誤,可我們環(huán)境變量已經(jīng)沒(méi)有C:\Program Files (x86)\Common Files\Oracle\Java\javapath 這個(gè)路徑了,想起我們前面配置Appium的時(shí)候,JAVA_HOME配置的是這個(gè)路徑,如下圖,我們改過(guò)來(lái),改成配置環(huán)境變量中JAVA_HOME的jdk的路徑C:\Program Files\Java\jre1.8.0_351
保存后重啟Appium,重新啟動(dòng),然后再StartSession,然后還是報(bào)相同的錯(cuò),這就尷尬了??!
繼續(xù)解決
繼續(xù)百度,找到一個(gè)方法,說(shuō)是注冊(cè)表的問(wèn)題
方法如下:
JAVA_HOME的環(huán)境變量值根本不是這個(gè)目錄,到CMD命令窗口下,用echo %JAVA_HOME%,也顯示正常,但是java -version時(shí),顯示java的home目錄仍然是C:\Java\jre7,"百撕不得妻姐"之后,去問(wèn)了度娘,原來(lái)JDK如果執(zhí)行過(guò)安裝程序后,會(huì)在
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.7.0_45\MSI\?留下印記,里面有一項(xiàng)INSTALLDIR記錄的還是當(dāng)時(shí)安裝的舊路徑
按照操作,發(fā)現(xiàn)我注冊(cè)表里面的路徑是C:\Program Files\Java\jre1.8.0_351
怎么辦呢? 出絕招,重啟電腦,然后再啟動(dòng)Appium Server GUI,并start server,再啟動(dòng)Appium Inspector,然后 start Session,這次啟動(dòng)很慢,沒(méi)有立刻報(bào)錯(cuò),懷著忐忑的心情等著,居然成功了!
步驟很多,現(xiàn)在也搞不清楚到底是哪里出問(wèn)題,如果大家碰到相同的問(wèn)題,我稍微總結(jié)一下步驟從如下操作
1、安裝?appium-doctor,并在命令行運(yùn)行appium-doctor,解決其中幾個(gè)關(guān)鍵警告,配置ANDROID_HOME和JAVA_HOME兩個(gè)環(huán)境變量,JAVA_HOME配置java的安裝目錄。
? ? ? ? 如果不知道java的安裝目錄,可以在命令行運(yùn)行“java -verbose”,最后一行就是java的jdk安裝目錄了
2、解決apkanalyzer.bat could NOT be found in C:\Program Files (x86)\Androidandroid-sdk!的警告,下載一個(gè)apkanalyzer.bat放到ANDROID_HOME對(duì)應(yīng)的目錄
3、Could not find 'apksigner.jar' in ["C:\\Program Files (x86)\\Androidandroid-sdk\\platform-tools\\platform-tools\\apksigner.jar",,在Androidandroid-sdk目錄下少了apksigner.jar,那我們網(wǎng)上找到這個(gè)jar包放到此目錄,我放了一個(gè)資源大家可以免費(fèi)下載Couldnotfindapksigner.jar解決的資源-Java文檔類資源-CSDN下載
4、手機(jī)開(kāi)發(fā)者選項(xiàng)中,將“禁止權(quán)限監(jiān)控”打開(kāi)
5、appium的JAVA_HOME配置的路徑跟環(huán)境變量一樣
6、重啟電腦
如果上述步驟沒(méi)解決問(wèn)題,就只能根據(jù)第三章?Start Session 一個(gè)一個(gè)試了文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-483098.html
PS:花了好幾個(gè)晚上,終于解決Appium連接手機(jī)應(yīng)用的問(wèn)題了,下面可以繼續(xù)下面的練習(xí)了文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-483098.html
到了這里,關(guān)于APP自動(dòng)化測(cè)試(2)-通過(guò)appium打開(kāi)手機(jī)的應(yīng)用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!