Appium python自动化测试系列之Android知识讲解(三)
3.1 ADB工具讲解
3.1.1 什么是ADB呢?
我们不去解释官方语言的翻译,给大家说一个通熟易懂的说法,ADB我理解为他就是电脑和手机连接的桥梁。此连接不是充电的连接,大家不要混淆,说他是一个调试工具,可能更贴切。
3.1.2 ADB有什么作用呢?
刚说的他是电脑和手机连接的桥梁,我们可以通过ADB操作手机,可以管理手机。可能你说这里手机包括模拟器嘛?答案是肯定的。
3.1.3 如何使用ADB?
我们在终端直接输入adb的命令就可以执行相应的操作。在测试过程中我们最常用的就是查看已经连接的android设备有哪些。大概整理了一下常用的:
1、adb devices 查看已经连接的android设备
2、adb install Baidu.apk 这个是安装应用,如果我们当前电脑连接了多台android机器时,使用这个命令是不行的,这个时候我们需要指定设备:adb -s install baidu.apk,这里的-s是指设备的信息,就是通过adb devices 查看的设备信息。
3、adb uninstall Baidu.apk 这个是卸载应用
4、adb connect 127.0.0.1:62001这个命令大家一定要记住,连接指定设备信息,这里的设备是指虚拟机,如果说我们使用的虚拟机不是官方的,是国产的天天、夜游神等等虚拟机你需要使用connect 命令连接,这里的端口号不一定是6555,这个需要根据你的模拟器的品牌来决定。刚学如果搞不定还是建议用真机,只需要打开adb调试就好。
3.2 UIAutomatorviewer工具讲解
UIAutomatorviewer是一个定位工具,无论是在windows下还是mac下都可以用时,他在你androidsdk目录下的tools目录下,我只是按照我的给大家讲的,下面给大家配置一张图片,更加直观:

可以看一下在我的目录,在最后的tools目录下有一个uiautomatorviewer文件,我们之需要在当前目录直接敲击该目录命令就会打开我们的定位工具界面,下面我们直接看我们的效果图:

在这里需要记住一个问题,因为我用的是国产的模拟器,所以在启动模拟器后需要adb connect 127.0.0.1:xxxx,但是在这个之前你还是需要将模拟器里面的开发者选项打开的,因为只有建立连接后才能够使用定位工具,不然会报错。
我们打开定位工具、模拟器后直接点击定位工具左上角红色圈出的按钮(获取当前屏幕)uiautomatorviewer会自动获取到当前模拟器所打开的页面。
最左边的区域就是捕获的模拟器页面,在该页面鼠标移到你要查找的元素上面,在整个区域右面上面就是当前对象的一个布局结构,能够清晰的看见他是采用的是什么布局。右下角的区域就是我们需要定位的对象的属性值。
右下角的属性我做了一个区分,左边红色部分为属性名称,右边的则是属性值,当我在上边选择一个控件或者对象的时候下面的属性就会随着变化,在上图中的属性主要是:index、text、resource-id、class、package、content-desc,这些属性和属性值他们对应起来就是我们后面要讲的页面元素定位,我们做自动化最主要是和这几个属性去交互。这里需要注意一个问题:这个页面属性的text属性定位方式是针对name定位,但是在新版本appium中已经去掉了name定位,所以大家注意一下这个问题,到时候如果报错也不要着急。
3.3 Package及Activity讲解
在整理这个知识的时候其实很纠结是否要讲这个知识点,但是权衡了一下决定还是讲解一下,不然后面的章节讲自动化时可能对于一些无基础的读者会有一些莫名其妙。
什么是Package呢?中文翻译过来大家都知道是包的意思,其实没错,你如果非得这么理解也没错,只是在我们的app中这个Package是唯一的,就像你身份证号码一样。在我们做app自动化时,我们就需要知道他的Package,我们知道了Package那么也就知道我们需要对哪个app做自动化,现在能理解Package是什么意思了么?
什么是Activity呢?官方给出的解释Activity是Android组建中最基本也是最为常见用的四大组件之一。看了这个是不是觉得很懵?so,他还有一种不确切的说法,就是和用户进行交互的,每当用户打开app进行操作的时候会发现在不断的跳页面,其实每个页面就是一个activity。我们做自动化时拿到了这个app的Package,但是我们还不能启动起来,因为我们没有告诉需要去操作哪一个Activity,因此在这个时候我们需要讲app启动时的Activity写入到启动参数中,如果你传入一个其他页面的是不行的。
3.4 package及activity的获取
前面讲了那么多,但是还不知道怎么获取,对吧。哈哈,只知道作用但是不知道来源这个就没处使尽。
先说一下获取package和activity的方法,在网上说了有很多种,这里我只给大家说我们常用的。
1、因为自动化一般都是自己的应用,所以这个肯定是自己公司的,那么你拿这个还不简单?直接找开发要就行。
2、appium 有界面的客户端,这档你在设置里面选择了apk的路径之后系统会自动将该apk的相关信息展示在下面,所以很简单,不过悲催的是他不能够复制,你写在程序你的时候还是需要你一个一个字母敲击
3、通过android sdk工具来,在sdk里面有一个工具,叫做aapt,我们可以直接通过这个工具来,在命令行输入:aapt dump badging xxxx.apk,后面这个xxx.apk文件是我们aok所在的绝对路径,敲入之后那么可以显示出来相关信息,可以在里面仔细找了,packageName、lanuchActivity这两个字端,一个在开始1、2行一个在中间部分。
Appium python自动化测试系列之Android知识讲解(三)的更多相关文章
- Appium python自动化测试系列之Android UIAutomator终极定位(七)
android uiautomator text定位 可能有人不知道为什么说android uiautomator是终极定位,而且android uiautomator和appium有什么关系呢?如果 ...
- Appium python自动化测试系列之页面滑动原理讲解(十)
10.1.1 页面滑动原理分析 在页面滑动查找章节我们就讲了滑动的知识点,只是不知道大家是否有认真练习以及去理解,如果你认真练习.理解了那么我相信这一章节的东西不用看也能够完成,下面我们还是简单分析一 ...
- Appium python自动化测试系列之移动自动化测试前提(一)
1.1 移动自动化测试现状 因为软件行业越来越发达,用户的接受度也在不断提高,所以对软件质量的要求也随之提高,当然这个也要分行业,但这个还是包含了大部分.因为成本.质量的变化现在对自动化测试的重视度越 ...
- Appium python自动化测试系列之元素的定位(六)
6.1 常用定位方法讲解 对象定位是自动化测试中很关键的一步,也可以说是最关键的一步,毕竟你对象都没定位那么你想操作也不行.所以本章节的知识我希望大家多动手去操作,不要仅仅只是书本上的知识,毕竟这个 ...
- Appium python自动化测试系列之Capability介绍(五)
5.1 Capability介绍 5.1.1 什么是Capability 在讲capability之前大家是否还记得在讲log时给大家看过的启动时的日志?在我们的整个启动日志中会出现一些配置信息,其 ...
- Appium python自动化测试系列之appium环境搭建(二)
2.1 基础环境搭建 当我们学习新的一项技术开始基本都是从环境搭建开始,本书除了第一章节也是的,如果你连最基础的环境都没有那么我们也没必要去说太多,大概介绍一下: 1.因为appium是支持andr ...
- Appium python自动化测试系列之认识Appium(四)
4.1界面认识 在之前安装appium的时候说过我们有两种方法安装,也就有两种结果,一种是有界面的,一种是没有界面的,首先我们先讲一下有界面的,以及界面有哪些东西. 首先看第一幅图,如果你的是win ...
- Appium python自动化测试系列之等待函数如何进行实战(九)
9.1 等待函数的使用 9.1.1 为什么要使用等待函数 我们在做自动化的时候很多时候都不是很顺利,不是因为app的问题,我们的脚本也没问题,但是很多时候都会报错,比如一个页面本来就有id为1的这个 ...
- Appium python自动化测试系列之混合app实战(十一)
12.1 什么是混合App 12.1.1 混合app定义 什么是混合app,其实这个不言而喻,我们的app正常来说应该都是native的,但是实际工作中却不是,反正种种原因我们的app会有native ...
随机推荐
- 团队作业4——第一次项目冲刺(Alpha版本)第六天and第七天
团队作业4--第一次项目冲刺(Alpha版本)第六天and第七天 第一次项目冲刺(Alpha版本)第六天 一.Daily Scrum Meeting照片 二.燃尽图 1.解释说明横纵坐标代表的含义 ...
- 团队作业4——第一次项目冲刺(Alpha版本)1st day
一.Daily Scrum Meeting照片 二.燃尽图 三.项目进展 1.界面 主界面以及游戏界面大体上完成了 界面内的功能正在写 2.登陆方面 QQ授权还未申请 申请完在登陆界面完成后实现用QQ ...
- 201521123111《Java程序设计》第13周学习总结
本次作业参考文件 正则表达式参考资料 1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.bai ...
- 201521123025《java程序设计》第13周学习总结
1. 本周学习总结 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu.edu.cn,分析返回结果有何不同?为什么会有这样的不同? 从结果来看, ...
- response 常用详解(1)
我们在创建Servlet时会覆盖service()方法,或doGet()/doPost(),这些方法都有两个参数,一个为代表请求的request和代表响应response. service方法中的re ...
- 《MySQL必知必会》[01] 基本查询
<MySQL必知必会>(点击查看详情) 1.写在前面的话 这本书是一本MySQL的经典入门书籍,小小的一本,也受到众多网友推荐.之前自己学习的时候是啃的清华大学出版社的计算机系列教材< ...
- Python学习笔记005_文件_OS_模块_pickle
>>> >>> # 文件 open()方法是打开文件,它有很多参数,第一个文件名是必须的(带路径)>>> >>> f = ope ...
- SimpleRpc-系统边界以及整体架构
系统边界 什么是系统边界?系统边界就是在系统设计之初,对系统所要实现的功能进行界定,不乱添加,不多添加.这么做的好处就是,系统简单明了,主旨明确,方便开发和用户使用.举个例子,一个自动售货机的本职工作 ...
- JVM菜鸟进阶高手之路五
转载请注明原创出处,谢谢! 参考gc,发现大概一小时运行一次FGC,特别奇怪,笨神一看这样的问题就知道是system gc导致的,rmi默认一小时主动触发一次,由于没有gc日志,通过jstat命令观察 ...
- JVM菜鸟进阶高手之路四
转载请注明原创出处,谢谢! 由于很多的jvm分析最好是基于gc日志的,所以添加参数如下即可: -verbose:gc -XX:+HeapDumpOnOutOfMemoryError -XX:+Prin ...