当前位置: 首页 > 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…...

码住!详解时序数据库不同分类与性能对比

加速发展中的时序数据库,基于不同架构,最流行的类别是? 作为管理工业场景时序数据的新兴数据库品类,时序数据库凭借着对海量时序数据的高效存储、高可扩展性、时序分析计算等特性,一跃成为物联网时代工业领域颇受欢迎的…...

【C/C++】实参与形参的区别

在编程中,形参(形式参数)和实参(实际参数)是函数调用中的两个基本概念,它们在函数定义和函数调用中扮演着不同的角色。 形参(Formal Parameters): 形参是在函数定义时声明…...

---异常---

我们在运行程序时总遇到各种与报错,数组越界,空指针的引用,这些在java中都称为异常 对于不同的错误都具有一个与他对应的异常类来秒描述 这是对于数组越界这个类里有的方法,这些是描述异常的 在java中有一个完整的描述异常的类的…...

python如何终止程序运行

方法1:采用sys.exit(0),正常终止程序,从图中可以看到,程序终止后shell运行不受影响。 方法2:采用os._exit(0)关闭整个shell,从图中看到,调用sys._exit(0)后整个shell都重启了(RESTAR…...

网络:用2个IP地址描述一个连接

用2个IP地址描述一个连接。这是在阅读了《TCP/IP指南》后的感想,与工业标准不同,需注意区分。 如果一个IP地址有48位,则用96位描述一个连接 对于单播,是每个IP分别描述位置。位置包括:邮局编号主机编号,采用…...

Nodejs--构建web应用

构建web应用 将从http模块中的服务器端中的request使劲按开始分析,request时间发生于网络连接建立,客户端想服务器发送报文,服务器解析报文,发现http请求的报文的时候,在出发request事件之前,已经准备好Se…...

C++ 二分查找法【面试】

在C中实现二分查找法是一个常见的面试问题。二分查找法是一种在有序数组中查找特定元素的算法&#xff0c;其时间复杂度为O(log n)。以下是使用C实现二分查找的示例代码&#xff1a; #include <iostream> #include <vector>// 二分查找法函数 int binarySearch(co…...

【Docker】docker-compose常用的构建docker容器的yml文件

docker-compose的简单使用方法&#xff0c;在准备好的文件夹中&#xff0c;mkdir好要挂载的如data或者conf文件夹&#xff0c;及vim docker-compose.yml&#xff0c;将下方的要使用的内容粘贴进去&#xff0c;根据自己需要添加/删除/修改一下。最后在当前文件夹直接后台启动即可…...

华为坤灵路由器初始化开局的注意事项,含NAT配置

坤灵路由器比较坑&#xff0c;无web界面&#xff0c;全程命令行配置&#xff0c;但是版本更新导致和华为企业路由器配置很多不一样的地方&#xff0c;今天介绍下 1、aaa密码复杂度修改&#xff1a; #使能设备对密码进行四选三复杂度检查功能。 <HUAWEI>system-view […...

HTTP!!!

HTTP 一 : 请求报文1.2 : 首行1.3 :请求头(header)1.4 : 空行1.5 : 正文 body 二: 响应报文2.2 : 首行 三 : URL 一 : 请求报文 一个HTTP 请求报文, 分成四个部分 首行 GET https://cn.bing.com/?FORMZ9FD1 HTTP/1.1请求头(header)空行正文(body) 1.2 : 首行 首行又分为三个…...

做背景图获取网站/附子seo教程

【杠精学物理】第267篇原创文章。今天视频要讲的是一个高考中常见的问题——欧姆表的误差分析(当电源电动势降低&#xff0c;内阻增大时&#xff0c;测量值与真实值差异问题)。问题来源于前两天看到学生群里的讨论&#xff0c;感觉同学们越辩越糊涂。在此录制一个视频&#xff…...

石湾做网站公司/怎么注册自己的网站域名

一、监视内存计数器要监视内存不足的状况&#xff0c;请从以下的对象计数器开始&#xff1a;1.内存信息&#xff1a;Memory\ Available BytesMemory\ Pages/secMemory\ Available Bytes如果您怀疑有内存泄露&#xff0c;请监视 Memory\Available Bytes 和 Memory\ Committed By…...

做网站资源/ 今日头条

为什么需要技术KPI 在业务技术团队&#xff0c;有一个不好的趋势&#xff0c;就是团队越来越业务&#xff0c;越来越没有技术味道。每个人都在谈业务&#xff0c;技术大会上在谈业务&#xff0c;周会上在聊业务&#xff0c;周报里写的是业务项目...... 唯独少被谈及的是技术本身…...

wordpress破解授权码/安阳seo

2019独角兽企业重金招聘Python工程师标准>>> 谈谈分类、搜索、推荐与推送。 分类: 你走进一家服装店&#xff0c;看到店里摆满了各种各样的服装。你逛了逛&#xff0c;找到了摆放衬衫的区域&#xff0c;然后比较各种款式、颜色、尺寸&#xff0c;最终找到了一件衬衣…...

设计头条app官方网站/推广用哪个平台效果好

模块化编程对头文件的要求 在模块化编程中,使用头文件是非常常见的做法,头文件通常包含一些常量,宏定义,类型定义,函数声名等信息,可以使代码更加模块化,可读性更高,可维护性更强. 以下是一些模块化编程中应该遵守的偶文件使用规则. 1.只包含需要的头文件,头文件的数量和大小…...

求大神帮忙做网站/搜索引擎营销有哪些

JavaScript For 循环循环在编程中用于自动执行重复性任务。例如&#xff0c;假设我们要打印“ Hello World” 10次。可以如下所示进行&#xff1a;document.write("Hello World");document.write("Hello World");document.write("Hello World");…...