您好,登录后才能下订单哦!
在上一个系列中我们分析了UiAutomator的核心源码,对UiAutomator是怎么运行的原理有了根本的了解。今天我们会开始另外一个在安卓平台上基于UiAutomator的新起之秀--Appium的源码分析之旅。
本文在真个系列中会扮演一个简介的角色,不会分析任何的代码,只会先给大家一个基本的印象,方便大家在持有这个印象的基础上往下和本人一块分析。
  
  
下面一部分就是蓝色的就是bootstrap所在的位置,可以看到它是运行在我们的安卓目标测试机器端的,它会监听4724端口获得命令然后pass给UiAutomator来做处理。
那么我们应该怎么来给bootstrap做一个定义呢?我不知道官方有没有做一个定义,但是按照我自己的语言,我会这样来定义它:
上面寥寥几句道出了bootstrap的定义,那么往下我们就继续寥寥几行的把bootstrap这个jar包的关键类以及它的关键方法和相应的本人的一些说明给列出来,给大家现有一个draft idea每个类大概是怎么一回事,这样我们往下的文章就比较好说,大家也比较好理解了。
|    Class  |      Key Method  |      Key Member  |      Parent  |      Description  |      Comment  |   
|    Bootstrap  |      testRunServer  |          |          |      以一个UiAutomatorTestCase的方法的方式运行一个SocketServer来监听4724端口  |      整个bootstrap是以UiAutomator的TestCase的方式运行的,所以这里的Bootstrap这个类必须要继承于UiAutomatorTestCase  |   
|    SocketServer  |      handleClientData  |          |          |      读取socket进来的字串命令信息并转换成AndroidCommand命令然后调用runCommand命令执行命令进行返回  |          |   
|    AndroidComma ndType  |          |      enum AndroidCommandType { ACTION,SHUTDOWN }  |          |      安卓命令的类型,只有两种,shutdown的处理方式和普通的action会不一样  |          |   
|    AndroidComma nd  |      action/getElement  |      JSONObject json; AndroidCommandType cmdType;  |          |      从用户发过来的json命令信息得到真正的命令  |          |   
|    CommandHand ler  |      execute  |          |          |      虚拟类,其他真实CommandHandler如click的父类  |          |   
|    AndroidComma ndExecutor  |      execute  |      HashMap< String, CommandHan dler> map     |          |      map是所有的命令字串和真实的CommandHandler的一个映射。 其成员函数execute就是通过字串命令找到map对应的handler然后执行的  |          |   
|    AndroidComma ndResult  |      AndroidCommandResult  |      JSONObject json  |          |      组织json格式返回值的类  |          |   
|    AndroidElement  |      Click  |      UiObject el; String id;  |          |      代表了一个控件  |      其中id是其在AndroidElementsHash维护的elements这个哈希表的key,并非控件id。  |   
|    AndroidElement Hash  |      addElement  |      Hashtable< String, AndroidEle ment> elements;     |          |      维护这个session当前为止碰到过的所有控件的哈希表  |      注意key就是上面AndroidElement的id这个成员变量。每有一个新的控件从appium pc端过来这个值就会加一  |   
|    Click  |      execute  |          |      CommandHandler  |      处理点击命令的类。 真正执行的是传进来的AndroidCommand对应UiObject的Click方法  |      其他find,drag,setText等命令同理  |   
|    Strategy  |      fromString  |      publicenumStrategy {    CLASS_NAME ("class name”), 
 CSS_SELECT OR("css selector”) , ID(“id"), NAME(“name "), LINK_TEXT( "link text"), PARTIAL_LI NK_TEXT(“p artial link text"), XPATH(“xpa th"), ACCESSIBIL ITY_ID(“ac cessibilit y id”), ANDROID_UI AUTOMATOR( "-android uiautomato r");  |          |      查找控件命令的策略类  |      find这个CommandHandler会根据用户给出的不同策略来用不同的方式进行控件查找。比如用xpath的方式和用uiautomator的方式是不一样的  |   
|        |          |          |          |          |          |   
这里类在我们往下的分析文章中会做进一步的阐述,所以在这里你只需要由一个rough的idea这些类大概是怎么一回事就可以了。
  
|    作者  |      自主博客  |      微信  |      CSDN  |   
|    天地会珠海分舵  |      http://techgogogo.com     |      服务号:TechGoGoGo 扫描码:     |      
 免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。 相关阅读 |