​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知识讲解(三)的更多相关文章

  1. Appium python自动化测试系列之Android UIAutomator终极定位(七)

    android uiautomator text定位 可能有人不知道为什么说android uiautomator是终极定位,而且android uiautomator和appium有什么关系呢?如果 ...

  2. Appium python自动化测试系列之页面滑动原理讲解(十)

    10.1.1 页面滑动原理分析 在页面滑动查找章节我们就讲了滑动的知识点,只是不知道大家是否有认真练习以及去理解,如果你认真练习.理解了那么我相信这一章节的东西不用看也能够完成,下面我们还是简单分析一 ...

  3. Appium python自动化测试系列之移动自动化测试前提(一)

    1.1 移动自动化测试现状 因为软件行业越来越发达,用户的接受度也在不断提高,所以对软件质量的要求也随之提高,当然这个也要分行业,但这个还是包含了大部分.因为成本.质量的变化现在对自动化测试的重视度越 ...

  4. Appium python自动化测试系列之元素的定位(六)

    ​6.1 常用定位方法讲解 对象定位是自动化测试中很关键的一步,也可以说是最关键的一步,毕竟你对象都没定位那么你想操作也不行.所以本章节的知识我希望大家多动手去操作,不要仅仅只是书本上的知识,毕竟这个 ...

  5. Appium python自动化测试系列之Capability介绍(五)

    ​5.1 Capability介绍 5.1.1 什么是Capability 在讲capability之前大家是否还记得在讲log时给大家看过的启动时的日志?在我们的整个启动日志中会出现一些配置信息,其 ...

  6. Appium python自动化测试系列之appium环境搭建(二)

    ​2.1 基础环境搭建 当我们学习新的一项技术开始基本都是从环境搭建开始,本书除了第一章节也是的,如果你连最基础的环境都没有那么我们也没必要去说太多,大概介绍一下: 1.因为appium是支持andr ...

  7. Appium python自动化测试系列之认识Appium(四)

    ​4.1界面认识 在之前安装appium的时候说过我们有两种方法安装,也就有两种结果,一种是有界面的,一种是没有界面的,首先我们先讲一下有界面的,以及界面有哪些东西. 首先看第一幅图,如果你的是win ...

  8. Appium python自动化测试系列之等待函数如何进行实战(九)

    ​9.1 等待函数的使用 9.1.1 为什么要使用等待函数 我们在做自动化的时候很多时候都不是很顺利,不是因为app的问题,我们的脚本也没问题,但是很多时候都会报错,比如一个页面本来就有id为1的这个 ...

  9. Appium python自动化测试系列之混合app实战(十一)

    12.1 什么是混合App 12.1.1 混合app定义 什么是混合app,其实这个不言而喻,我们的app正常来说应该都是native的,但是实际工作中却不是,反正种种原因我们的app会有native ...

随机推荐

  1. 个人作业3——个人总结(Alpha阶段)

    Deadline: 2017-5-15 22:00PM,以博客发表日期为准 评分基准: 按时交 - 有分,检查的项目个人总结内容 晚交 - 0分 迟交一周以上 - 倒扣本次作业分数 抄袭 - 倒扣本次 ...

  2. 201521123007《Java程序设计》第6周学习总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 2. 书面作业 1. clone方法 1.1 Object ...

  3. 201521123070 《JAVA程序设计》第6周学习总结

    1. 本章学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...

  4. 201521123039 《java程序设计》第四周学习总结

    1. 本周学习总结 总结: 1.提到类的继承就会想到继承层次的问题,一般我们都将子类和父类共同的特征放到父类中,将具有特殊用途的方法放在子类中,这样可以有效避免代码冗余. 2.覆盖与重载是不同的概念, ...

  5. 社工数据搜索引擎搭建 - Build Social Engineer Evildata Search Engine

    如何设计搭建一个社工库 从初起设计一个社工库,到现在的Beta,前前后后零零整整花了不下一个月的时间,林林总总记录下来,留给需要之人 泄露数据库格式不一,长相奇葩,因需将用户名.密码.邮箱.哈希等信息 ...

  6. JS中有关分支结构、循环结构以及函数应用的一些简单练习

    案例一:搬桌子    年龄大于七岁男女都可以搬桌子,年龄小于七岁大于五岁的男生可以搬桌子: var num =parseInt(prompt("请输入你的年龄")) var sex ...

  7. [js高手之路]Node.js模板引擎教程-jade速学与实战3-mixin

    强大的mixin mixin类似于函数的功能,可以达到模块复用的效果 mixin show: 定义一个类似函数的功能,名字叫show,里面的就是他的内容 +show: 调用show,每调用一次执行一次 ...

  8. linux 下怎样查找一个文件夹在哪个目录下?

    如果只显示所在目录的路径: find 目录 -type d -name "查询目录名" -printf "%h\n" 如果同时显示目录名称和所在目录的路径: f ...

  9. java线程池相关知识点总结

    Android中常见到的很多通用组件一般都离不开"池"的概念,如各种图片加载库,网络请求库,即使Android的消息传递机制中的Meaasge当使用Meaasge.obtain() ...

  10. JDBC操作数据库之删除数据

    删除数据使用的SQL语句为delete语句,如果删除图书id为1的图书信息,其SQL语句为: delete from book where id=1 在实际开发中删除数据通常使用PreparedSta ...