Appium学习日记(四)——搭建Android自动化测试框架以及真机测试

Appium学习日记(四)——搭建Android自动化测试框架以及真机测试

一、安装并配置Appium环境

  • 下载安装appium、Appium Server,、
  • 配置adb,JDK,SDK、AppiumInspector
    学习日记(二)、(三)

二、Appium真机测试

2-1、连接手机(测试机)

  • 通过USB线连接Android手机和电脑,打开手机的开发者模式,开启USB调试模式(方法自行百度)。
  • 打开cmd输入命令adb devices,显示连接手机的udid即为连接成功。
    在这里插入图片描述
  • 输入adb devices后如果List of devices attached下为空,说明手机连接电脑没有成功。可做如下尝试:

  1,拔掉手机重新连接

  2,更换USB线

  3,重启adb。先杀死adb进程adb kill-server,再重启adb start-server

  4,检查adb版本,版本太低则更新

二、获取测试手机及被测app的相应信息(即capability配置内容)

  • platformName,声明被测手机系统是ios还是Android。
  • platformVersion,即测试手机的Android版本号。可在手机设置里面查看,也可以通过命令adb shell getprop ro.build.version.release查看。
  • deviceName,即测试手机的名称。可在手机设置里面查看,也可以通过命令adb devices -l或者adb shell getprop ro.product.model查看,其中model即为连接的测试机的名称。
  • appPackage,即被测app的包名。
  • appActivity,即被测app的launcherActivity。通过命令adb shell dumpsys activity | findstr “mResume”查看(先在手机上打开app,再输入命令)。以今日头条app为例。
  • resetKeyboard 输入法
  • noReset 是否控制清楚session信息 默认为false

在这里插入图片描述如果手机系统在Android 8.1以下,则需使用命令adb shell dumpsys activity | findstr “mFocus”查看。

三、appium启动app

  • 电脑打开appium,点击“Start Server”。
    在这里插入图片描述
  • 出现如下页面,再去打开“Appium Inspector.exe”,启动appium服务。
    在这里插入图片描述
  • 输入第二步获取的配置内容,点击“Start Session”按钮(可先点击3所指的按钮保存,下次直接选择即可)。
    Android独有
描述
appActivityActivity 的名字是指从你的包中所要启动的 Android acticity。他通常需要再前面添加. (例如 使用 .MainActivity 代替 MainActivityMainActivity, .Settings
appPackage运行的 Android 应用的包名com.example.android.myApp, com.android.settings
appWaitActivity用于等待启动的 Android Activity 名称SplashActivity
appWaitPackage用于等待启动的 Android 应用的包com.example.android.myApp, com.android.settings
appWaitDuration用于等待 appWaitActivity 启动的超时时间(以毫秒为单位)(默认值为 20000)30000
deviceReadyTimeout用于等待模拟器或真机准备就绪的超时时间5
androidCoverage用于执行测试的 instrumentation 类。 传送 -w 参数到如下命令 adb shell am instrument -e coverage true -wcom.my.Pkg/com.my.Pkg.instrumentation.MyInstrumentation
enablePerformanceLogging(仅适用于 Chrome 与 webview)开启 Chromedriver 的性能日志。(默认值为 falsetrue, false
androidDeviceReadyTimeout 用于等待设备在启动应用后准备就绪的超时时间。以为单位。例如 30
androidInstallTimeout用于等待在设备中安装 apk 所花费的时间(以毫秒为单位)。默认值为 90000例如 90000
adbPort用来连接 ADB 服务器的端口(默认值为 5037 5037
androidDeviceSocket开发工具的 socket 名称。只有在被测应用是一个使用 Chromium 内核的浏览器时才需要。socket 会被浏览器打开,然后 Chromedriver 把它作为开发者工具来进行连接。例如 chrome_devtools_remote
avd被启动 avd 的名字例如 api19
avdLaunchTimeout用于等待 avd 启动并连接 ADB 的超时时间(以毫秒为单位),默认值为 120000300000
avdReadyTimeout用于等待 avd 完成启动动画的超时时间(以毫秒为单位),默认值为 120000300000
avdArgs启动 avd 时使用的额外参数例如 -netfast
useKeystore使用自定义的 keystore 给 apk 签名,默认值为 falsetrue或false
keystorePath自定义 keystore 的路径, 默认路径为 ~/.android/debug.keystore例如 /path/to.keystore
keystorePassword自定义 keystore 的密码例如 foo
keyAliaskey 的别名例如 androiddebugkey
keyPasswordkey 的密码例如 foo
chromedriverExecutablewebdriver 可执行文件的绝对路径(如果 Chromium 内嵌一个自己提供的 webdriver,则应使用他去替换掉 Appium 自带的 chromedriver)/abs/path/to/webdriver
autoWebviewTimeout用于等待 Webview 上下文(context)激活的时间(以毫秒为单位)。默认值为 2000例如 4
intentAction用于启动 activity 的 intent action(默认值为 android.intent.action.MAIN)例如 android.intent.action.MAIN, android.intent.action.VIEW
intentCategory用于启动 activity 的 intent category。(默认值为 android.intent.category.LAUNCHER)例如 android.intent.category.LAUNCHER, android.intent.category.APP_CONTACTS
intentFlags用于启动 activity 的标识(flags)(默认值为 0x10200000例如 0x10200000
optionalIntentArguments用于启动 activity 的额外 intent 参数。请查看 Intent 参数例如 --esn <EXTRA_KEY>, --ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE>, 等等。
dontStopAppOnReset 在使用 adb 启动应用之前,不要终止被测应用的进程。如果被测应用是被其他钩子(anchor)应用所创建的,设置该参数为 false 后,就允许钩子(anchor)应用的进程在使用 adb 启动被测应用期间仍然存在。换而言之,设置 dontStopAppOnResettrue 后,我们在 adb shell am start 的调用中不需要包含 -S标识(flag)。忽略该 capability 或 设置为 false 的话,就需要包含 -S 标识(flag)。默认值为 falsetrue或false
unicodeKeyboard 使用 Unicode 输入法。 默认值为 falsetrue或false
resetKeyboard在设定了 unicodeKeyboard 关键字的 Unicode 测试结束后,重置输入法到原有状态。如果单独使用,将会被忽略。默认值为 falsetrue或false
noSign跳过检查和对应用进行 debug 签名的步骤。仅适用于 UiAutomator,不适用于 selendroid。 默认值为 falsetrue或false
ignoreUnimportantViews调用 uiautomator 的函数 setCompressedLayoutHierarchy()。由于 Accessibility 命令在忽略部分元素的情况下执行速度会加快,这个关键字能加快测试执行的速度。被忽略的元素将不能够被找到,因此这个关键字同时也被实现成可以随时改变的 设置 ( settings )。 默认值为 falsetrue 或 false
disableAndroidWatchers 禁用 android 监视器(watchers)。监视器用于监视应用程序的无响应状态(anr)和崩溃(crash),禁用会降低 Android 设备或模拟器的 CPU 使用率。该 capability 仅在使用 UiAutomator 时有效,不适用于 selendroid,默认设置为 false true 或 false
chromeOptions 允许对 ChromeDriver 传 chromeOptions 的参数。了解更多信息请查阅 chromeOptionschromeOptions: {args: ['--disable-popup-blocking']}
recreateChromeDriverSessions 当移除非 ChromeDriver webview时,终止掉 ChromeDriver 的 session。默认设置为 falsetrue或false
nativeWebScreenshot 在 web 的上下文(context),使用原生(native)的方法去截图,而不是用过代理的 ChromeDriver。默认值为 falsetrue或false
androidScreenshotPath在设备中截图被保存的目录名。默认值为 /data/local/tmp例如 /sdcard/screenshots/
autoGrantPermissions让Appium自动确定您的应用需要哪些权限,并在安装时将其授予应用。默认设置为 false true或false

在这里插入图片描述 - 此时,如果测试机是第一次连接appium的话,手机上会提示安装两个应用:Appium settings、io.appium.uiautomator2.server,容许安装,且必须安装成功。 - 再次点击上图中4所指的“Start Session”按钮,我们会发现手机上会自动启动今日头条app,且appium会出现如下窗口。 在这里插入图片描述
至此,我们就成功地通过appium启动了测试机上的app。我们可以在这个页面查看app当前页面的元素的属性,如下图,3所指便是弹窗【我知道了】按钮的元素属性,用于后面自动化测试过程中元素定位。
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值