AppiumAndroidBootstrap源码分析之命令解析执行-创新互联

通过上一篇文章《Appium Android Bootstrap源码分析之控件AndroidElement》我们知道了Appium从pc端发送过来的命令如果是控件相关的话,最终目标控件在bootstrap中是以AndroidElement对象的方式呈现出来的,并且该控件对象会在AndroidElementHash维护的控件哈希表中保存起来。但是appium触发一个命令除了需要提供是否与控件相关这个信息外,还需要其他的一些信息,比如,这个是什么命令?这个就是我们这篇文章需要讨论的话题了。

创新互联公司主要为客户提供服务项目涵盖了网页视觉设计、VI标志设计、营销型网站建设、网站程序开发、HTML5响应式网站建设公司成都做手机网站、微商城、网站托管及成都网站维护、WEB系统开发、域名注册、国内外服务器租用、视频、平面设计、SEO优化排名。设计、前端、后端三个建站步骤的完善服务体系。一人跟踪测试的建站服务标准。已经为成都房屋鉴定行业客户提供了网站推广服务。

下面我们还是先看一下从pc端发过来的json的格式是怎么样的:

Appium Android Bootstrap源码分析之命令解析执行

可以看到里面除了params指定的是哪一个控件之外,还指定了另外两个信息:

  • cmd: 这是一个action还是一个shutdown
  • action:如果是一个action的话,那么是什么action

开始前我们先简要描述下我们需要涉及到几个关键类:

Class

Key Method

Key Member

Parent

Description

Comment

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然后执行的


getText

execute


CommandHandler

处理获取指定控件文本信息的类。

真正执行的是传进来的AndroidCommand对应UiObject的getText方法

其他click,find,drag,setText等命令同理


1. Appium命令解析器AndroidCommand

AndroidCommand这个类真实的作用其实就是去把Appium从pc端发送过来的那串json命令解析出来,它拥有两个成员变量:

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


新闻名称:AppiumAndroidBootstrap源码分析之命令解析执行-创新互联
浏览地址:http://scyanting.com/article/eecei.html