Appium(三):安装appium client、adb命令

Stella981
• 阅读 781

1. 安装appium client

appium client是对webdriver原生api的一些扩展和封装。它可以帮助我们更容易的写出用例,写出更好的用例。

appium client是配合原生的webdriver来使用的,因此二者必须配合使用,缺一不可。

我们使用pip安装“Appium-Python-Client”。

pip install Appium-Python-Client

2. adb命令

2.1 adb的工作原理 

2.1.1 adb的概念

ADB全名Android Debug Bridge,是一个调试工具。

adb是多用途的命令行工具(command line tool)通过它,我们可以与模拟器(emulator)以及安卓设备(android device)进行通信交流。

开发安卓应用的程序员必须要掌握

测试工程师在做安卓应用测试时,会使用到 

2.1.2 adb的构成和工作原理

adb构成:

  1. client端:在电脑上,负责发送adb命令。
  2. daemon守护进程:在手机上,负责接收并执行adb命令。
  3. server端:在电脑上,负责管理Client端和实际的Daemon之间的通信。

adb工作原理:

  1.  client端将命令发送给server端
  2. server端会将命令发送给daemon端
  3. daemon端进行执行
  4. 将执行结果返回给server端
  5. server端将结构再返回client端

2.2 adb常用命令

2.2.1 获取包名和界面名

包名(package):决定程序的唯一性(不是应用的名称)。

界面名(activity):对应着应用程序的某个界面,也叫启动名。

自动化测试需要通过代码的形式告诉手机测试哪个应用程序的哪个界面,所以需要通过这个命令进行获取。

命令格式:

 adb shell dumpsys window windows | findstr mFocusedApp

结果如下:

Appium(三):安装appium client、adb命令

其中包名为:

com.tencent.mobileqq

界面名为:

.activity.FriendProfileCardActivity

2.2.2 文件传输

(1) 发送文件到手机

将手机需要的数据(数据库文件)在电脑上调整好,直接发送给手机。

命令格式: 

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

实例:

将桌面的a.txt发送到手机的sd卡

 adb push C:\Users\ACER\Desktop\a.txt /sdcard

运行结果:

Appium(三):安装appium client、adb命令

这样就代表成功了,只不过我懒得去手机截图发到电脑。

(2) 从手机中拉取文件

将手机产生的文件(数据库文件,日志)拉取到电脑中。

命令格式:

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

实例:

将手机的sd卡的a.txt拉取到桌面

adb pull /sdcard/a.txt C:\Users\ACER\Desktop\ 

运行结果:

Appium(三):安装appium client、adb命令

Appium(三):安装appium client、adb命令

2.2.3 获取app启动时间

如果企业对应用程序的启动速度有要求,则需要使用这个命令进行测试。

命令格式:

adb shell am start -w 包名/启动名 

实例:

启动com.android.settings程序并且进入主界面(.Settings)

adb shell am start -W com.android.settings/.Settings

运行结果:

Appium(三):安装appium client、adb命令

ThisTime:该界面(activity)启动耗时(毫秒)

TotalTime:应用自身启动耗时 =  ThisTime + 应用application等资源启动时间(毫秒)

waitTime:系统启动应用耗时 = 系统资源启动时间(毫秒) 

2.3 adb命令大全

我看到一个CSDN的大佬写的博客,但是我不知道怎么跨网站转载,就这样吧。

《adb命令大全》:https://blog.csdn.net/duoluo9/article/details/79791988

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Easter79 Easter79
2年前
swap空间的增减方法
(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这