【APP移动端自动化测试】第一节.环境配置和adb调试工具

文章目录

  • 前言
  • 一、Java环境搭建
  • 二、AndroidSDK环境搭建
  • 三、Android模拟器安装
  • 四、adb调试工具基本介绍
  •       4.1 adb构成和基本原理
  •       4.2 adb获取包名,界面名
  •       4.3 adb文件传输
  •       4.4 adb获取app启动时间
  •       4.5 adb获取手机日志
  •       4.6 adb其他有关命令
  • 总结


前言


一、Java环境搭建

之前文章已经介绍过,此处就不赘述了。


二、AndroidSDK环境搭建

Android sdk提供Android API库和开发工具构建,测试和调试应用程序使用

下载android sdk

https://dl.google.com/android/android-sdk_r24.4.1-windows.zip;

(也可以直接安装 android studio 开发工具,内部集成了android-sdk)

解压后运行文件夹中 SDK Manager.exe 安装sdk tools、sdk plaform-tools、sdk build-tools


配置环境变量

新建ANDROID_HOME,值为sdk的目录。

把下面三个路径,加入path

加入path,确定,关闭环境变量设置。

验证,命令行输入adb,只要看到版本号即可。


三、Android模拟器安装

首先需要让系统找到模拟器上手机设备。如何让系统找到模拟器?

运行adb devices可以看到此时没有设备。 

把android sdk文件夹下platform tools下的adb.exe复制到夜神的bin文件夹下,并改名为nox_adb.exe,然后重启夜神。

再用adb devices 检测到的就是夜神模拟器的设备


四、adb调试工具基本介绍

4.1 adb构成和基本原理

(1)简介:

ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具。安卓调试桥 (Android Debug Bridge, adb),是一种可以用来操作手机设备或模拟器的命令行工具。

(2)abd构成:

  • client端,在电脑上,负责发送adb命令
  • daemon守护进程,在手机上,负责接收和执行adb命令
  • server端,在电脑上,负责管理client和daemon之间的通信adb工作原理

(3)adb工作原理:

1. client端将命令发送给server端

2. server端会将命令发送给daemon端

3. daemon端进行执行

4.将执行结果,返回给server端

5. server端将结果再返回给client端


4.2 adb获取包名,界面名

(1)包名和界面名的概念

  • 包名,对应着应用程序
  • 界面名,对应着应用程序的某个界面,也叫做启动名

(2)如何获取包名和界面名

mac
adb she17 dumpsys window windows / grep mFocusedApp

windows
adb she11 dumpsys window windows / findstr mFocusedApp

(3)应用场景

后期,我们告诉计算机到底打开哪一个应用和哪一个界面,必须使用的一个写代码的参数   


示例

作用:获取设置程序的包名和界面名

1.先在模拟器或手机中打开《设置》应用程序

2.输入对应平台的命令

图示说明:

结果如下:

mFocusedApp=AppwindowToken{53309da token=Token{2e2fa785ActivityRecord{2928d4fc u0 com.android.settings /.settings t1127}33

其中:

  • 包名为:com.android.settings
  • 界面名为:.settings

4.3 adb文件传输

两种情况:

1.发送文件到手机

2.从手机中拉取文件


(1)发送文件到手机

1.应用场景

将手机需要的数据(数据库文件)在电脑上调整好,直接发送给手机

2.命令格式

adb push电脑的文件路径手机的文件夹路径

3.示例

作用:

将桌面的a.txt 发送到手机的sd 卡

代码实现:

adb push C: \users\hm\Desktop\a.txt/sdcard


(1)从手机拉取文件

1.应用场景

将手机产生的文件(数据库文件,日志文件)拉取到电脑中

2.命令格式

adb pu11   手机的文件路径   电脑的文件夹路径

3.示例

作用:

将手机的sd卡的a.txt拉取到桌面

代码实现:

adb pull /sdcard/a.txt c: \users \hm\Desktop


图示实现:


4.4 adb获取app启动时间

(1).应用场景

1.如果企业对应用程序的启动速度有要求,则需要使用这个命令进行测试

2.测试标准:参照同类软件,启动时间不能超出一倍即可

(2).命令格式

adb she11 am start -w  包名/启动名

3.示例

作用:

启动com.android.settings程序并且进入主界面( .settings )

代码实现:

adb she1l am start -w com.android.settings / .settings

图示说明:

解释:
1. ThisTime:该界面( activity)启动耗时(毫秒)

2.TotalTime:应用自身启动耗时= ThisTime+应用application等资源启动时间

3. waitTime:系统启动应用耗时=TotalTime+系统资源启动时间(毫秒)

图示解析:


4.5 adb获取手机日志

(1)应用场景:

将bug的日志信息发送给开发人员,便于开发人员定位bug使用步骤。

当成发生崩溃的时候,可以将日志信息发送给开发人员,便于其快速的定位bug。

关于崩溃的处理,需要找日志中的“at”前面,的第一个字符是E的就是错误信息。

(2)使用步骤:

1.打开需要测试的应用程序

2.找到触发bug的位置

3.使用查看日志命令

4.触发bug

5.获取日志信息命令格式

(3)命令格式:

adb logcat

(4)示例:

1.安装bug.apk

2.打开《有bug的程序》应用程序

3.命令行中输入adb logcat命令

4.点击登录按钮

5.获取日志信息


4.6 adb其他有关命令

命令1:安装app到手机

代码:adb install 路径/xx. apk


命令2:卸载手机上的app,需要指定包名

代码:adb install 路径/xx. apk


命令3:获取当前电脑已经连接设备和对应的设备号

代码:adb devices


命令4:进入到安卓手机内部的linux系统命令行中

代码:adb she11


命令5:启动adb 服务端,出bug时使用可以重启服务器,先关闭再启动

代码:adb start-server


命令6:停止adb服务端,出bug时使用可以重启服务器,先关闭再启动

代码:adb kill-server


命令7:查看adb帮助,命令记不清楚时有用

代码:adb --help

总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/704190.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

空间搜索geohash概述;redis的geo命令

概述 通常在一些2C业务场景中会根据用户的位置来搜索一些内容。通常提供位置搜索的都是直接通过redis/mongodb/es等中间件实现的。 但是这些中间件又是怎么实现位置搜索的呢; 查了一番资料,发现背后一个公共的算法Geohash。 搜索的时候可以根据距离对…

「C系列」C 指针及其应用案例

文章目录 一、C 指针1. 指针的定义2. 指针的初始化3. 指针的解引用4. 指针的运算5. 动态内存分配6. 指针的NULL初始化7. 指针作为函数参数和返回值8. 指针数组和数组指针9. 多级指针 二、C语言中有哪些内置的指针操作符三、常见应用案例1. 交换两个变量的值2. 数组与指针3. 字符…

SwiftUI中自定义Shape与AnimateableData的使用

上一篇文章主要介绍了一下在SwiftUI中如何自定义Shape,本篇文章主要介绍Shape中的 一个关键的属性AnimatableData,它用于定义可以被动画化的数据。通过实现 Animatable 协议,可以让自定义视图或图形响应动画变化。 AnimatableData 是 Animata…

flutter 环境搭建(windows)(先装 jdk 建议1.8起步)

1:先从 官网 下载一个合适版本的SDK 2:下载完成之后 解压到一个合适的盘符下面(本文在 D 盘 3.10.0版本) 3;双击 flutter_console.bat文件可以看到一些基本信息 4:配置环境 1.添加用户变量 FLUTTER_STORAGE…

DSSA(Domain-Specific Software Architecture)方法论

DSSA(Domain-Specific Software Architecture)方法论是一种针对特定问题领域的软件架构设计方法。在软件开发中,有些问题在特定领域是共通的,这些问题可以通过通用的抽象和解决方案来处理。DSSA方法论正是利用这一特点&#xff0c…

Vue3、Element Plus使用v-for循环el-form表单进行校验

在开发中遇到了这样一个需求 有一个form是通过v-for生成出来的&#xff0c;并且数量不确定&#xff0c;每个表单中的字段都需要做校验&#xff0c;就将自己的解决方法记录了下来。 完整代码如下 <template><div class"for-form"><el-button type&quo…

Class-Aware Self-Distillation for Remote SensingImage Scene Classification

这篇文章提出了一种新的蒸馏方式&#xff0c;由于遥感场景图像具有类间相似性和类内多样性的特点&#xff0c;这篇文章试图解决这个问题。通过三个共享权重的分支&#xff0c;同时输入三张图片&#xff0c;其中两张类别相同的图片&#xff0c;一张类别不同但地物特征相似的图片…

AcWing 477:神经网络 ← 拓扑排序+链式前向星

【题目来源】https://www.acwing.com/problem/content/479/【题目描述】 人工神经网络&#xff08;Artificial Neural Network&#xff09;是一种新兴的具有自我学习能力的计算系统&#xff0c;在模式识别、函数逼近及贷款风险评估等诸多领域有广泛的应用。 对神经网络的研究…

179.二叉树:合并二叉树(力扣)

代码解决 /*** 二叉树节点的定义。* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, Tre…

记录在京东云ICP备案全流程,适用于网站备案和APP备案

记录一下在京东云ICP备案全流程&#xff0c;本文适用用于网站域名备案和APP备案&#xff0c;域名备案和APP备案其实差不多&#xff0c;就是服务类型选择网站或APP的区别&#xff0c;阿腾云整理详细京东云服务器备案全流程&#xff0c;大家可以收藏下&#xff0c;非常详细的备案…

爬虫相关面试题

一&#xff0c;如何抓取一个网站&#xff1f; 1&#xff0c;去百度和谷歌搜一下这个网站有没有分享要爬取数据的API 2, 看看电脑网页有没有所需要的数据&#xff0c;写代码测试调查好不好拿&#xff0c;如果好拿直接开始爬取 3&#xff0c;看看有没有电脑能打开的手机网页&a…

Unity与Js通信交互

目录 1.Js给Unity传递消息 2.Unity给Js传递消息 简介: Unity 与 JavaScript 通信交互是指在 Unity 项目中实现与 JavaScript 代码进行数据交换和功能调用的过程。 在 Unity 中&#xff0c;可以通过特定的接口和技术来与外部的 JavaScript 环境进行连接。这使得 Unity 能够利…

怎么修改Visual Studio Code中现在github账号

git config --global user.name “你的用户名” git config --global user.email “你的邮箱” git config --global --list git push -u origin your_branch_name git remote add origin

鸿蒙轻内核A核源码分析系列五 虚实映射(2)虚实映射初始化

2、 虚拟映射初始化 在文件kernel/base/vm/los_vm_boot.c中的系统内存初始化函数OsSysMemInit()会调用虚实映射初始化函数OsInitMappingStartUp()。该函数代码定义在文件arch/arm/arm/src/los_arch_mmu.c&#xff0c;代码如下。⑴处函数使TLB失效&#xff0c;清理虚实映射缓存…

基于STM32的简易智能家居设计(嘉立创支持)

一、项目功能概述 1、OLED显示温湿度、空气质量&#xff0c;并可以设置报警阈值 2、设置4个继电器开关&#xff0c;分别控制灯、空调、开关、风扇 3、设计一个离线语音识别系统&#xff0c;可以语音控制打开指定开关、并且可以显示识别命令词到OLED屏上 4、OLED实时显示&#…

在k8s中部署Elasticsearch高可用集群详细教程

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《洞察之眼&#xff1a;ELK监控与可视化》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、Elasticsearch简介 2、为什么在k8s中部署elasti…

计算机毕业三年的我,辞职两次后找不到工作回家,此时是真的羡慕有手艺在手的人

栀子花香&#xff0c;弥漫在空气中&#xff0c;却掩盖不了内心的苦涩。 半年&#xff0c;两份工作&#xff0c;两次裸辞&#xff0c;我&#xff0c;又成了一个身无分文的“废人”。 曾经&#xff0c;我也是人人羡慕的互联网人&#xff0c;月薪6K&#xff0c;过着“955”的“神…

LeetCode | 27.移除元素

这道题的思路和26题一模一样&#xff0c;由于要在元素组中修改&#xff0c;我们可以设置一个index表示目前要修改原数组的第几位&#xff0c;由于遍历&#xff0c;访问原数组永远会在我们修改数组之前&#xff0c;所以不用担心数据丢失的问题&#xff0c;一次遍历数组&#xff…

别再忽视数组排序的重要性了

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

JavaSE---类和对象(上)

1. 面向对象的初步认知 1.1 什么是面向对象 Java是一门纯面向对象的语言(Object Oriented Program&#xff0c;简称OOP)&#xff0c;在面向对象的世界里&#xff0c;一切皆为对象。 面向对象是解决问题的一种思想&#xff0c;主要依靠对象之间的交互完成一件事情。用面向对象…