写点什么

你以为 Shell 只是命令行?读懂这篇文,给你的工作赋能

  • 2022 年 9 月 06 日
    北京
  • 本文字数:1865 字

    阅读完需:约 6 分钟

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 文件。文件结构如下。每个控件都是由组成。

我们可以按照、结构来进行拆分。使用的命令行为:

点击根据控件中的 bounds="[x1,y1][x2,y2]"属性来查找控件中心点的 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 的运行原理?


点击下方链接免费领取:性能测试+接口测试+自动化测试+测试开发+测试用例+简历模板+测试文档


http://qrcode.testing-studio.com/f?from=infoQ&url=https://ceshiren.com/t/topic/22265

用户头像

社区:ceshiren.com 微信:ceshiren2021 2019.10.23 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料,实时更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬。

评论

发布
暂无评论
你以为Shell只是命令行?读懂这篇文,给你的工作赋能_霍格沃兹测试开发学社_InfoQ写作社区