​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阶段)

    一.个人总结 1.团队状况:这是我们第一次团队开发,小组成员的编程水平都相对一般,要在一周内完成一个APP是一个很大的考验.再加上冲刺的那周团队大半成员都在为一个比赛培训,时间就更少了,曾经有很多次我 ...

  2. 团队作业8——第二次项目冲刺(Beta阶段)--5.25 5th day

    团队作业8--第二次项目冲刺(Beta阶段)--5.25 fifth day Day five: 会议照片 项目进展 Beta冲刺的第四天,以下是今天具体任务安排: 队员 昨天已完成的任务 今日计划完 ...

  3. 团队作业8——第二次项目冲刺(Beta阶段)第二天

    BETA阶段冲刺第二天 1.当天站立式会议 2.每个人的工作 (1) 昨天已完成的工作: Alpha阶段的Bug修复 (2) 今天计划完成的工作: 编写前端页面 (3) 工作中遇到的困难: 对于前端页 ...

  4. 201521123040《Java程序设计》第12周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...

  5. 201521123057 《Java程序设计》第11周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) ...

  6. PowerBI开发 第四篇:DAX表达式

    DAX 表达式主要用于创建度量列(Measure),度量值是根据用户选择的Filter和公式,计算聚合值,DAX表达式基本上都是引用对应的函数,函数的执行有表级(Table-Level)上下文和行级( ...

  7. RSA原理、ssl认证、Tomcat中配置数字证书以及网络传输数据中的密码学知识

      情形一:接口的加.解密与加.验签 rsa不是只有加密解密,除此外还有加签和验签.之前一直误以为加密就是加签,解密就是验签.这是错误的! 正确的理解是: 数据传输的机密性:公钥加密私钥解密是密送,保 ...

  8. Oracle SQL*Plus 数据备份为 sql 文件

    在某些比较严格的环境中,不提供像PL/SQL Developer 这样的工具供我们备份表数据时,使用SQL*Plus运行如下脚本内容导出数据. 1,  执行时登录SQL*Plus,  命令   @D: ...

  9. SpringSecurity 登录 - 以及Md5加密

    我们现在开放一个链接给其他系统,来访问我们的系统 http://localhost:8080/hulk-teller-web/haihui!init.jspa?loginId=teller01& ...

  10. MyEclipse 快捷键问题

    解决Myeclipse提示快捷键Alt+/不可用问题 http://blog.163.com/cd-key666/blog/static/648929422011229123826/ 解决Myecli ...