AppiumAndroidBootstrap源码分析之命令解析执行-创新互联
通过上一篇文章《Appium Android Bootstrap源码分析之控件AndroidElement》我们知道了Appium从pc端发送过来的命令如果是控件相关的话,最终目标控件在bootstrap中是以AndroidElement对象的方式呈现出来的,并且该控件对象会在AndroidElementHash维护的控件哈希表中保存起来。但是appium触发一个命令除了需要提供是否与控件相关这个信息外,还需要其他的一些信息,比如,这个是什么命令?这个就是我们这篇文章需要讨论的话题了。
创新互联公司主要为客户提供服务项目涵盖了网页视觉设计、VI标志设计、营销型网站建设、网站程序开发、HTML5响应式网站建设公司、成都做手机网站、微商城、网站托管及成都网站维护、WEB系统开发、域名注册、国内外服务器租用、视频、平面设计、SEO优化排名。设计、前端、后端三个建站步骤的完善服务体系。一人跟踪测试的建站服务标准。已经为成都房屋鉴定行业客户提供了网站推广服务。下面我们还是先看一下从pc端发过来的json的格式是怎么样的:
可以看到里面除了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