AppCrawler
前面踩了超多坑,所以一切都以底下最新的配置為主
Infra
- Appium - 1.22.3
一定要是2.0.0以下(未包含),所以不要用default latest version,可以用CLI也可以用Desktop,因為Desktop Version預設已經no longer supported,所以一定是1.22.3,而CLI安裝就需要指定(以下是已經安裝npm為前提)
1
2$ npm install -g appium@1.22.3 $ npm install -g appium-doctor
- 設定ANDROID_HOME和JAVA_HOME
到Windows環境變數設定
然後去看appium-doctor看necessary的部分是不是都有,一般來說可能會apkanalyzer.bat會沒有,這方面就慢慢到網路上去載android studio下載tools
- AppCrawler - latest (2.7.4) 就直接到github release去下載build好的jar file,不需要看其他教學是用2.4.0或是2.3.1去用stb或是maven build原本的專案 Official Link: https://github.com/seveniruby/AppCrawler/releases/tag/2.7.4
測試前
- app activity name
如果已經在手機安裝好,就直接看dumpsys中該package的main activity是哪一個
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18$ adb shell dumpsys package com.spotify.music | grep -B 2 "android.intent.action.MAIN" -n 279- Action: "com.google.android.meet.ADDONS_SUPPORT" 280- Category: "android.intent.category.DEFAULT" 281: android.intent.action.MAIN: 282- 553d29 com.spotify.music/.SpotifyMainActivity filter 3a3b8ae 283: Action: "android.intent.action.MAIN" -- 286- Category: "android.intent.category.APP_MUSIC" 287- 7cd1a0c com.spotify.music/.main.AppIconEmeraldGreen filter 18bef55 288: Action: "android.intent.action.MAIN" -- 290- Category: "android.intent.category.DEFAULT" 291- c3efd6a com.spotify.music/.MainActivity filter 204625b 292: Action: "android.intent.action.MAIN" -- 307- android.intent.action.MUSIC_PLAYER: 308- 553d29 com.spotify.music/.SpotifyMainActivity filter 3a3b8ae 309: Action: "android.intent.action.MAIN"
另外一種方式就是用apktool反編譯後去看AndroidManifest.xml,一樣就是string search ==android.intent.action.MAIN==,但反編譯後會有一大堆files,可能會很佔空間
1
$ apktool d your_app.apk
- app package name
如果已經安裝了,就直接list package
1
2$ adb shell pm list package | grep spotify package:com.spotify.music
要不然就要用aapt去看
1
2
3$ aapt d badging Spotify.apk | findstr package package: name='com.spotify.music' versionCode='116658084' versionName='8.9.58.572' platformBuildVersionName='14' platformBuildVersionCode='34' compileSdkVersion='34' compileSdkVersionCodename='14' uses-permission: name='com.sec.android.app.clockpackage.permission.READ_ALARM'
- 開啟appium
如何檢視有正確開啟並且有連線到
1
2
3
4
5$ appium [Appium] Welcome to Appium v1.22.3 [Appium] Appium REST http interface listener started on 0.0.0.0:4723 $ curl http://127.0.0.1:4723/wd/hub/status {"value":{"build":{"version":"1.22.3"}},"sessionId":null,"status":0}
實際測試
1 |
|
注意事項
:::danger 基本上這個tool還是依照大量截圖的方式判斷有無換頁,所以依照現在android版本的更新,開發商如果設定成無法截圖的方式,就無法做後續的測試 ::: :::danger 根據以上的步驟,還是非常有可能會遇到問題,我自己在用physical device時,最常遇到java.lang.RuntimeException: Error creating extended parser class: Could not determine whether class ‘org.pegdown.Parser$$parboiled’ has already been loaded,在使用emulator的時候,也會遇到Exception in thread “main” java.awt.image.RasterFormatException: (y + height) is outside of Raster
但通通得不到解決的方式 :::