首页 > 系统相关 >你以为Shell只是命令行?读懂这篇文,给你的工作赋能

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

时间:2022-08-31 18:44:36浏览次数:103  
标签:这篇文 0.8 Shell adb 坐标 input Android 赋能 设备

⬇️ 点击“下方链接”,提升测试核心竞争力!

>>更多技术文章分享和免费资料领取
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 的运行原理?

想要摩拜自动化脚本的小伙伴,也可以添加小助手微信回复“第十期”进群。更多干货在霍格沃兹测试学院第十期:Linux脚本自动化。

- 今日互动 -

欢迎留言并分享给其他爱学习的测试小伙伴

(别忘了长按添加小助手微信,

回复“第十期”即可入群)

⬇️ 点击“下方链接”,提升测试核心竞争力!

>>更多技术文章分享和免费资料领取

标签:这篇文,0.8,Shell,adb,坐标,input,Android,赋能,设备
From: https://www.cnblogs.com/Tester-muller/p/16644180.html

相关文章

  • 人力资源数字升级,智慧科技赋能企业管理
    随着政府、企业数字化转型升级的持续推进,人力资源的合理配置和效能的提升逐渐成为企业转型升级的关键因素,但是很多公司还停留在传统的人力资源管理手段,在人力资源管理、配......
  • AI智能分析网关包含哪些深度学习算法?如何赋能场景应用?
    AI深度学习技术正在呈现飞速增长的状态,有数据分析预测,到2030年,AI有望实现13万亿美元的市场规模。尤其是伴随着智慧城市、智能交通、工业互联网、生产制造等应用场景对视频......
  • shell脚本学习
    shell学习1、解释器#!/bin/bash#是注释符号#!是特殊的符号2、赋权限chmod700fliename#没有赋执行权限的文件不能用./执行用户,所在组,其他3、特殊符号解......
  • 【Xshell】Xshell设置页面显示最大行数
    问题描述:tail查看日志时,出现log行数很多的时候之前的log被冲掉, 解决方法:设置缓冲区大小 ......
  • [CLI] Power Shell 删除指定驱动
    场景:开内核隔离CORE-ISOLATION时候发现西数驱动造成无法开启内核隔离,需要删除西数驱动 wdcsam 1.RIGHTclickontheSTARTbuttonandselect WINDOWSTERMINAL......
  • shell中字符串和引号("",''.``的区分)
    场景1:变量为字符串类型,引用变量时添加引号等的区分【概念】变量的引用主要包含四类:双引号引用、单引号引用、反引号引用、反斜线引用""双引号......
  • Power Shell
    Code:$Path="C:\Users\xxxx\Downloads\New";$filename="$Path\c.txt";#createfileifitdoesnotexistif(-not(Test-Path$filename)){New-Item-ItemTyp......
  • 反弹shell
    参考文章:https://cloud.tencent.com/developer/article/1818091一些概念原理:反弹shell,就是攻击机监听在某个TCP/UDP端口为服务端,目标机主动发起请求到攻击机监听的端口,......
  • linux shell 中"2>&1"含义
    问题:在编译安卓操作系统的代码时候,一连需要10几个小时,为记录编译过程中间可能出问题,便于调试。需要把编译过程输出到文件。这样也可以设置自动关机了。  解决方案:编......
  • shell编程【一】
    参考网址:【Linux命令大全】[]:https://linux265.com/course/linux-commands.html为什么要学习shell指令?学习shell指令的本身也是在了解Linux系统。shell是开发出来更好地......