- Android 这些基础知识,你知多少???(超详解))
简介跟前边相比, 具体操作以及实战方面已经讲解且分享了好多, 然而那些各式各样的基础知识, 你究竟知晓多少, 是否全都掌握了? 这篇文章是宏哥给予小伙伴们的一场分享, 同时也是对前边内容做的一回总结。为什么要针对这些进行一番简要的分享, 原因在于在实际具体工作期间常常会撞到这样一类问题, 这里依旧借助一个小故事加以说明。询问与回答: “那个特定的人, 我才刚刚依照上一回的那种方式去操控这款APP, 可我无论如何就是没法让测试脚本运行起来了。内心暗自思忖: 哎呀, 这个古怪的问题, 肯定是他给我的安装包存在问题”。开发人员说道: “嗯? 竟然存在这样的问题, 那么你检查一下你的手机与电脑连接好没有呢。其内心暗自思索: 必定是数据线未能连接妥当QA: 这个, 这个……“咦, 这个要怎么去看? 内心独白: 哎, 我究竟为何会得知该怎么去看, 你要是不告知我, 那我去询问手机以及电脑, 它们也根本不会给予我回应啊”。开发者说道: “发出嗖的一声响, 将命令窗口予以打开, 运用这个命令: adb。”其内心寻思: 带着鄙视之意, 觉得对方什么都全然不懂, 而这是极为简单的一会过去了......QA: 呈现出满心欢喜的样子, 那个特定的人说道“我查看过且连接好了此时内心独白为: 脸上堆砌着一脸淫笑, 心想我所连接的怎么会存在问题呢”。DEV表示, 是不是存在着问题, 你再去瞧一瞧, 其内心独白为: 小样, 自己什么都不查看就跑过来问我啦。当你了解掌握基础知识之后QA 说道: “那个特定的人, 我才刚刚依照上一回的方式去操作这款 APP, 可我无论如何就是没法运行测试脚本了。我也去查看了设备连接的状况, 以及安装包等的某些事物, 就连我代码里所配置的参数都是正确无误的, 你瞧瞧这到底是什么问题呀”。开发人员说: “哇塞天啊瞧瞧, 这个这个呢我要去核算一下, 究竟是不是在安装包打包此程序时所出现的问题, 你先稍微等一等会儿。其内心暗自思忖: 真的是太厉害了, 人家都已经把所有可能出现问题的方面全部排查完毕了, 居然还帮我精准地定位出了存在的问题所在”。全剧终上述所说的尽管是一则小故事, 然而对于刚刚踏入职场的人而言, 确实是极为常见的, 数量众多, 倘若你足够幸运碰到一名善良的开发人员, 那样还算可以。相反的话, 呵呵, 那你就只能自己祈求好运了1、 ADB工具讲解 1.1 什么是ADB呢我们不针对官方语言的翻译作出解释, 而是给大伙讲一种通俗易懂的说法, 对于ADB, 我将其理解成电脑以及手机相连接的桥梁, 这种连接并非是充电的连接, 大家可别弄混了, 要说它是1个调试工具, 或许会更贴切些。1.2 ADB有什么作用呢一开始所言的他乃是电脑跟手机相连接构建起的桥梁借助ADB能够对手机展开操作, 能够实施手机管理。或许你会询问这里所讲的手机涵盖模拟器吗? 答案是确定无疑的。1.3 如何使用ADB在终端当中, 我们直接输入adb命令这项操作, 就能够执行与之相应的行为。于测试进程里, 我们最为常用的便是查看那些已经连接的到底是哪些设备。大概进行了一番整理, 关于常用的那些:1、adb 查看已经连接的设备2、adb命令用于安装Baidu.apk这个应用, 要是当前电脑连接了多台机器的话, 使用该命令无法达成目的, 此时我们必须对设备予以指定, 即adb -s baidu.apk, 这里的-s所指涉的是设备的信息, 也就是借助adb查看而获取的设备信息。3、adb Baidu.apk 这个是卸载应用4、大家务必记住, adb 127.0.0.1:62001这个命令, 它用于连接指定设备信息, 此处指定设备乃虚拟机。要是我们所使用的虚拟机并非官方生产的, 而是诸如国产的天天、夜游神等虚拟机, 那便需要借助此命令进行连接。并且其中的端口号不一定就是6555, 这需依据你所使用模拟器的品牌来确定。刚学习若搞不定, 还是建议使用真机, 仅需打开adb调试即可。2、 工具讲解它属于一种定位工具, 不管是在处于下的这一种情况时, 还是在mac处于下的那种状况时, 都能够予以使用, 它在你所拥有的目录里的tools这个目录之处, 我仅仅是依照我之前向大家讲述的内容, 接下来给大家配置一幅图片, 以此达到更加直观的效果:可以翻看一下, 于我的目录里, 在最后的tools目录那儿, 存在着一个文件, 我们仅需在当前的目录, 径直去敲击该目录设置的指令, 进而将我们的定位工具界面予以打开了, 下面, 我们笔直地去查看咱们那个效果呈现的图:对于这个, 前边已经介绍过了, 宏哥在此就不再赘述了, 然而在此需要记住一个问题, 由于我采用的是国产模拟器, 所以在启动模拟器后要进行adb 127.0.0.1:xxxx, 但是在此之前你仍旧需要把模拟器里面的开发者选项打开, 因为只有建立了连接之后才能够使用定位工具, 不然就会报错。当我们开启定位工具, 以及模拟器之后, 直接去轻点定位工具左上角, 那个被红色圈出来的按钮, 也就是获取当前屏幕的按钮, 此时会自动得到当前模拟器所开启的页面。最左边的那块区域, 那是捕获的模拟器页面, 在这个页面, 把鼠标移到你要查找的元素之上, 在整个区域的右面上方, 是当前对象的一种布局结构, 能清楚地看得见它采用的是何种布局, 右下角的区域, 是我们需要定位的对象的属性值。针对我在右下角所做的属性区分, 左边呈现红色的那部分是属性名称。在其右边的部分, 是属性值。当我于上边去选定一个控件或是对象时, 下面的属性便会跟随着产生变化。放置在上图里的属性里面, 主要存在着: index、text、 -id、class。类同于 -desc, 存在于这些属性以及属性值层面, 它们彼此对应起来的情况, 就是我们后续即将谈论的页面元素定位。我们进行自动化操作时, 最为关键的就是跟这几个属性展开互动。在此处, 有一个问题需要留意: 此页面属性的text属性定位方式, 是针对name进行定位的, 然而, 在新版本里, name定位已然被去除掉了, 故而, 各位应留意这个问题, 届时倘若出现报错情况, 也无需着急。3 、及讲解整理这个知识之际, 内心着实纠结要不要讲这个知识点, 经一番权衡后, 最终决定还是进行讲解, 否则后续章节讲述自动化内容, 部分缺乏基础的读者会感到莫名所以, 真是如此哟。什么是呀? 从中文翻译过来那大家都晓得是包的含义, 实际上确实如此, 要是你非要这般去理解那也并无差错, 只是在我们的那个 app 里头这是独一无二的, 恰似你身份证上的号码那般。在我们着手做 app 自动化操作的时候, 我们就得清楚它的情况, 我们清楚过后那就明白我们应当针对哪一个 app 开展自动化工作, 现在你能够领会这是什么意思了不?该如何去理解? 官方所给出的阐释是, 在组建里头属于最为基础且极为常见加以运用的四大组件当中的一个。看过这个之后, 是不是会让人感觉十分困惑? 所以, 它存在着这么一种不算精准的表述, 那便是用以跟用户开展交互, 每当用户开启 app 去实施操作之际, 就会察觉到页面在持续地跳转, 实际上每一个页面便是一个。我们在做自动化时, 拿到了这个app, 然而我们还没办法将其启动起来, 这是由于我们没有说明需要去操作哪一个, 所以此时我们要把app启动时的情况写入到启动参数里, 要是传入一个其他页面的则是不行的。4 、及的获取前面已经讲了好多好多, 然而却依旧不清楚究竟该如何去获取, 是不是这样, 对。哈, 仅仅知晓其作用, 可是却不晓得它的来源, 如此这般就根本没办法使出来, 没处发挥其用处了。讲一讲获取和的手段, 于网上说了存在繁多类别, 在此处我仅向大伙阐述为我们时常运用的。1、由于自动化通常均为自身的运用, 因而这个必定是自己公司的, 这样一来的话, 你获取这个难道还不简便吗? 径直去找开发索要便可以了。2、 具备界面的客户端, 当你于设置中选定apk路径后, 系统会自行把该apk的相关信息呈现于下方, 因而较为简便, 然而糟糕的是它无法复制, 书写程序时仍需你逐个字母敲击。3、借助sdk工具, 于sdk内部有个名为aapt的工具, 我们能够直接凭借此工具, 在命令行键入: aapt dump xxxx.apk , 后续这个xxx.apk文件是我们aok所处的绝对路径, 输入进去后便能够呈现出相关信息, 可在其中认真查找, 这两个字段, 一个位于起始1、2行, 一个处于中间部分。要是找不到, 再往后面寻觅一下。5、小结得了, 宏哥认为介绍这些足以供你使用如此一来你跟开发交流时就不会那般费劲, 亦不会那般吃力, 更不会瞧见开发那带有鄙视的眼神, 有兴趣且想了解更多有关详情的小伙伴儿们能够看这儿传送门。