章节:自动化基础篇——AndroidDriver原理初步(第六讲)

主要讲解内容及笔记:

一、AndroidDriver核心原理

对上图的解析:

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

基于控件的所有的自动化框架都调用了Instrumentation,或者封装了它,比如之前的Robotium等

二、AndroidDriver源码分析

1、io.selendroid里面的多线程

在robotium中对UI上的操作,也会涉及到这个部分,需要通过runonuithread才能进行正确调用,否则就会提示error

UIThreadController.java——走多线程,是为了不让主线程卡住,在平时测试过程中是发现过类似这样的问题,如果开发把某些处理直接放在主线程中做的话,就会很容易出现卡死的bug

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

2、io.selendroid.android里面的InstrumentedKeySender

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

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

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

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

5、它继承了Selenium的东西,比如说Selenium的查找控件的方法,各种by啊

6、js脚本注入

三、闲扯淡部分:

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

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

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

金阳光测试

新浪微博:金阳光woody

         

          网站地址

1、百度搜:金阳光测试

2、官网:www.goldensunshine.cc

微信公众号

 
 

AndroidDriver原理初步--Android自动化测试学习历程的更多相关文章

  1. Selenium原理初步--Android自动化测试学习历程

    章节:自动化基础篇——Selenium原理初步(第五讲) 注:其实所有的东西都是应该先去用,但是工具基本都一样,底层都是用的最基础的内容实现的,测试应该做的是: (1)熟练使用工具,了解各个工具的利弊 ...

  2. Appium原理初步--Android自动化测试学习历程

    章节:自动化基础篇——Appium原理初步(第七讲) 本期关键词: Appium.跨语言跨平台.Bootstrap 主要讲解内容及笔记: 一.what is appium 一种封装了uiautomat ...

  3. Robotium原理初步--Android自动化测试学习历程

    章节:自动化基础篇——Robotium原理初步(第四讲) 主要讲解内容与笔记: 一.基于控件 1.spinner——下拉菜单 2.TabHost——左右滑动选择菜单,类似电话本 3.Gallery—— ...

  4. MonkeyRunner原理初步--Android自动化测试学习历程

    章节:自动化基础篇——MonkeyRunner原理初步 主要讲解内容及笔记: 一.理论知识和脚本演示 最佳方式是上官网文档去查看monkeyrunner的介绍,官网上不去,就找了一个本地的androi ...

  5. Monkey原理初步和改良优化--Android自动化测试学习历程

    章节:自动化基础篇——Monkey原理初步和改良优化(第三讲) 主要讲解内容与笔记: 一.理论知识: 直接看文档,来了解monkey的概念.基本原理,以及如何使用. First,what is And ...

  6. 百度Cafe原理--Android自动化测试学习历程

    主要讲解内容及笔记: 一.Cafe原理 Cafe是一款自动化测试框架,解决问题:跨进程测试.快速深度测试 官网:http://baiduqa.github.io/Cafe/ Cafe provides ...

  7. 截图原理(二)——android自动化测试学习历程

    接上一篇(截图原理) 视频地址:http://study.163.com/course/courseLearn.htm?courseId=712011#/learn/video?lessonId=87 ...

  8. 截图原理(一)——Android自动化测试学习历程

    把两节的内容汇总起来,第一节讲的是如何在apk中直接进行截屏,用到了Robotium的Solo类的takeScreenShot方法,有一个小的demo,以及从方法一直往里钻,知道它具体是怎么进行截屏的 ...

  9. Instrumentation类——Android自动化测试学习历程

    这里需要把Instrumentation类的视频的上.中.下三集一起看,把内容总结一下... 视频地址: http://study.163.com/course/courseLearn.htm?cou ...

随机推荐

  1. appium 3-31603调试分析方法

    1.Appium Log 清晰记录了所有的请求和结果 @Test public void testDebug() throws InterruptedException,IOException{ Mo ...

  2. 在线学习和在线凸优化(online learning and online convex optimization)—FTRL算法6

  3. javascript创建对象之构造函数模式(二)

    对上一章节的工厂模式进行代码重写 function Human(name, sex) { this.name = name; this.sex = sex; this.say = function ( ...

  4. javascript的防篡改对象之preventExtensions()方法

    js在默认情况下,所有的对象都是可扩展的.这也是让很多开发人员头特疼的问题.因为在同一环境中,一不小心就会发生修改了不必要的对象,而自己却不知道. 在ECMAScript5可以解决这种问题了. pre ...

  5. Oracle 统计量NO_INVALIDATE参数配置(下)

    转载:http://blog.itpub.net/17203031/viewspace-1067620/ 本篇我们继续讨论NO_INVALIDATE参数. 从上篇(http://blog.itpub. ...

  6. jQuery更新

    jQuery jQuery介绍 jQuery是一个轻量级的.兼容多浏览器的JavaScript库. jQuery使用户能够更方便地处理HTML Document.Events.实现动画效果.方便地进行 ...

  7. 内置锁(一)synchronized 介绍与用法

    一.synchronized 的介绍   synchronized 是 Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码,而这段代码也被称 ...

  8. CYQ.Data 批量添加数据性能测试(每秒千、万)---003

    原文地址:https://www.cnblogs.com/cyq1162/p/3216267.html 今天有网友火晋地同学进了CYQ.Data官方群了,他正在折腾了一个各大ORM性能测试的比较的软件 ...

  9. 手机app/h5页面http请求抓包调试

    1.抓包机器跟客户端手机连上同一wifi热点,最好是第三者提供的移动wifi,公司内网wifi网络访问有限制. 2.设置手机客户端http代理 三者关系图示:

  10. nginx, supervisor

    Nginx(单进程): 反向代理, 负载均衡.图解 将配置文件 nginx.conf 的 user xx 配置好 xx用户 检查语法 $ sudo service nginx configtest 重 ...