在AppiumLibrary库中,Open Application关键字用来打开一个待测试移动APP。
示例1:连接本机已经打开的appium服务端,打开一个待测试的安卓APP,指定测试平台为Android,测试的手机deviceName为98YFBP522VSU,需要打开的APP路径为C:/Users/yongqing/Desktop/app-debug.apk,APP的包名为com.example.calculator,启动的appActivity为MainActivity
Open Application http://localhost:4723/wd/hub platformName=Android platformVersion=22 deviceName=98YFBP522VSU app=C:/Users/yongqing/Desktop/app-debug.apk appPackage=com.example.calculator appActivity=MainActivity
执行结果:
执行完成后,在手机上会自动打开指定的APP
Appium端会打印如下运行输出日志:
> info: Found device 98YFBP522VSU
> info: [debug] Setting device id to 98YFBP522VSU
> info: [debug] Waiting for device to be ready and to respond to shell commands (timeout = 5)
> info: [debug] executing cmd: E:\android-sdk-windows\platform-tools\adb.exe -s 98YFBP522VSU wait-for-device
> info: [debug] executing cmd: E:\android-sdk-windows\platform-tools\adb.exe -s 98YFBP522VSU shell "echo 'ready'"
> info: [debug] Starting logcat capture
> info: [debug] Getting device API level
> info: [debug] executing cmd: E:\android-sdk-windows\platform-tools\adb.exe -s 98YFBP522VSU shell "getprop ro.build.version.sdk"
> info: [debug] Device is at API Level 22
> info: Device API level is: 22
> info: [debug] Extracting strings for language: default
> info: [debug] executing cmd: E:\android-sdk-windows\platform-tools\adb.exe -s 98YFBP522VSU shell "getprop persist.sys.language"
> info: [debug] Current device persist.sys.language:
> info: [debug] java -jar "F:\selenium\appium\node_modules\appium\node_modules\appium-adb\jars\appium_apk_tools.jar" "stringsFromApk" "C:\Users\yongqing\Desktop\app-debug.apk" "C:\Users\yongqing\AppData\Local\Temp\com.example.calculator"
> info: [debug] Reading strings from converted strings.json
> info: [debug] Setting language to default
> info: [debug] executing cmd: E:\android-sdk-windows\platform-tools\adb.exe -s 98YFBP522VSU push "C:\\Users\\yongqing\\AppData\\Local\\Temp\\com.example.calculator\\strings.json" /data/local/tmp
> info: [debug] Checking whether aapt is present
> info: [debug] Using aapt from E:\android-sdk-windows\build-tools\24.0.1\aapt.exe
> info: [debug] Retrieving process from manifest.
> info: [debug] executing cmd: E:\android-sdk-windows\build-tools\24.0.1\aapt.exe dump xmltree C:\Users\yongqing\Desktop\app-debug.apk AndroidManifest.xml
> info: [debug] Set app process to: com.example.calculator
> info: [debug] Not uninstalling app since server not started with --full-reset
> info: [debug] Checking app cert for C:\Users\yongqing\Desktop\app-debug.apk.
> info: [debug] executing cmd: java -jar F:\selenium\appium\node_modules\appium\node_modules\appium-adb\jars\verify.jar C:\Users\yongqing\Desktop\app-debug.apk
> info: [debug] App already signed.
> info: [debug] Zip-aligning C:\Users\yongqing\Desktop\app-debug.apk
> info: [debug] Checking whether zipalign is present
> info: [debug] Using zipalign from E:\android-sdk-windows\build-tools\24.0.1\zipalign.exe
> info: [debug] Zip-aligning apk.
> info: [debug] executing cmd: E:\android-sdk-windows\build-tools\24.0.1\zipalign.exe -f 4 C:\Users\yongqing\Desktop\app-debug.apk C:\Users\yongqing\AppData\Local\Temp\117315-3596-1p9lthv\appium.tmp
> info: [debug] MD5 for app is 6192e720723dd8700a640a5fb7c59cd2
> info: [debug] executing cmd: E:\android-sdk-windows\platform-tools\adb.exe -s 98YFBP522VSU shell "ls /data/local/tmp/6192e720723dd8700a640a5fb7c59cd2.apk"
> info: [debug] Getting install status for com.example.calculator
> info: [debug] Getting device API level
> info: [debug] executing cmd: E:\android-sdk-windows\platform-tools\adb.exe -s 98YFBP522VSU shell "getprop ro.build.version.sdk"
> info: [debug] Device is at API Level 22
> info: [debug] executing cmd: E:\android-sdk-windows\platform-tools\adb.exe -s 98YFBP522VSU shell "pm list packages -3 com.example.calculator"
> info: [debug] App is installed
> info: App is already installed, resetting app
> info: [debug] Running fast reset (stop and clear)
> info: [debug] executing cmd: E:\android-sdk-windows\platform-tools\adb.exe -s 98YFBP522VSU shell "am force-stop com.example.calculator"
> info: [debug] executing cmd: E:\android-sdk-windows\platform-tools\adb.exe -s 98YFBP522VSU shell "pm clear com.example.calculator"
> info: [debug] Forwarding system:4724 to device:4724
> info: [debug] executing cmd: E:\android-sdk-windows\platform-tools\adb.exe -s 98YFBP522VSU forward tcp:4724 tcp:4724
> info: [debug] Pushing appium bootstrap to device...
> info: [debug] executing cmd: E:\android-sdk-windows\platform-tools\adb.exe -s 98YFBP522VSU push "F:\\selenium\\appium\\node_modules\\appium\\build\\android_bootstrap\\AppiumBootstrap.jar" /data/local/tmp/
> info: [debug] Pushing settings apk to device...
> info: [debug] executing cmd: E:\android-sdk-windows\platform-tools\adb.exe -s 98YFBP522VSU install "F:\selenium\appium\node_modules\appium\build\settings_apk\settings_apk-debug.apk"
> info: [debug] Pushing unlock helper app to device...
> info: [debug] executing cmd: E:\android-sdk-windows\platform-tools\adb.exe -s 98YFBP522VSU install "F:\selenium\appium\node_modules\appium\build\unlock_apk\unlock_apk-debug.apk"
> info: Starting App
> info: [debug] Attempting to kill all 'uiautomator' processes
> info: [debug] Getting all processes with 'uiautomator'
> info: [debug] executing cmd: E:\android-sdk-windows\platform-tools\adb.exe -s 98YFBP522VSU shell "ps 'uiautomator'"
> info: [debug] No matching processes found
> info: [debug] Running bootstrap
> info: [debug] spawning: E:\android-sdk-windows\platform-tools\adb.exe -s 98YFBP522VSU shell uiautomator runtest AppiumBootstrap.jar -c io.appium.android.bootstrap.Bootstrap -e pkg com.example.calculator -e disableAndroidWatchers false
> info: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: numtests=1
> info: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: stream=
> info: [debug] [UIAUTOMATOR STDOUT] io.appium.android.bootstrap.Bootstrap:
> info: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: id=UiAutomatorTestRunner
> info: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: test=testRunServer
> info: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: class="io".appium.android.bootstrap.Bootstrap
> info: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: current=1
> info: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS_CODE: 1
> info: [debug] [BOOTSTRAP] [debug] Socket opened on port 4724
> info: [debug] [BOOTSTRAP] [debug] Appium Socket Server Ready
> info: [debug] [BOOTSTRAP] [debug] Loading json...
> info: [debug] [BOOTSTRAP] [debug] json loading complete.
> info: [debug] Waking up device if it's not alive
> info: [debug] Pushing command to appium work queue: ["wake",{}]
> info: [debug] [BOOTSTRAP] [debug] Registered crash watchers.
> info: [debug] [BOOTSTRAP] [debug] Client connected
> info: [debug] [BOOTSTRAP] [debug] Got data from client: {"cmd":"action","action":"wake","params":{}}
> info: [debug] [BOOTSTRAP] [debug] Got command of type ACTION
> info: [debug] [BOOTSTRAP] [debug] Got command action: wake
> info: [debug] [BOOTSTRAP] [debug] Returning result: {"status":0,"value":true}
> info: [debug] executing cmd: E:\android-sdk-windows\platform-tools\adb.exe -s 98YFBP522VSU shell "dumpsys window"
> info: [debug] Screen already unlocked, continuing.
> info: [debug] Pushing command to appium work queue: ["getDataDir",{}]
> info: [debug] [BOOTSTRAP] [debug] Got data from client: {"cmd":"action","action":"getDataDir","params":{}}
> info: [debug] [BOOTSTRAP] [debug] Got command of type ACTION
> info: [debug] [BOOTSTRAP] [debug] Got command action: getDataDir
> info: [debug] [BOOTSTRAP] [debug] Returning result: {"status":0,"value":"\/data\/local\/tmp"}
> info: [debug] dataDir set to: /data/local/tmp
> info: [debug] Pushing command to appium work queue: ["compressedLayoutHierarchy",{"compressLayout":false}]
> info: [debug] [BOOTSTRAP] [debug] Got data from client: {"cmd":"action","action":"compressedLayoutHierarchy","params":{"compressLayout":false}}
> info: [debug] [BOOTSTRAP] [debug] Got command of type ACTION
> info: [debug] [BOOTSTRAP] [debug] Got command action: compressedLayoutHierarchy
> info: [debug] [BOOTSTRAP] [debug] Returning result: {"status":0,"value":false}
> info: [debug] Getting device API level
> info: [debug] executing cmd: E:\android-sdk-windows\platform-tools\adb.exe -s 98YFBP522VSU shell "getprop ro.build.version.sdk"
> info: [debug] Device is at API Level 22
> info: [debug] executing cmd: E:\android-sdk-windows\platform-tools\adb.exe -s 98YFBP522VSU shell "am start -S -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -f 0x10200000 -n com.example.calculator/MainActivity"
> info: [debug] We tried to start an activity that doesn't exist, retrying with . prepended to activity
> info: [debug] Getting device API level
> info: [debug] executing cmd: E:\android-sdk-windows\platform-tools\adb.exe -s 98YFBP522VSU shell "getprop ro.build.version.sdk"
> info: [debug] Device is at API Level 22
> info: [debug] executing cmd: E:\android-sdk-windows\platform-tools\adb.exe -s 98YFBP522VSU shell "am start -S -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -f 0x10200000 -n com.example.calculator/.MainActivity"
> info: [debug] Waiting for pkg "com.example.calculator" and activity "MainActivity" to be focused
> info: [debug] Getting focused package and activity
> info: [debug] executing cmd: E:\android-sdk-windows\platform-tools\adb.exe -s 98YFBP522VSU shell "dumpsys window windows"
> info: [debug] executing cmd: E:\android-sdk-windows\platform-tools\adb.exe -s 98YFBP522VSU shell "getprop ro.build.version.release"
> info: [debug] Device is at release version 5.1
> info: [debug] Device launched! Ready for commands
> info: [debug] Setting command timeout to the default of 60 secs
> info: [debug] Appium session started with sessionId 090a2542-63ee-4e1b-912f-32d67922d49e
> info: <-- POST /wd/hub/session 303 13662.949 ms - 74
> info: --> GET /wd/hub/session/090a2542-63ee-4e1b-912f-32d67922d49e {}
> info: [debug] Responding to client with success: {"status":0,"value":{"platform":"LINUX","browserName":"Android","platformVersion":"5.1","webStorageEnabled":false,"takesScreenshot":true,"javascriptEnabled":true,"databaseEnabled":false,"networkConnectionEnabled":true,"locationContextEnabled":false,"warnings":{},"desired":{"deviceName":"98YFBP522VSU","app":"C:/Users/yongqing/Desktop/app-debug.apk","platformVersion":"22","appPackage":"com.example.calculator","platformName":"Android","appActivity":"MainActivity"},"deviceName":"98YFBP522VSU","app":"C:/Users/yongqing/Desktop/app-debug.apk","appPackage":"com.example.calculator","platformName":"Android","appActivity":"MainActivity"},"sessionId":"090a2542-63ee-4e1b-912f-32d67922d49e"}
> info: <-- GET /wd/hub/session/090a2542-63ee-4e1b-912f-32d67922d49e 200 2.395 ms - 686 {"status":0,"value":{"platform":"LINUX","browserName":"Android","platformVersion":"5.1","webStorageEnabled":false,"takesScreenshot":true,"javascriptEnabled":true,"databaseEnabled":false,"networkConnectionEnabled":true,"locationContextEnabled":false,"warnings":{},"desired":{"deviceName":"98YFBP522VSU","app":"C:/Users/yongqing/Desktop/app-debug.apk","platformVersion":"22","appPackage":"com.example.calculator","platformName":"Android","appActivity":"MainActivity"},"deviceName":"98YFBP522VSU","app":"C:/Users/yongqing/Desktop/app-debug.apk","appPackage":"com.example.calculator","platformName":"Android","appActivity":"MainActivity"},"sessionId":"090a2542-63ee-4e1b-912f-32d67922d49e"}
【原文归作者所有,欢迎转载,但是保留版权】