android的一些基础知识,你又知道多少了,你都掌握了吗?

QA:“那个谁谁谁,我刚刚按照上一次那样操作这款款APP,我死活是跑不起测试脚本了。(内心独白:我去,这个奇怪的问题,一定是他给我的安装包有问题”)

DEV:“嗯?还有这样的问题,那你看一下你手机和电脑连接好了么?。(内心独白:一定是数据线没有连接好)”

QA:这个、这个...“咦,这个怎么看?(内心独白:我去,我怎么知道怎么看了,你不告诉我,我问手机和电脑,他们也不回答我啊)”

DEV:“嗖的一声,打开命令窗口,用这个命令:adb devices。(内心独白:鄙视一番,什么都不懂,这个简单)”

一会过去了......

QA:满心欢喜状,那个谁谁谁“我看了连接好了!(内心独白:一脸淫笑,我连接的怎么可能有问题了)”

DEV:“是不是package或者Activity有问题,你再看看(内心独白:小样,自己啥都不看就来问我)”

QA:“宝宝心里苦,但是宝宝不说!(内心独白:这个。唉。。。。。。。,我还是不会,硬着头皮再问开发)”

当你了解掌握android基础知识之后:

QA:“那个谁谁谁,我刚刚按照上一次那样操作这款款APP,我死活是跑不起测试脚本了。我也查看设备连接情况,以及安装包的package和Activity等等一些东西,和我代码里配置的Appium Desired Capabilities参数都正确,你看看是什么问题吧”

DEV:“厉害了Word哥!这个这个我查一下,是不是安装包打的包有问题,你稍等一下。(内心独白:真特么牛逼,都排查完了,还帮我定位了问题)”

全剧终!

以上虽说是个小故事,但是对于刚入职场的,确实是屡见不鲜,很多很多,如果你很幸运遇到个善良的开发,那还不错。反之,那你就自求多福吧!!!

1、 ADB工具讲解

1.1 什么是ADB呢?

我们不去解释官方语言的翻译,给大家说一个通熟易懂的说法,ADB我理解为他就是电脑和手机连接的桥梁。此连接不是充电的连接,大家不要混淆,说他是一个调试工具,可能更贴切。

1.2 ADB有什么作用呢?

刚说的他是电脑和手机连接的桥梁,我们可以通过ADB操作手机,可以管理手机。可能你说这里手机包括模拟器嘛?答案是肯定的。

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调试就好。

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 、Package及Activity讲解

在整理这个知识的时候其实很纠结是否要讲这个知识点,但是权衡了一下决定还是讲解一下,不然后面的章节讲自动化时可能对于一些无基础的读者会有一些莫名其妙。

什么是Package呢?中文翻译过来大家都知道是包的意思,其实没错,你如果非得这么理解也没错,只是在我们的app中这个Package是唯一的,就像你身份证号码一样。在我们做app自动化时,我们就需要知道他的Package,我们知道了Package那么也就知道我们需要对哪个app做自动化,现在能理解Package是什么意思了么?

什么是Activity呢?官方给出的解释Activity是Android组建中最基本也是最为常见用的四大组件之一。看了这个是不是觉得很懵?so,他还有一种不确切的说法,就是和用户进行交互的,每当用户打开app进行操作的时候会发现在不断的跳页面,其实每个页面就是一个activity。我们做自动化时拿到了这个app的Package,但是我们还不能启动起来,因为我们没有告诉需要去操作哪一个Activity,因此在这个时候我们需要讲app启动时的Activity写入到启动参数中,如果你传入一个其他页面的是不行的。

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行一个在中间部分。如果找不到,在往后边找一找。

最后

如果你看到了这里,觉得文章写得不错就给个赞呗!如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足,谢谢。定期免费分享技术干货。欢迎大家点赞关注。

Android 这些基础知识,你知多少?相关推荐

  1. android培训总结范文,android培训基础知识总结

    android培训基础知识总结,有需要的朋友可以参考下. android培训之1. Android的四大组件是哪些,它们的作用? Activity:Activity是Android程序与用户交互的窗口 ...

  2. android系统知识,Android系统基础知识百科

    Android系统基础知识百科 2015-12-16 17:58:31 954浏览 Android系统作为一款功能强大的移动计算平台,在保持开放性的同时,必须提供强健的安全保障.Android的系统安 ...

  3. Appium+python自动化(十五)- Android 这些基础知识,你知多少???(超详解)...

    简介 前边具体操作和实战已经讲解和分享了很多了,但是一些android的一些基础知识,你又知道多少了,你都掌握了吗?这篇就由宏哥给小伙伴们既是一个分享,又是对前边的一次总结.为什么要对这些做一个简单的 ...

  4. Android Systrace 基础知识(10) - Binder 和锁竞争解读

    本文是 Systrace 系列文章的第十篇,主要是对 Systrace 中的 Binder 和锁信息进行简单介绍,简单介绍了 Binder 的情况,介绍了 Systrace 中 Binder 通信的表 ...

  5. 第四章 Android WiFi基础知识

    系列文章目录 第一章 国内下载AOSP最新源码的方法 第二章 下载AOSP WiFi相关的代码 第三章 将源码导入Android Studio(无需编译idegen) 文章目录 系列文章目录 前言 一 ...

  6. Android Systrace 基础知识(9)-MainThread 和 RenderThread 解读

    本文是 Systrace 系列文章的第九篇,主要是是介绍 Android App 中的 MainThread 和 RenderThread,也就是大家熟悉的「主线程」和「渲染线程」.文章会从 Syst ...

  7. Android 应用基础知识和应用组件

    应用基础知识 安装到设备后,每个 Android 应用都运行在自己的安全沙箱内: Android 操作系统是一种多用户 Linux 系统,其中的每个应用都是一个不同的用户: 默认情况下,系统会为每个应 ...

  8. Android 动画基础知识学习(下)

    1.属性动画 属性动画可以对任意对象的属性进行动画不仅仅是View,动画默认时间间隔是300ms,默认帧率是100ms/帧. 作用:在一个时间间隔内完成对一个对象从属性值到另一个属性值的改变. 三个常 ...

  9. Android开发基础知识

    Android 开发 1. Android基础知识 1.1 发展历程 1.2 Android系统体系架构 Android采用分层架构: Kernel层:Android平台的基础.有线程管理和内存管理等 ...

最新文章

  1. Python ModuleNotFoundError: No module named ‘xlrd‘
  2. python 四舍五入保留小数输出
  3. android 常驻进程
  4. Java多线程编程核心技术笔记
  5. serum血清序列号_图文教程 将serum血清预制导入你的serum
  6. 成功解决building ‘snappy._snappy‘ extension error: Microsoft Visual C++ 14.0 is required. Get it with “B
  7. poj 1715 Hexadecimal Numbers 排列组合
  8. 博客园使用攻略之如何添加自己的js文件
  9. oracle----删除数据
  10. 【u023】最长上升子序列(sequence)
  11. libvpx enabled but no supported decoders found
  12. pycharm 修改darcual(暗黑)主题滚动条颜色
  13. 全球及中国分布式光纤传感(DFOS)行业动态及十四五前景预测报告2022-2027
  14. Qt之QTableView的简单使用(含源码+注释)
  15. Windows7保护眼睛颜色设置方法
  16. openvswitch vxlan 源码分析
  17. Oracle从dmp中导入一张表
  18. JS笔记:实现网页税收表
  19. 博弈对抗游戏AI的技术方法的一些总结和思考
  20. VIVO可能在某一段时间内手机充电数据线上并没有ID脚

热门文章

  1. 20155210潘滢昊 2016-2017-2《Java程序设计》第一周学习总结
  2. Python bytes字节串与string字符串之间的转换
  3. 【专访邹欣】投身软件工程教育的程序员
  4. css实现毛玻璃磨砂效果
  5. Python读取word文档识别字段颜色,解析字段!
  6. IMS高压发生器维修易姆斯电源维修XRG40/200/XRG800
  7. 另外一种方式:用USB摄像头实现网络监控
  8. python发送qq邮件失败_Python实现给qq邮箱发送邮件的方法
  9. 开放 · 共生 | FISCO BCOS开源三周年庆典邀你相聚
  10. 前端基于uniapp[uniPush]实现APP消息推送(安卓、IOS)