RobotFramework自动化测试框架-移动手机自动化测试Open Application关键字的使用

摘要:
在AppiumLibrary库中,OpenApplication关键字用来打开一个待测试移动APP。

在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

执行结果:

RobotFramework自动化测试框架-移动手机自动化测试Open Application关键字的使用第1张

执行完成后,在手机上会自动打开指定的APP

RobotFramework自动化测试框架-移动手机自动化测试Open Application关键字的使用第2张

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-windowsplatform-toolsadb.exe -s 98YFBP522VSU wait-for-device

> info: [debug] executing cmd: E:android-sdk-windowsplatform-toolsadb.exe -s 98YFBP522VSU shell "echo 'ready'"

> info: [debug] Starting logcat capture

> info: [debug] Getting device API level

> info: [debug] executing cmd: E:android-sdk-windowsplatform-toolsadb.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-windowsplatform-toolsadb.exe -s 98YFBP522VSU shell "getprop persist.sys.language"

> info: [debug] Current device persist.sys.language:

> info: [debug] java -jar "F:seleniumappium ode_modulesappium ode_modulesappium-adbjarsappium_apk_tools.jar" "stringsFromApk" "C:UsersyongqingDesktopapp-debug.apk" "C:UsersyongqingAppDataLocalTempcom.example.calculator"

> info: [debug] Reading strings from converted strings.json

> info: [debug] Setting language to default

> info: [debug] executing cmd: E:android-sdk-windowsplatform-toolsadb.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-windowsuild-tools24.0.1aapt.exe

> info: [debug] Retrieving process from manifest.

> info: [debug] executing cmd: E:android-sdk-windowsuild-tools24.0.1aapt.exe dump xmltree C:UsersyongqingDesktopapp-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:UsersyongqingDesktopapp-debug.apk.

> info: [debug] executing cmd: java -jar F:seleniumappium ode_modulesappium ode_modulesappium-adbjarsverify.jar C:UsersyongqingDesktopapp-debug.apk

> info: [debug] App already signed.

> info: [debug] Zip-aligning C:UsersyongqingDesktopapp-debug.apk

> info: [debug] Checking whether zipalign is present

> info: [debug] Using zipalign from E:android-sdk-windowsuild-tools24.0.1zipalign.exe

> info: [debug] Zip-aligning apk.

> info: [debug] executing cmd: E:android-sdk-windowsuild-tools24.0.1zipalign.exe -f 4 C:UsersyongqingDesktopapp-debug.apk C:UsersyongqingAppDataLocalTemp117315-3596-1p9lthvappium.tmp

> info: [debug] MD5 for app is 6192e720723dd8700a640a5fb7c59cd2

> info: [debug] executing cmd: E:android-sdk-windowsplatform-toolsadb.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-windowsplatform-toolsadb.exe -s 98YFBP522VSU shell "getprop ro.build.version.sdk"

> info: [debug] Device is at API Level 22

> info: [debug] executing cmd: E:android-sdk-windowsplatform-toolsadb.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-windowsplatform-toolsadb.exe -s 98YFBP522VSU shell "am force-stop com.example.calculator"

> info: [debug] executing cmd: E:android-sdk-windowsplatform-toolsadb.exe -s 98YFBP522VSU shell "pm clear com.example.calculator"

> info: [debug] Forwarding system:4724 to device:4724

> info: [debug] executing cmd: E:android-sdk-windowsplatform-toolsadb.exe -s 98YFBP522VSU forward tcp:4724 tcp:4724

> info: [debug] Pushing appium bootstrap to device...

> info: [debug] executing cmd: E:android-sdk-windowsplatform-toolsadb.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-windowsplatform-toolsadb.exe -s 98YFBP522VSU install "F:seleniumappium ode_modulesappiumuildsettings_apksettings_apk-debug.apk"

> info: [debug] Pushing unlock helper app to device...

> info: [debug] executing cmd: E:android-sdk-windowsplatform-toolsadb.exe -s 98YFBP522VSU install "F:seleniumappium ode_modulesappiumuildunlock_apkunlock_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-windowsplatform-toolsadb.exe -s 98YFBP522VSU shell "ps 'uiautomator'"

> info: [debug] No matching processes found

> info: [debug] Running bootstrap

> info: [debug] spawning: E:android-sdk-windowsplatform-toolsadb.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-windowsplatform-toolsadb.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-windowsplatform-toolsadb.exe -s 98YFBP522VSU shell "getprop ro.build.version.sdk"

> info: [debug] Device is at API Level 22

> info: [debug] executing cmd: E:android-sdk-windowsplatform-toolsadb.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-windowsplatform-toolsadb.exe -s 98YFBP522VSU shell "getprop ro.build.version.sdk"

> info: [debug] Device is at API Level 22

> info: [debug] executing cmd: E:android-sdk-windowsplatform-toolsadb.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-windowsplatform-toolsadb.exe -s 98YFBP522VSU shell "dumpsys window windows"

> info: [debug] executing cmd: E:android-sdk-windowsplatform-toolsadb.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"}

【原文归作者所有,欢迎转载,但是保留版权】

RobotFramework自动化测试框架-移动手机自动化测试Open Application关键字的使用第3张

免责声明:文章转载自《RobotFramework自动化测试框架-移动手机自动化测试Open Application关键字的使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇GET和POST请求区别[MySQL] 字符集的选择下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

日志分析查看——grep,sed,sort,awk运用

概述         我们日常应用中都离不开日志。可以说日志是我们在排查问题的一个重要依据。但是日志并不是写了就好了,当你想查看日志的时候,你会发现线上日志堆积的长度已经超越了你一行行浏览的耐性的极限了。于是,很有必要通过一些手段来高效地辅助你来快速的从日志中找到你要找的问题。本文通过一个从项目中衍生出来的例子从查找日志,筛选日志和统计日志3个方面层层递进...

MySql 5.7对json_table()函数的一次变通替代

一、前言 目前项目使用的数据库是Oracle 12c,选择该版本的的主要原因之一是支持json。某日,某变态客户说要转向云平台,而云平台却没有Oracle只有MySql及其它开源产品。在把建库脚本(包括表、视图、索引、触发器、存储过程等等)由oracle版转为mysql版的过程中,最烦人的一个难关是如何实现json_table()函数的替代。 Oracle...

appium从1.9升级到1.10踩的坑

在使用appium的时候,突然弹出窗口询问是否升级到1.10,一时手贱就点击了。升级完成后,用appium打开模拟器以及app是没问题的,但用python测试脚本调用,appium日志提示: [XCUITest] Simulator udid not provided, using desired caps to create a new simulato...

UNIAPP 离线打包 ANDROID APK

需要先安装好环境   Android Studio  HBuilderX    HBuilderX 用于把项目打包成APP资源,Android Studio生成APK. 下载App离线SDK    uniapp官网下载地址:https://nativesupport.dcloud.net.cn/AppDocs/download/android   下载最...

sdk manager闪退

,1确认好sdk环境变量是否都正确 命令行:android 来验证 2确定jdk是否安装正确 命令行:java   和  javac 都没有问题,就将sdk安装版覆盖安装下不要卸载,不然下载的太慢了 出现这个问题的原因:我猜测是先安装的sdk,后安装的jdk,sdk找不到java的路径,导致的这个错误,因为我就是这样的, 为了防止这个错误,大家最好先安装j...

properties文件加载的六种方法

加载项目properties文件的六种方法,其中四种都是通过Properties类加载inputStream读取,后两种通过ResourcesBundle类和其子类来加载 /*** 通过inputStream加载配置文件到properties对象 */ private void getPropertiesByInputStream_On...