Shell 是什么呢?很多人认为的Shell就是命令行,一条条能够百度进去的命令行。而简历上你只会写相熟Linux?明天用摩拜App给大家解说下如何应用 Shell 去操作 Android 设施进行自动化测试。
首先咱们须要筹备一部手机或者一个Android模拟器。而后电脑上须要配置Android开发环境。
- 下载 Android SDK:,依照零碎版本下载相应的zip包。请依照本人的零碎按需下载。
- zip包解压缩,会生成一个tools目录。需新建一个sdk目录,而后把tools目录挪动到sdk目录下。
- 设置环境变量,依据新建sdk目录的地位来增加ANDROID_HOME的门路:
- 应用 sdkmanager 下载工具包
Android 调试桥 (adb) 是一个通用命令行工具,其容许您与模拟器实例或连贯的 Android 设施进行通信。它可为各种设施操作提供便当,如装置和调试利用,并提供对 Unix shell(可用来在模拟器或连贯的设施上运行各种命令)的拜访。该工具作为一个客户端-服务器程序,包含三个组件:
- 客户端:该组件发送命令。客户端在开发计算机上运行。您能够通过收回 adb 命令从命令行终端调用客户端。
- 后台程序:该组件在设施上运行命令。后台程序在每个模拟器或设施实例上作为后盾过程运行。
- 服务器:该组件治理客户端和后台程序之间的通信。服务器在开发计算机上作为后盾过程运行。
您能够在 sdk/platform-tools/ 中找到 adb 工具。
咱们通常应用adb devices来查看电脑上连贯的Android设施,应用adb shell关上Android设施上的终端来执行各种命令。应用adb logcat来查看Android设施产生的log信息。
如果不想应用usb线来连贯Android设施,能够应用adb tcpip 端口在Android设施上启动一个指定的端口,而后应用adb connect Android设施ip:端口近程连贯Android设施。
uiautomator 是一个 java 库,蕴含用于创立自定义性能UI测试的API,以及用于主动执行和运行测试的执行引擎。应用uiautomator help能够查看帮忙信息。此处咱们次要应用uiautomator dump来获取以后屏幕的UI层次结构的XML文件。默认存储文件的地位/sdcard/window_dump.xml,也能够指定寄存的地位uiautomator dump /data/local/tmp/ui.xml。
input能够用来模仿各种输出操作,例如:发送文本、点击控件、滑动坐标。应用input能够查看帮忙信息。
- input text abc:输出文本abc
- input tap x坐标 y坐标:点击坐标地位x,y
- input swipe x1坐标 y1坐标 x2坐标 y2坐标:从x1,y1坐标滑动到x2,y2坐标
好了,当咱们配置好Android开发环境,大略理解adb命令的作用之后,同时晓得了Android设施上的uiautomator和input命令后,就开始咱们进入明天的重点了,应用这些命令来组合成自动化的操作。
首先呢,咱们须要找一个咱们练习用的APP,明天咱们抉择的是”摩拜单车“。大家能够在此处下载安装包文件。
下载实现之后,咱们把Android设施应用usb线连贯到电脑。应用adb devices来确认设施是否连贯胜利。
设施曾经连贯胜利,咱们须要把“摩拜单车”利用装置到Android设施上,执行adb install 摩拜单车安装文件,“有些手机权限治理比拟严格,可能须要在手机上点击批准装置此利用。”
进入Android设施的终端下
咱们先关上摩拜单车利用,而后去查看一下页面的源码
执行后会生成一个.xml文件。文件构造如下。每个控件都是由<node></node>组成。
咱们能够依照<node />、</node >构造来进行拆分。应用的命令行为:
点击
依据控件中的bounds="x1,y1"属性来查找控件中心点的 x,y轴坐标,计算方法是(x1+x2)/2,(y1+y2)/2
而后应用下面的办法失去的x,y坐标来点击利用图标input tap 167.5 219。最初写成一个函数,只有传递控件的名字就能点击相应的图标啦。
点击坐标,因为我的手机下面显示了两条对于摩拜利用的坐标,一个是利用图标的,一个是利用文本的,抉择其中一个即可。
wm size命令能够查看屏幕分辨率,而后提取分辨率的数值adb shell wm size |awk -F ' |x' '{print $3,$4} ,这里应用了空格或者x做分隔符。
应用swipe x1 y1 x2 y2进行滑动。例如(上面数值均为随机数值):
从右向左滑动:swipe 0.3 0.8 0.7 0.8
从左向右滑动:swipe 0.7 0.8 0.3 0.8
从上向下滑动:swipe 0.8 0.7 0.8 0.3
从下向上滑动:swipe 0.8 0.3 0.8 0.7
关上APP并停留12秒
整体的运行成果是这样的。
敞开提醒并登录
整体的运行成果是这样的。
输出手机号并登录
整体的运行成果是这样的(上图手机号为随机填写)。
当然,脚本自动化远不止下面这些。你须要晓得更多。比方awk,sed 命令性能深刻理解,adb到底还有什么好用的参数?adb 的运行原理?