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 ...
随机推荐
- 2016-2017-2 《Java 程序设计》课堂实践项目
目录 基本工具 基础内容 Hello World 和 模块分解 数组的使用 命令行参数 递归 分支语句 String类的使用 类的定义与测试 多态 IO与异常 数据库 网络与安全 数据结构应用 And ...
- 201521123104 《Java程序设计》第8周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 1. List中指定元素的删除(题目4-1) 1.1 实验总结 这道题的关键是如何删除元素.一 ...
- 201521123060《Java程序设计》第2周学习总结
1. 本周学习总结 a.进一步熟悉了Eclipse的使用和java程序的编写: b.学习了java数据的基本类型:整数类型,浮点类型等: c.学习了算数运算符,赋值运算符,位运算符,关系运算符,逻辑运 ...
- 201521123008《Java程序设计》第1周学习总结
本周学习总结 了解了JAVA:jdk:jre:jvm等 C语音与JAVA的部分区别: C语言全面向过程,java面向对象: C语言的代码不能跨平台,java的代码可以跨平台: C语言有指针,java没 ...
- Java FX入门
本文主要借用JavaFX 8 教程来引导同学完成Java FX的学习. 虽然java在GUI方面并无优势,但感兴趣的同学使用Java还是可以做出一些跨平台的小工具.底下是使用Java FX做出的一个界 ...
- 201521123045java课程设计---定时器
#课程设计--定时器(201521123045 郑子熙) 1.团队课程设计博客链接 http://www.cnblogs.com/chendajia/p/7065730.html 2.个人负责模块或任 ...
- dbda数据库类
<?phpclass DBDA{ public $host="localhost";//服务器地址 public $uid="root";//用户名 pu ...
- WebUtils复用代码【request2Bean、UUID】
request封装到Bean对象 public static <T> T request2Bean(HttpServletRequest httpServletRequest, Class ...
- 警惕Java编译器中那些“蜜糖”陷阱
一.前言 随着Java编译器不断地向前发展,它为程序员们提供了越来越多的“蜜糖”(compiler suger),极大地方便了程序的开发,例如,foreach的增强模式,自动拆箱与装箱以及字符串的连接 ...
- python实现算24的算法
1.介绍 给定4个整数,数字范围在1-13之间,任意使用 + - * / ( ) ,构造出一个表达式,使得最终结果为24,这就是常见的算24的游戏.本文介绍用Python语言实现的两种方式.2.实现思 ...