【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ÿ…...
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中实现二分查找法是一个常见的面试问题。二分查找法是一种在有序数组中查找特定元素的算法,其时间复杂度为O(log n)。以下是使用C实现二分查找的示例代码: #include <iostream> #include <vector>// 二分查找法函数 int binarySearch(co…...
【Docker】docker-compose常用的构建docker容器的yml文件
docker-compose的简单使用方法,在准备好的文件夹中,mkdir好要挂载的如data或者conf文件夹,及vim docker-compose.yml,将下方的要使用的内容粘贴进去,根据自己需要添加/删除/修改一下。最后在当前文件夹直接后台启动即可…...
华为坤灵路由器初始化开局的注意事项,含NAT配置
坤灵路由器比较坑,无web界面,全程命令行配置,但是版本更新导致和华为企业路由器配置很多不一样的地方,今天介绍下 1、aaa密码复杂度修改: #使能设备对密码进行四选三复杂度检查功能。 <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篇原创文章。今天视频要讲的是一个高考中常见的问题——欧姆表的误差分析(当电源电动势降低,内阻增大时,测量值与真实值差异问题)。问题来源于前两天看到学生群里的讨论,感觉同学们越辩越糊涂。在此录制一个视频ÿ…...
石湾做网站公司/怎么注册自己的网站域名
一、监视内存计数器要监视内存不足的状况,请从以下的对象计数器开始:1.内存信息:Memory\ Available BytesMemory\ Pages/secMemory\ Available Bytes如果您怀疑有内存泄露,请监视 Memory\Available Bytes 和 Memory\ Committed By…...
做网站资源/ 今日头条
为什么需要技术KPI 在业务技术团队,有一个不好的趋势,就是团队越来越业务,越来越没有技术味道。每个人都在谈业务,技术大会上在谈业务,周会上在聊业务,周报里写的是业务项目...... 唯独少被谈及的是技术本身…...
wordpress破解授权码/安阳seo
2019独角兽企业重金招聘Python工程师标准>>> 谈谈分类、搜索、推荐与推送。 分类: 你走进一家服装店,看到店里摆满了各种各样的服装。你逛了逛,找到了摆放衬衫的区域,然后比较各种款式、颜色、尺寸,最终找到了一件衬衣…...
设计头条app官方网站/推广用哪个平台效果好
模块化编程对头文件的要求 在模块化编程中,使用头文件是非常常见的做法,头文件通常包含一些常量,宏定义,类型定义,函数声名等信息,可以使代码更加模块化,可读性更高,可维护性更强. 以下是一些模块化编程中应该遵守的偶文件使用规则. 1.只包含需要的头文件,头文件的数量和大小…...
求大神帮忙做网站/搜索引擎营销有哪些
JavaScript For 循环循环在编程中用于自动执行重复性任务。例如,假设我们要打印“ Hello World” 10次。可以如下所示进行:document.write("Hello World");document.write("Hello World");document.write("Hello World");…...