zoukankan      html  css  js  c++  java
  • AndroidDriver原理初步--Android自动化测试学习历程

    主要讲解内容及笔记:

    一、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

    微信公众号

  • 相关阅读:
    这篇通俗实用的Vlookup函数教程,5分钟就可以包你一学就会
    nginx 常见正则匹配符号表示
    Nginx if 条件判断
    nginx 将请求全部指向到一个页面
    windows10下面部署nginx(解决文件名中文乱码问题)
    二.Nginx反向代理和静态资源服务配置
    Nginx的使用(一)代理静态文件
    使用Nginx反向代理和内容替换模块实现网页内容动态替换功能
    如何让NGINX显示文件夹目录
    Nginx 如何设置反向代理 多服务器,配置区分开来,单独文件保存单个服务器 server 主机名配置,通过 include 实现
  • 原文地址:https://www.cnblogs.com/GoldenSunshinetester/p/4462380.html
Copyright © 2011-2022 走看看