- 博客(42)
- 资源 (5)
- 收藏
- 关注
原创 Appium Android Bootstrap源码分析之命令解析执行
通过上一篇文章《Appium Android Bootstrap源码分析之控件AndroidElement》我们知道了Appium从pc端发送过来的命令如果是控件相关的话,最终目标控件在bootstrap中是以AndroidElement对象的方式呈现出来的,并且该控件对象会在AndroidElementHash维护的控件哈希表中保存起来。但是appium触发一个命令除了需要提供是否与控件相关这个
2014-10-31 13:28:02 4252
原创 Appium Android Bootstrap源码分析之控件AndroidElement
通过上一篇文章《Appium Android Bootstrap源码分析之简介》我们对bootstrap的定义以及其在appium和uiautomator处于一个什么样的位置有了一个初步的了解,那么按照正常的写书的思路,下一个章节应该就要去看bootstrap是如何建立socket来获取数据然后怎样进行处理的了。但本人觉得这样子做并不会太好,因为到时整篇文章会变得非常的冗长,因为你在编写的过程中碰
2014-10-31 10:49:43 6330 3
原创 Appium Android Bootstrap源码分析之简介
在上一个系列中我们分析了UiAutomator的核心源码,对UiAutomator是怎么运行的原理有了根本的了解。今天我们会开始另外一个在安卓平台上基于UiAutomator的新起之秀--Appium的源码分析之旅。本文在真个系列中会扮演一个简介的角色,不会分析任何的代码,只会先给大家一个基本的印象,方便大家在持有这个印象的基础上往下和本人一块分析。1. Bootstrap定义及在Appi
2014-10-30 14:50:50 7452
原创 UiAutomator源码分析之获取控件信息
根据上一篇文章《UiAutomator源码分析之注入事件》开始时提到的计划,这一篇文章我们要分析的是第二点:如何获取控件信息我们在测试脚本中初始化一个UiObject的时候通常是像以下这个样子:UiObject appsTab = new UiObject(new UiSelector().text("Apps"));appsTab.click()那么这个过程发生了什么呢?这就是
2014-10-29 09:25:15 11684 4
原创 UiAutomator源码分析之注入事件
上一篇文章《UiAutomator源码分析之UiAutomatorBridge框架》中我们把UiAutomatorBridge以及它相关的类进行的描述,往下我们会尝试根据两个实例将这些类给串联起来,我准备做的是用如下两个很有代表性的实例:注入事件获取控件这一篇文章我们会通过分析UiDevice的pressHome这个方法来分析UiAutomator是如何注入事件的,下一篇文章会描述
2014-10-28 16:24:05 6707
原创 UiAutomator源码分析之UiAutomatorBridge框架
上一篇文章《UIAutomator源码分析之启动和运行》我们描述了uitautomator从命令行运行到加载测试用例运行测试的整个流程,过程中我们也描述了UiAutomatorBridge这个类的重要性,说它相当于UiAutomation的代理(我们都知道UiAutomator是通过UiAutomation和AccessibilityService进行连接然后获取界面空间信息和注入事件的).那么今
2014-10-28 13:44:58 11815 2
原创 UIAutomator源码分析之启动和运行
通过上一篇《Android4.3引入的UiAutomation新框架官方简介》我们可以看到UiAutomator其实就是使用了UiAutomation这个新框架,通过调用AccessibilitService APIs来获取窗口界面控件信息已经注入用户行为事件,那么今天开始我们就一起去看下UiAutomator是怎么运作的。我们在编写了测试用例之后,我们需要通过以下几个步骤把测试脚本bui
2014-10-28 09:30:16 17066 3
翻译 Android4.3引入的UiAutomation新框架官方简介
译者序:Google在Android 4.3发布时提供了一套新的UiAutomation框架来支持用户界面自动化测试,该框架通过运用已有的Accessibility APIs来模拟用户跟设备用户界面的交互:比如获取窗口界面控件和注入事件等。如在4.3之前UiAutomator工具是通过InputManager或者更早的WindowManager来注入KeyEvent等,4.3之后用的就是新框架Ui
2014-10-27 11:07:53 15476
转载 Android自动化测试中AccessibilityService获取控件信息
chAccessibilityService为一个响应用户发送AccessibilityEvent事件的服务类,主要用作对于一些辅助功能的实现中。对于某些方面有缺陷的人群,可以通过辅助功能反馈给用户。 AccessibilityService的介绍,网络上有很多,我就不多做介绍了。我把怎么实现它跟大家分享一下,以及怎么把它跟Android自动化测试扯上关系的学习过程给
2014-10-26 21:40:58 6134 3
原创 monkey源码分析之事件注入方法变化
在上一篇文章《Monkey源码分析之事件注入》中,我们看到了monkey在注入事件的时候用到了《Monkey源码分析番外篇之Android注入事件的三种方法比较》中的第一种方法,通过Internal API的WindowManager的injectKeyEvent之类的方法注入事件。这种方法在android api level 16也就是android4.1.2之后已经发生了变化:
2014-10-26 09:40:12 3337
原创 Monkey源码分析之事件注入
本系列的上一篇文章《Monkey源码分析之事件源》中我们描述了monkey是怎么从事件源取得命令,然后将命令转换成事件放到事件队列里面的,但是到现在位置我们还没有了解monkey里面的事件是怎么一回事,本篇文章就以这个问题作为切入点,尝试去搞清楚monkey的event架构是怎么样的,然后为什么是这样架构的,以及它又是怎么注入事件来触发点击等动作的。在看这篇文章之前,希望大家最好先去看下另外几
2014-10-25 09:24:16 4799 2
翻译 Monkey源码分析番外篇之Android注入事件的三种方法比较
原文:http://www.pocketmagic.net/2012/04/injecting-events-programatically-on-android/#.VEoIoIuUcaV往下分析monkey事件注入源码之前先了解下在android系统下事件注入的方式,翻译一篇国外文章如下。Method 1: Using internal APIs方法1:使用内部AP
2014-10-24 16:54:52 8016 1
翻译 Monkey源码分析番外篇之WindowManager注入事件如何跳出进程间安全限制
在分析monkey源码的时候有些背景知识没有搞清楚,比如在看到monkey是使用windowmanager的injectKeyEvent方法注入事件的时候,心里就打了个疙瘩,这种方式不是只能在当前应用中注入事件吗?Google了下发现了国外一个大牛有留下蛛丝马迹描述这个问题,特意摘录下来并做相应部分的翻译,其他部分大家喜欢就看下,我就不翻译了。How it worksBehin
2014-10-24 15:23:48 3981 3
转载 Android 之 ServiceManager与服务管理
转载处:http://blog.csdn.net/xieqibao/article/details/6585143ServiceMananger是android中比较重要的一个进程,它是在init进程启动之后启动,从名字上就可以看出来它是用来管理系统中的service。比如:InputMethodService、ActivityManagerService等。在ServiceManager中有
2014-10-24 12:25:09 1486
转载 ActivityManager框架解析
转载chu cActivityManager在操作系统中有重要的作用,本文利用操作系统源码,逐步理清ActivityManager的框架,并从静态类结构图和动态序列图两个角度分别进行剖析,从而帮助开发人员加强对系统框架及进程通信机制的理解。ActivityManager的作用参照SDK的说明,可见ActivityManager的功能是与系统中所有运行着的Activity交互提供了接口,
2014-10-24 11:16:25 1887
原创 Monkey源码分析之事件源
上一篇文章《Monkey源码分析之运行流程》给出了monkey运行的整个流程,让我们有一个概貌,那么往后的文章我们会尝试进一步的阐述相关的一些知识点。这里先把整个monkey类的结构图给出来供大家参考,该图源自网上(我自己的backbook pro上没有安装OmniGraffle工具,55美金,不舍得,所以直接贴网上的)图中有几点需要注意下的:MonkeyEve
2014-10-24 08:56:14 4096
原创 Monkey源码分析之运行流程
在《MonkeyRunner源码分析之与Android设备通讯方式》中,我们谈及到MonkeyRunner控制目标android设备有多种方法,其中之一就是在目标机器启动一个monkey服务来监听指定的一个端口,然后monkeyrunner再连接上这个端口来发送命令,驱动monkey去完成相应的工作。当时我们只分析了monkeyrunner这个客户端的代码是怎么实现这一点的,但没有谈monke
2014-10-23 13:06:11 5072 2
翻译 基于Instrumentation Framework的开源项目AndroidMonkey简介
在上一篇文章《MonkeyRunner和Android设备通讯方式源码分析》中本人提到MonkeyRunner跟目标安卓机器交互的其中一种方式是通过在目标机器端开启'monkey -port $port'来跟monkeyrunner建立连接进行交互的,后来打算下载安卓机器端的monkey源代码来分析下monkey是如何处理的,在google中打入关键字“android monkey sourc
2014-10-22 13:11:23 2207
原创 MonkeyRunner源码分析之启动
在工作中因为要追求完成目标的效率,所以更多是强调实战,注重招式,关注怎么去用各种框架来实现目的。但是如果一味只是注重招式,缺少对原理这个内功的了解,相信自己很难对各种框架有更深入的理解。从几个月前开始接触ios和android的自动化测试,原来是本着仅仅为了提高测试团队工作效率的心态先行作浅尝即止式的研究,然后交给测试团队去边实现边自己研究,最后因为各种原因果然是浅尝然后就止步了,而自己最终也
2014-10-21 13:50:35 3882 2
原创 MonkeyRunner源码分析之与Android设备通讯方式
如前文《谁动了我的截图?--Monkeyrunner takeSnapshot方法源码跟踪分析》所述,本文主要会尝试描述android的自动化测试框架MonkeyRunner究竟是如何和目标设备进行通信的。在上一篇文章中我们其实已经描述了其中一个方法,就是通过adb协议发送adb服务器请求的方式驱动android设备的adbd守护进程去获取FrameBuffer的数据生成屏幕截图。那么Mo
2014-10-20 08:42:48 5177 2
原创 MonkeyRunner源码分析之-谁动了我的截图?
本文章的目的是通过分析monkeyrunner是如何实现截屏来作为一个例子尝试投石问路为下一篇文章做准备,往下一篇文章本人有意分析下monkeyrunner究竟是如何和目标测试机器通信的,所以最好的办法本人认为是先跟踪一个调用示例从高层到底层进行分析,本人以前分析操作系统源代码的时候就是先从用户层的write这个api入手,然后一路打通到vfs文件系统层,到设备驱动层的,其效果比单纯的理论描述更容
2014-10-19 15:11:15 4793
翻译 adb概览及协议参考
原文:https://github.com/android/platform_system_core/blob/master/adb/OVERVIEW.TXT)Implementation notes regarding ADB.ADB实现注解1. General Overview:1概要The Android Debug Bridge (ADB) is used to:A
2014-10-19 10:37:23 6571
原创 Robotium中调用getActivity()方法导致程序挂起的研究浅析
1. 问题背景描述在工作中需要在没有项目源码的情况下直接使用robotium测试目标android平台launcher,平台的版本基于当前最新的android 4.4.2。之前在验证可行性的时候使用本人同样使用android4.4.2的测试手机htc incredable s针对一个只有apk的notepad应用做过同样的验证,在测试手机上运行完全没有问题。该测试代码如下:packag
2014-10-18 16:18:41 4111 7
原创 MAC中在eclipse luna上搭建移动平台自动化测试框架(UIAutomator/Appium/Robotium/MonkeyRunner)关键点记录
这几天因为原来在用的hp laptop的电池坏掉了,机器一不小心就断电,所以只能花时间在自己的mackbook pro上重新搭建整套环境,大家都知道搭建环境是个很琐碎需要耐心的事情,特别是当你搭建的安卓平台的时候经常需要翻墙,那个慢不是常人可以忍受的,所以过程中建议大家边看书或者玩手机边搭建,省得一直瞪着屏幕导致爆血管的意外发生。这里本人尝试把在mac上搭建移动平台自动化测试框架的一些碰到的问
2014-10-16 13:08:53 3876 2
原创 参加香港亚洲秋季电子展经验点滴拾遗
这几天应朋友(也是上一家公司老板故对产品还是比较熟悉)之邀,至香港国际会议展览中心协助参加其公司研发之新产片展览,特将此行经历所获经验点滴记录如下,以供本人和同行参考一二 。1. 技术不是最重要的,客户和市场导向位王,闭门造车不可取。大部分客人过来询问的更多的是功能,价钱是否满足期望值,只有一两个是关心里面究竟是使用了什么技术。这里不是说我们产品的技术不重要,而是说在向客户介绍你的
2014-10-16 08:51:29 2253
原创 EasyMonkeyDevice vs MonkeyDevice&HierarchyViewer API Mapping Matrix
1. 前言本来这次文章的title是写成和前几篇类似的《EasyMonkeyDevice API实践全记录》,内容也打算把每个API的实践和建议给记录下来,但后来想了下觉得这样子并不是最好的方法,鉴于EasyMonkeyDevice其实就是在前几章描述的MonkeyDevice和HierarchyViewer的基础上加了一层Wrapper,把原来的通过接受坐标点或者ViewNode来操作控件的
2014-10-11 13:08:01 3980
原创 致网友Wonderfei的一封信(如何选择自动化框架的几点拙见)
MonkeyRunner,Roboitum,UIAutomator和Appium框架的一比较之拙见
2014-10-10 09:04:35 4659 6
原创 MonkeyImage API 实践全记录
1. 背景鉴于网上使用MonkeyImage的实例除了方法sameAs外很难找到,所以本人把实践各个API的过程记录下来然自己有更感性的认识,也为往后的工作打下更好的基础。同时也和上一篇文章《MonkeyDevcie API 实践全记录》起到相互呼应的作用。因为并没有MonkeyRunner的项目背景,所以这里更多的是描述各个API是怎么一回事,而不是描述在什么场景下需要用到。也
2014-10-09 16:49:45 2687
原创 MonkeyDevcie API 实践全记录
1. 背景使用SDK自带的NotePad应用作为实践目标应用,目的是对MonkeyDevice拥有的成员方法做一个初步的了解。以下是官方列出的方法的Overview。Return TypeMethodsCommentvoidbroadcastIntent (string uri, string action,
2014-10-09 10:27:49 2871
原创 MonkenRunner通过HierarchyViewer定位控件的方法和建议(Appium/UIAutomator/Robotium姊妹篇)
1. 背景在使用MonkeyRunner的时候我们经常会用到Chimchat下面的HierarchyViewer模块来获取目标控件的一些信息来辅助我们测试,但在MonkeyRunner的官网上是没有看到相应的API的描述的,上面只有以下三个类的API引用信息(http://developer.android.com/tools/help/MonkeyDevice.html)Monk
2014-10-07 09:28:05 8683 3
原创 Robotium之Android控件定位实践和建议(Appium/UIAutomator姊妹篇)
本人之前曾经撰文描述Appium和UIAutomator框架是如何定位Android界面上的控件的。UIAutomator定位Android控件的方法实践和建议Appium基于安卓的各种FindElement的控件定位方法实践和建议今天我们换一个渊源更留长,当今更盛行的框架Robotium,实践下看它又是如何对控件进行定位的。1. 背景为保持这个系列的一致性
2014-10-05 16:27:10 9929
原创 Eclipse上修改Jython代码的Comment颜色
1.问题起因根据上一篇文章《MonkeyRunner在Windows下的Eclipse开发环境搭建步骤(兼解决网上Jython配置出错的问题)》搭配好Eclipse上面的MonkeyRunner开发环境后,尝试写一段代码来测试下notepad应用,但发觉编辑器了上面的comment都是灰暗的,很难看得清楚,况且因为本博客里面其他框架使用的都是Java,习惯了Java上面的绿色comment,所
2014-10-05 15:44:49 1841
原创 MonkeyRunner在Windows下的Eclipse开发环境搭建步骤(兼解决网上Jython配置出错的问题)
网上有一篇shangdong_chu网友写的文章介绍如何在Eclipse上配置MonkeyRunner,做了挺好的一个描述,但经过我的试验在我的环境上碰到了Jython解析器出错的问题,且该文章缺少Pydev安装的步骤,所以这里按照本人的情况从新撰文描述如何在Eclipse上把MonkeyRunner的开发环境搭建起来。1.环境首先需要先描述下本人配置的环境,因为不确定其他环境下配置是否会
2014-10-05 14:47:20 7926 6
转载 ADB server didn't ACK
出处:http://jingyan.baidu.com/article/454316aba27e49f7a7c03ab1.html1234567分步阅读当我们通过eclipse开发Android应用时,会连接真机会使用模拟器进行仿真,有时候启动失败,会提示这样的错误。
2014-10-04 11:40:36 1432
原创 UIAutomator定位Android控件的方法实践和建议(Appium姊妹篇)
在本人之前的一篇文章Appium基于安卓的各种FindElement的控件定位方法实践和建议>>第二章节谈到Appium可以通过使用UIAutomator的方法去定位Android界面上的控件,当时只是一笔带过举了个例子。如该文给自己的承诺,今天特撰写此文以描述UIAutomator各种控件定位的方法,以作为前文的姊妹篇互通有无。1. 背景为了和前文达成一致,这次的实践对象同样也是使用SD
2014-10-04 10:07:48 25435 8
原创 Appium测试安卓Launcher以滑动窗体获得目标应用
所谓Launcher,指的是安卓的桌面管理程序,所有的应用图标都放在launcher上面。其实这是一个很简单的例子,只是为了验证几点想法而已。1.实验目的做这个试验的目的有二尝试下窗体滑动函数swipe的使用好奇究竟能不能正常的对安卓的Launcher进行指定package和activity进行测试2.实验背景过程是打算使用appium来启动launcher,然后滑动窗
2014-10-03 14:28:47 4174
原创 Appium根据xpath获取控件实例随笔
如文章《Appium基于安卓的各种FindElement的控件定位方法实践》所述,Appium拥有众多获取控件的方法。其中一种就是根据控件所在页面的XPATH来定位控件。本文就是尝试通过自己的试验来尝试对Appium如何用xpath来定位控件做一个阐述,当中如有不对的地方敬请大家指出。1. 背景本文尝试使用的试验对象是SDK自带的NotePad应用实例,假设已经有两个Notes分别是“
2014-10-03 10:45:11 28094 3
原创 Appium基于安卓的各种FindElement的控件定位方法实践和建议
AppiumDriver的各种findElement方法的尝试,尝试的目标应用是SDK自带的Notepad应用。1. findElementByName1.1 示例 el = driver.findElementByName("Add note"); assertThat(el.getText(),equalTo("Add note"));
2014-10-03 10:17:31 43128 4
翻译 Appium0.18.x迁移到Appium1.x须知事项(灰常有用,解答了本人几个疑问)
英文原版:https://github.com/appium/appium/blob/master/docs/en/advanced-concepts/migrating-to-1-0.mdMigrating your tests from Appium 0.18.x to Appium 1.x把你的测试从Appium版本0.18.x迁移至Appium1.x版本Appium
2014-10-03 09:52:28 6775
转载 [content-description] find_element_by_accessibility_id 在 android 中的详解
最近 Appium 引入了一个新的 find element 方法:python client 为例def find_element_by_accessibility_id(self, id): """Finds an element by accessibility id. :Args: - id - a string corres
2014-10-01 18:35:29 4895
流媒体基本知识及流媒体服务器搭建知识大全
2015-01-06
流媒体及服务器搭建知识大全
2015-01-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人