学习selendroid初衷

为了解决工作中的一个问题,开始学习selendroid。

工作中,有一些所谓H5应用需要测试,这些应用程序描述如下:

  1. 通过微信平台传播,也就是依靠微信的朋友圈传播;
  2. 可以通过类似于http://XXXWWWYYY这样的地址访问;
  3. 应用内容一般是一些时事热点,比如国家的两会、奥运会、中秋节等等;
  4. 应用一般由10~20页面组成,可以通过手指的点击滑动等操作切换页面;
  5. 页面元素包括文字、图片、音乐等;

测试的步骤是:

  1. 先把每个H5应用的url地址发送到微信聊天窗口;
  2. 点击url地址;
  3. 打开应用后,依次检查每个页面是否可以正常打开;

移动端的应用分为native、mobile web、hybrid三类,前面提到的H5产品都属于hybrid类型:

  1. 使用iOS和安卓SDK开发的产品属于原生应用(native);
  2. 可以通过移动端浏览器访问的应用属于移动web应用(mobile web);
  3. 有个原生的控件叫做webview,原生应用通过它可以和web内容进行交互,于是使用webview的原生应用叫做混合型应用(hybrid);

曾经选用appium对这些H5应用进行自动化测试。由于微信的qq浏览器内核有限制,导致通过appium只能读取到native这一个“上下文(context)”,无法获取webview这个“上下文”,也就无法进一步操作webview中的元素。

在testerhome这个移动测试社区中,chenhengjie123 提到:

Appium 获取 context 使用的是 adb shell cat /proc/net/unix ,然后通过分析里面的内容实现的。相关代码为:
https://github.com/appium/appium/blob/6dd575948220725b897f89775b97c4e1ab8fc28b/lib/devices/android/android-hybrid.js(里面的 androidHybrid.listWebviews 方法)

而 selendroid 是通过遍历 Hierarchy 结构来找 webview 的(WebView 这个 class 的实例)。相关代码:
https://github.com/selendroid/selendroid/blob/acdd467f001d0afec6278a6f160775bce62d79e3/selendroid-server/src/main/java/io/selendroid/server/model/internal/WebViewHandleMapper.java(里面的 findWebViews 方法)

于是开始学习selendroid。

 

posted @ 2016-08-17 11:05  超级宝宝11  阅读(253)  评论(0编辑  收藏  举报