当前位置: 首页 > news >正文

【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 mFocusedAppwindows
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

总结

相关文章:

【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其他有关…...

Kotlin 协程:从基础概念到开发实践

前言 上一篇文章 深入理解Android多线程开发:场景应用与解决方案解析 针对Android开发中的多线程应用场景和相应的解决方案做了一个梳理。 总结出了Android开发中多线程编程的几个重要点: 资源复用和优化切线程任务编排并结合示例说明了Kotlin协程在处理上述问题时的优势。 …...

IPNV6

特征——升级点: 1、全球单播地址 ----IPV4地址下的公有地址 V6下没 nat 2、可聚合性 (IANA组织对全球的地址进行合理分配) 3、多宿主——一个物理接口可以同时拥有多个不同网段的IPV6地址;但不同接口不能在同一网段 4、自动配置 1&#xff…...

C++并发之锁(std::lock_guard,std::unique_lock)

目录 1 概述2 使用实例3 接口使用3.1 lock_guard3.2 adopt_lock3.3 defer_lock3.4 try_to_lock3.5 try_lock3.6 release3.7 lock3.8 call_one1 概述 锁保护是通过使互斥对象始终处于锁定状态来管理互斥对象的对象。。   在构造时,互斥对象被调用线程锁定,在析构时,互斥被解…...

FreeRTOS队列(queue)

队列(queue)可以用于"任务到任务"、 "任务到中断"、 "中断到任务"直接传输信息。 1、队列的特性 1、1常规操作 队列的简化操如下图所示,从此图可知: 队列中可以包含若干数据:队列中有若干项,这…...

Azure数据分析Power BI

Azure数据分析Power BI 一、Power BI简介二、Power BI 如何匹配角色三、Power BI 构建基块四、使用 Power BI 服务一、Power BI简介 Microsoft Power BI 是一系列的软件服务、应用和连接器,这些软件服务、应用和连接器协同工作,将不相关的数据源转化为合乎逻辑、视觉上逼真的…...

将 Python3 程序打包成 APK 并运行在 ARM 的 Android 系统中

作为一个开发者,我们经常需要将我们的 Python 程序部署到移动端,以便更好地服务于用户。然而,直接在 Android 系统上运行 Python 程序却存在一定的挑战,因为 Android 系统默认不支持 Python。这篇文章将介绍如何将 Python3 程序打…...

学习记录:VS2019+OpenCV3.4.1实现SURF库函数的调用

最近在学习opencv的使用,在参照书籍《OpenCV3编程入门》实现SURF时遇到不少问题,下面做归纳总结。 错误 LNK2019 无法解析的外部符号 “public: static struct cv::Ptr __cdecl cv::xfeatures2d::SURF::create(double,int,int,bool,bool)” (?createSUR…...

JVM-基础知识

JVM-基础知识 什么是JVM JVM是一种跨语言的平台,任何语言只要能编译成.class文件都可以被JVM运行。JVM只和.class文件有关系,和Java语言没关系。JVM是一种虚拟机规范。 java文件是如何交给JVM执行的 JVM的常见实现 HostStop:Oracle官方另外还有IBM的J9、…...

保密工作应党而生、伴党而行、为党而兴

1.(C )工作应党而生、伴党而行、为党而兴,始终是党和国家的一项重要工作。 A. 农业 B. 国防 C. 保密 D. 文化 2.机关、单位对所产生的国家秘密事项,应当按照国家秘密及其密级的具体范围的规定确定密级,同时确定&#x…...

docker login 报错: http: server gave HTTP response to HTTPS client

环境: 自建 Harbor、Docker 1. 问题分析 # 命令,这里用的是 IP,可以为域名 docker login -u test 172.16.51.182:31120 # 输入密码 Password:# 报错如下: Error response from daemon: Get "https://172.16.51.182:31120/…...

「C系列」C 文件读写

文章目录 一、C 文件读写1. 打开文件2. 写入文件3. 读取文件4. 关闭文件5. 文件读写模式6. 错误处理 二、常见问题1. 文件打开失败2. 文件读写错误3. 文件读写位置4. 缓冲区刷新 三、相关链接 一、C 文件读写 在C语言中,文件读写是通过一系列的标准库函数来完成的&…...

编程中的cos:深度解析与应用探索

编程中的cos:深度解析与应用探索 在编程的广阔天地中,cos这一数学概念扮演着举足轻重的角色。它不仅是数学函数库中的基础元素,更是图形渲染、科学计算以及数据处理等多个领域的核心工具。本文将从四个方面、五个方面、六个方面和七个方面&a…...

计算机毕业设计hadoop+spark+hive知识图谱酒店推荐系统 酒店数据分析可视化大屏 酒店爬虫 高德地图API 酒店预测系统 大数据毕业设计

流程: 1.Python爬取去哪儿网全站旅游数据约10万,存入mysql; 2.使用pandasnumpy/hadoopmapreduce对mysql中旅游数据进行数据清洗,使用高德API计算地理信息,最终转为.csv文件上传hdfs; 3.hive建库建表导入.csv文件作为数据集&#x…...

简单谈谈云服务器私网IP的存在意义及优势

云服务器是基于虚拟化技术的计算资源,可以在云平台上灵活创建和管理。为了满足不同用户的需求,云服务提供商在云服务器上分配了两种类型的IP地址:公网IP和私网IP。其中,私网IP是指在局域网内使用的内部IP地址,无法通过…...

python错题(2)

、...

禁止methtype联网

mathtype断网_如何禁止mathtype联网-CSDN博客https://blog.csdn.net/qq_41060221/article/details/128144783...

【iOS】UI学习——cell的复用及自定义cell

目录 前言cell的复用手动(非注册)自动(注册) 自定义cell总结 前言 Cell复用和自定义Cell是在开发iOS应用时常见的一种优化技巧和定制需求。   Cell复用是UITableView或UICollectionView的一个重要优化机制。当用户滚动这些视图时…...

【详细介绍下PostgreSQL】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…...

基于Matlab停车场车牌识别计时计费管理系统 【W2】

简介 停车场车牌识别计时计费管理系统在现代城市管理中具有重要意义。随着城市化进程的加快和车辆数量的增加,传统的人工管理停车场的方式已经难以满足效率和精确度的要求。因此引入车牌识别技术的自动化管理系统成为一种趋势和解决方案。 背景意义 提升管理效率&a…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

如何在网页里填写 PDF 表格?

有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据&#xff…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...

热烈祝贺埃文科技正式加入可信数据空间发展联盟

2025年4月29日,在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上,可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞,强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...

Windows电脑能装鸿蒙吗_Windows电脑体验鸿蒙电脑操作系统教程

鸿蒙电脑版操作系统来了,很多小伙伴想体验鸿蒙电脑版操作系统,可惜,鸿蒙系统并不支持你正在使用的传统的电脑来安装。不过可以通过可以使用华为官方提供的虚拟机,来体验大家心心念念的鸿蒙系统啦!注意:虚拟…...

作为点的对象CenterNet论文阅读

摘要 检测器将图像中的物体表示为轴对齐的边界框。大多数成功的目标检测方法都会枚举几乎完整的潜在目标位置列表,并对每一个位置进行分类。这种做法既浪费又低效,并且需要额外的后处理。在本文中,我们采取了不同的方法。我们将物体建模为单…...