测开学习DAY37

黑马程序员网课学习(Appium框架)

adb 调试工具

一、adb构成和工作原理

1. adb构成

client端,在电脑上,负责发送adb命令

daemon守护进程,在手机上,负责接收和执行adb命令

server端,在电脑上,负责管理client和daemon之间的通信

2. adb工作原理
  1. client端将命令发送给server端

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

  3. daemon端进行执行

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

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

二、adb获取包名和界面名

1. 包名和界面名的概念

1)包名,对应着应用程序(不是应用的名字)

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

2. 如何获取包名和界面名

mac:adb shell dumpsys window windows | grep mFocusedApp

windows:adb shell dumpsys window windows | findstr mFocusedApp

3. 应用场景

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

三、adb文件传输

1. 从电脑发送文件到手机

如何使用:

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

2.从手机拉取文件到电脑

如何使用:

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

3. 应用场景

如果希望将电脑上的某个文件,发送到手机,使用 adb push 的命令

如果希望将手机上的某个文件,发送到电脑,使用 adb pull 的命令

四、获取app启动时间

1. 如何获取app启动时间

adb shell am start -W 包名/界面名

单位:毫秒

2. 应用场景

1)当企业有需求的时候,使用这个adb命令进行测试

2)如果企业没有特定的时间规范,我们可以参考同类产品,不要超过一倍即可

五、获取手机日志

1. 如何获取手机的日志

adb logcat

2. 应用场景

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

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

六、其他命令

1. 安装app到手机

adb install apk路径

2. 卸载手机上的app

adb uninstall 包名

3. 查看连接设备的数量及设备号

adb devices

4. 进入到android手机系统内部的命令行中

adb shell

5. 关闭adb服务

adb kill-server

6. 开启adb服务

adb start-server

7. 查看adb帮助

adb --help

Appium

一、如何使用appium打开任意一个应用程序

  1. 打开要测试的应用

  2. 使用 adb 命令获取包名和界面名

  3. 修改 desired_caps 字典中的 appPackage 和 appActivity 的参数

python 复制代码
from appium import webdriver
import time

desired_caps = dict()
# 平台的名字,大小写无所谓,不能乱写
desired_caps['platformName'] = 'andRoId'
# 平台的版本,(5.4.3 可以写 5.4.3,5.4,5)
desired_caps['platformVersion'] = '5'
# 设备的名字,随便写,不能乱写
desired_caps['deviceName'] = '1'
# 要打开的应用程序
desired_caps['appPackage'] = 'com.cyanogenmod.filemanager'
# 要打开的界面
desired_caps['appActivity'] = '.activities.NavigationActivity'

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

time.sleep(5)

driver.quit()
  • 如果测试的设备版本号发生变化?

修改 desired_caps 字典中的 platformVersion 的参数

  • 如果测试的设备平台发生变化?

修改 desired_caps 字典中的 platformName 的参数

二、如何通过代码跳转其他的 app

通过driver对象调用 start_activity 的方法

start_activty("包名", "界面名")

python 复制代码
# 启动短信应用程序
driver.start_activity("com.android.mms", ".ui.ConversationList")

三、如何通过代码获取 app 的包名和界面名

  1. 包名:通过driver对象调用 current_package 属性

  2. 界面名:通过driver对象调用 current_activity 属性

python 复制代码
# 输出当前程序的包名
print(driver.current_package)
# 输出当前程序的界面名
print(driver.current_activity)

四、如何通过代码关闭 app 和 驱动对象

  1. 通过driver对象调用 close_app 方法

关闭当前应用程序,不会关闭驱动对象

  1. 通过driver对象调用 quit 方法

关闭驱动对象,同时关闭驱动对象所关联的app

python 复制代码
driver.close_app()
driver.quit()

五、如何安装和卸载应用以及判断应用是否安装

1. 安装应用

install_app("apk路径")

2. 卸载应用

remove_app("包名")

3. 判断某个应用是否已经安装

is_app_installed("包名")

python 复制代码
# 判断安智市场是否已经安装
if driver.is_app_installed("cn.goapk.market"):
     # 如果安装,就要卸载
     driver.remove_app("cn.goapk.market")
else:
     # 如果没有安装,就要安装
     driver.install_app("/Users/Yoson/Desktop/anzhishichang.apk")

六、如何模拟按home键,将应用放置到后台中

通过driver对象调用 background_app 方法

注意:这个方法会自动回到前台

driver.background_app("放置到后台的时间,秒")

python 复制代码
# 进入后台5秒,再回到前台
driver.background_app(5)
相关推荐
西岸行者2 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意2 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码2 天前
嵌入式学习路线
学习
毛小茛3 天前
计算机系统概论——校验码
学习
babe小鑫3 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms3 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下3 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。3 天前
2026.2.25监控学习
学习
im_AMBER3 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J3 天前
从“Hello World“ 开始 C++
c语言·c++·学习