用Selendroid做手机自动化测试(二)

2016-11-13   出处: Methods & Tools  作/译者:Dominik Dary, Michael Palotas/梁仲兴

接上篇 《用Selendroid做手机自动化测试(一)》

http://www.testwo.com/article/797


3.1.3. 上下文切换

        正如上述描述,Selendroid可以使本地和混合的应用以及手机web自动启动。当一个Selendroid测试启动后,本地模式会默认被激活。

        可用的上下文可以通过以下检索:

    selendroidDriver.getContextHandles();

        当一个webview可用,以上的方法会返回一个“WEBVIEW”上下文句柄。

    String contextHandleName="WEBVIEW";
    selendroidDriver.context(contextHandleName);
        当一个上下文切换完成后,所有WebDriver命令会被重定向到相应的上下文。


3.1.4. 与元素交互

        在与元素交互之前,首先元素要能被发现。支持多种元素定位策略,详情请查看Selendroid的文档。

        这是可支持的元素交互清单:

  • 获取文本
  • 点击
  • 发送密钥
  • 获取元素属性
  • 清理
  • 提交
  • 被选中
  • 被显示
  • 启用
  • 获取大小
  • 获取位置

        用Selendroid最大的优点是能在本地和web之间的文本平滑切换。


3.2. Selendroid Inspector

        Selendroid自带一个叫做Selendroid Inspector的有用的小工具。这是一个小小的嵌入在你的Selendroid 测试服务器的web应用。它的作用是让你检测你的应用UI当前的状态。

        主要的特定如下:

  • 视图层次
  • 视图UI元素属性
  • 用视图定位器生成UI屏幕截图
  • 录制点击动作
  • 展示web视图的html源码
  • XPath助手

                                                              图 2. Selendroid Inspector

3.3. Selendroid架构

        Selendroid基于Android设备框架,因此只支持测试一个应用。Selendroid包含四个主要组件:

  • Selendroid-Client – java客户端库(基于selenium java client)。
  • Selendroid-Server – 运行在你的Android设备的应用上。
  • AndroidDriver-App – 一个建立在Android驱动webview用于测试手机web的应用。
  • Selendroid-Standalone – 通过安装Selendroid-server和测试应用来管理不同的Android设备
        以下你可以看到一个关于它的架构的概览图:

                                                            图 3. Selendroid架构

3.3.1. Selendroid-Standalone

        这个组件作为一个Selendroid-client和the Selendroid-server之间的代理,为实例启动一个Android模拟器,为测试的应用创建一个自定义的Selendroid-server,安装所有东西到设备上。在会话在设备上被初始化之后,后续请求被直接转发到设备上的服务器,响应返回到客户端。


3.3.2. Selendroid-Server

        这个服务器组件运行在设备上,为Android本地和混合文本实现JSON线协议。与测试的应用交互的基础框架是Android Instrumentation框架。

        在内部与web视图相关的驱动类是SelendroidWebDriver,本地类是SelendroidNativeDriver。SelendroidWebDriver正在使用Selenium 项目的Automation Atoms去与web视图上的元素交互。


4. Selenium Grid

        在执行时间和计算资源方面来说端到端测试是很昂贵的。除了启动一个浏览器,一个用户所有的流程都要被测试(例如注册、搜索一些内容、购买它、付款)。这要花费2-3分钟,即使用自动化方式。考虑到更大的web应用或许会需要做几百个,就算不是几千个端到端的测试,如果测试按顺序执行,测试集的执行时间也很容易就花费几个小时或者几天。并行执行允许在相同时间段内完成更多测试,因此大大减少整个测试集的执行时间。Selenium Grid允许并行执行测试。

                                                            图 4. 执行平行测试的可视化

Selenium Grid 有两个主要的任务:

  • 作为从客户端传来的请求的负载均衡器,分配测试到已注册的节点
  • 作为一个资源管理器通过网格中的可用功能去匹配传入的功能请求(功能可能是一个平台、版本、浏览器等)


                                                    图 5. 一个Selenium网格架构的例子

        节点(在右边)发送一个注册请求到Selenium Grid Hub,告诉它自己的功能。这通常由操作系统、浏览器、浏览器版本组成。客户端(左边)一起发送所有测试伴随着所谓的Desired Capabilities到Selenium Grid Hub作为一个中心入口点。Selenium Grid Hub现在尝试去匹配Desired Capabilities到实际可用的功能。如果能匹配,它转发测试到匹配功能的节点。另外,它通过发送测试到所有匹配的节点而有能力去并行执行测试。

        在一个网格使用Selendroid要求做不同步骤,详见文档的详细描述。


5. 项目的状态

        Selendroid开源项目正在积极开发中,已经有不同的贡献来自不同的贡献者和厂商例如eBay、Salesforce、Red Hat 和Facebook。


参考:

1. http://ios-driver.github.io/ios-driver
2. https://code.google.com/p/selenium/wiki/JsonWireProtocol
3. https://github.com/selendroid/demoproject-selendroid
4. http://developer.android.com/tools/testing/testing_android.html

【英文原文:http://www.methodsandtools.com/tools/selendroid.php】

{测试窝原创译文,译者:梁仲兴}
译者简介:梁仲兴,专注于云计算、自动化、网络运维领域的工作者。






声明:本文为本站编辑转载,文章版权归原作者所有。文章内容为作者个人观点,本站只提供转载参考(依行业惯例严格标明出处和作译者),目的在于传递更多专业信息,普惠测试相关从业者,开源分享,推动行业交流和进步。 如涉及作品内容、版权和其它问题,请原作者及时与本站联系(QQ:1017718740),我们将第一时间进行处理。本站拥有对此声明的最终解释权!欢迎大家通过新浪微博(@测试窝)或微信公众号(测试窝)关注我们,与我们的编辑和其他窝友交流。
408° /4087 人阅读/0 条评论 发表评论

登录 后发表评论
最新文章