AndroidDriver原理初步--Android自动化测试学习历程

主要讲解内容及笔记:java

1、AndroidDriver核心原理android

对上图的解析:浏览器

PC端的端口经过adb,将android版的Remote Server的apk push到手机上,而后跟手机端的Remote Server进行通讯,手机端的Remote Server与浏览器进行通讯,经过WebDriver注入js脚本到浏览器,完成想要完成的功能微信

 

基于控件的全部的自动化框架都调用了Instrumentation,或者封装了它,好比以前的Robotium等多线程

 

2、AndroidDriver源码分析mvc

一、io.selendroid里面的多线程框架

在robotium中对UI上的操做,也会涉及到这个部分,须要经过runonuithread才能进行正确调用,不然就会提示error异步

 

UIThreadController.java——走多线程,是为了避免让主线程卡住,在平时测试过程当中是发现过相似这样的问题,若是开发把某些处理直接放在主线程中作的话,就会很容易出现卡死的bug源码分析

 

好比说某些touch响应的操做啊,或者是keyevent事件等,都应该放在子线程中进行处理,可是开发在处理的时候:应该是经过主线程生成了子 线程,而后受权给子线程去作相关的事情,那么在咱们对程序进行相应处理的时候,好比一些mouseevent的事件时,应该要使用到handler进行回 调,对其中的原理还有一些地方不是很清晰,可是应该是:经过handler给程序发消息,假装成主线程,这样就能够有权限对应相关操做了,不然诸如“对该 程序的操做不能由not original thread来完成”测试

 

二、io.selendroid.android里面的InstrumentedKeySender

这个类有一个final的成员变量instrumentation,首先会把手机的这个Instrumentation instrumentation传给这个成员变量

获得这个值以后,会去进行异步操做:instrumentation.waitForIdleSync(),而后在try中作操做:sendKeySync(里面就调用的仍是monkey和monkeyrunner里面的隐藏接口:点触操做)

三、io.selendroid.server.handler里面的ClearElement、ClickElement等,都在这个handler里面

四、io.selendroid.server.modle——对数据的存储和处理,都是放在modle里面的,这就是mvc的m,而后v就是展现,c就是控制

五、它继承了Selenium的东西,好比说Selenium的查找控件的方法,各类by啊

六、js脚本注入

 

3、闲扯淡部分:

本身目前在用Robotium写测试case,从查资料,怎么搭框架,到开始写程序用了两天的时间,基本写程序的话,用了一星期的时间吧,真正用起来仍是很快的,感受掌握了一些东西了,再回来看这个视频的话,就以为以为不少东西很熟悉,理解起来也相对容易了

 

那么接下来,要先把robotium的测试框架,开发过程当中遇到的问题总结一下,then 看源码,而后才能更好理解问题解决的方案,and now ,我对于多线程神马的不是只知其一;不知其二,是一点都不明白,要试着写写啊,java的程序虽说很快上手,能够写,可是以为仍是须要把最基本的java的知识搞 清楚,什么反射回调之类的,还有interface什么的,加油,加油!!不要惧怕,一点一点作,就会愈来愈棒的!!!!

 

网易云课堂:http://study.163.com/course/courseMain.htm?courseId=712011

金阳光测试

新浪微博:金阳光woody

         

          网站地址

一、百度搜:金阳光测试

二、官网:www.goldensunshine.cc

 

 

微信公众号

相关文章
相关标签/搜索