测开学习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)
相关推荐
强子感冒了15 小时前
Java IO流学习笔记:从字节流到字符流
java·笔记·学习
BMS小旭15 小时前
CubeMx-DMA
单片机·学习·cubemx·dma
微露清风15 小时前
系统学习C++-第二十一讲-用哈希表封装 myunordered_map 和 myunordered_set
c++·学习·散列表
Chunyyyen15 小时前
【第三十周】OCR学习03
学习·ocr
我的xiaodoujiao17 小时前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 38--Allure 测试报告
python·学习·测试工具·pytest
好奇龙猫1 天前
【AI学习-comfyUI学习-第三十节-第三十一节-FLUX-SD放大工作流+FLUX图生图工作流-各个部分学习】
人工智能·学习
saoys1 天前
Opencv 学习笔记:图像掩膜操作(精准提取指定区域像素)
笔记·opencv·学习
电子小白1231 天前
第13期PCB layout工程师初级培训-1-EDA软件的通用设置
笔记·嵌入式硬件·学习·pcb·layout
唯情于酒1 天前
Docker学习
学习·docker·容器
charlie1145141911 天前
嵌入式现代C++教程: 构造函数优化:初始化列表 vs 成员赋值
开发语言·c++·笔记·学习·嵌入式·现代c++