【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…...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...
Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...
热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁
赛门铁克威胁猎手团队最新报告披露,数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据,严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能,但SEMR…...
生信服务器 | 做生信为什么推荐使用Linux服务器?
原文链接:生信服务器 | 做生信为什么推荐使用Linux服务器? 一、 做生信为什么推荐使用服务器? 大家好,我是小杜。在做生信分析的同学,或是将接触学习生信分析的同学,<font style"color:rgb(53, 1…...
云原生技术驱动 IT 架构现代化转型:企业实践与落地策略全解
📝个人主页🌹:慌ZHANG-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、背景:IT 架构演进的战略拐点 过去十年,企业 IT 架构经历了从传统集中式架构到分布式架构的转型。进入云计算…...







