测开学习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)
相关推荐
roman_日积跬步-终至千里7 小时前
【强化学习基础(2)】被动强化学习:学习价值函数
学习
逢考必过@k7 小时前
6级550学习ing
学习
陈天伟教授9 小时前
基于学习的人工智能(7)机器学习基本框架
人工智能·学习
Z***G47910 小时前
网络爬虫学习:借助DeepSeek完善爬虫软件,实现模拟鼠标右键点击,将链接另存为本地文件
爬虫·学习·计算机外设
我命由我1234511 小时前
微信开发者工具 - 模拟器分离窗口与关闭分离窗口
前端·javascript·学习·微信小程序·前端框架·html·js
DKPT11 小时前
ZGC和G1收集器相比哪个更好?
java·jvm·笔记·学习·spring
Main. 2412 小时前
从0到1学习Qt -- 常见控件之显示类控件
qt·学习
e***193512 小时前
爬虫学习 01 Web Scraper的使用
前端·爬虫·学习