Crosswalk App UI 自动化

目录

前言:

Crosswalk WebDriver 实现

Crosswalk app UI 自动化实现


前言:

Crosswalk是一个基于Chromium的开源项目,它提供了一个跨平台的应用程序运行时环境,可以帮助开发人员在移动设备上构建高性能的Web应用程序。在Crosswalk应用程序的开发过程中,UI自动化是一个重要的环节。

Crosswalk WebDriver 实现

在介绍如何使用 Crosswalk WebDriver 实现应用控制自动化之前,我们先为希望对 Crosswalk WebDriver 实现感兴趣的读者介绍一下 Crosswalk WebDriver 的具体实现。Crosswalk 基于 Chromium 浏览器项目,Chromium 浏览器已经对 WebDriver 有相当稳定的支持,但对于以应用程序见长的 Crosswalk 来说,还是需要额外的开发工作来支持原始 Chromium WebDriver 针对应用程序所做的增强和优化。

Crosswalk WebDriver 核心模块主要分为 HttpHandler 模块、DeviceManager 模块以及 DevToolsClient 模块。首先测试人员使用 Selenium 编写基于 WebDriver 的测试脚本,测试脚本通过 W3C 规定的标准 JSON over HTTP Wire Protocol 与 Crosswalk WebDriver 的 HttpHandler 模块通信,解析接收到的测试命令,之后由 DevToolsClient 模块调用 WebSocket 通过 Devtools Protocol 协议与终端上 Web Application 进行通信,其中涉及到对实际硬件或者模拟器的操作部分则由抽象的 DeviceManager 模块来完成,截至目前 DeviceManager 模块实现了对 Android 设备和 Tizen 设备的支持,最后 Web Application 实际执行的反馈数据再以相反的方向流回 Selenium 测试端,整个流程的测试细节都会以 Log 的形式记录下来供测试人员分析。

Crosswalk App UI 自动化_第1张图片

Crosswalk app UI 自动化实现

题外话:我在 13 年底的时候就接触到了 crosswalk 这个框架,我们的 android 版本的 app 也经历了从原生的 webview 切换到 crosswalk 的过程当中,整个应用的体验有了一定的提升,但是额外附带的 crosswalk 以及一些插件使得 app 达到了几十兆,相对应的 UI 自动化框架为了能兼容 crosswalk 版本的 app 也集成了 crosswalk 的 driver,配合 uiautomator 也算是一种组合。

简单实践
xwalkdriver server
xwalkdriver 的 linux 版本的 binary 可以在其github网站上下载。

selenium remote driver
从 selenium(Downloads | Selenium) 上下载你熟悉的语言包. 例如, 安装 python 的 binaries 可以使用 pip:

$ pip install selenium

Android SDK
需要下载 android SDK: http://developer.android.com/sdk/index.html

Run xwalkdriver server

  1. 启动 Android SDK's Android Debug Bridge (adb) server: >$ adb start-server

2.确保 adb shell 有对 device 上 /data/local 读写权限:

adb shell su -c chmod 777 /data/local

3.启动 xwalkdriver,默认监听 9515 端口:

$ ./walkdriver

 

Sample Test

from selenium import webdriver
 capabilities = {
  'xwalkOptions': {
    'androidPackage': 'YOUR_PACKAGE_NAME',
    'androidActivity': '.YOUR_ACTIVITY_NAME',
    'adb-port': 5037(default option if not selected),
  }
}
driver = webdriver.Remote('http://**.**.**.**:9515', capabilities)
"""
Your regular python-webdriver code.
"""
driver.quit()

在这里我没有过多的分享,是因为本身 crosswalk 这块我也只是集成到了项目框架里,没有过多去研究它,其次如果你熟悉 webdriver,其实也没有太多学习的成本,如果你的 app 有多个 webview,自己 window handle 切换下,如果要做 native 操作,和 uiautomator 结合下,效果也不错。

  作为一位过来人也是希望大家少走一些弯路

在这里我给大家分享一些自动化测试前进之路的必须品,希望能对你带来帮助。

(软件测试相关资料,自动化测试相关资料,技术问题答疑等等)

相信能使你更好的进步!

点击下方小卡片

你可能感兴趣的:(自动化测试,软件测试,软件测试工具,ui,自动化,运维,服务器,cocoa,python,开发语言)