51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 2387|回复: 3
打印 上一主题 下一主题

[转贴] Crosswalk App UI 自动化

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2017-6-22 11:00:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
For @lihuazhang
Web技术大势所趋,随着移动端浏览器引擎性能的持续优化以及移动设备硬件持续增强,web技术在移动设备上的的春天在离我们越来越近。
Crosswalk 虽然只是针对安卓平台,但是由于低于android 4.4 的webview 是一个蹩脚的Android WebKit浏览器内核(android版本越低性能就越差,android 4.4以上已经使用了Chromium ),所以英特尔公司发布了 Crosswalk引擎,可以让 Android 4.0-4.3 的手机上的应用打包 Chromium 引擎而不是 Android WebKit。基于此,有蛮多应用还是选择了crosswalk作为app自带的浏览器引擎。
@lihuazhang 在上篇文章中抛砖引玉介绍了crosswalk,我接着这边文章简单介绍下基于Crosswalk app 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 自动化实现题外话:我在13年底的时候就接触到了crosswalk 这个框架,我们的android版本的app也经历了从原生的webview切换到crosswalk的过程当中,整个应用的体验有了一定的提升,但是额外附带的crosswalk以及一些插件使得app达到了几十兆,相对应的UI自动化框架为了能兼容crosswalk版本的app也集成了crosswalk 的driver,配合uiautomator也算是一种组合。
简单实践
xwalkdriver server
    xwalkdriver 的linux版本的binary可以在其github网站上下载。
selenium remote driver
从selenium(http://docs.seleniumhq.org/download/)上下载你熟悉的语言包. 例如, 安装python 的binaries可以使用pip:
$ pip install selenium
Android SDK
  需要下载android SDK: http://developer.android.com/sdk/index.html
Run xwalkdriver server
  • 启动 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
  1. from selenium import webdriver
  2. capabilities = {
  3.   'xwalkOptions': {
  4.     'androidPackage': 'YOUR_PACKAGE_NAME',
  5.     'androidActivity': '.YOUR_ACTIVITY_NAME',
  6.     'adb-port': 5037(default option if not selected),
  7.   }
  8. }
  9. driver = webdriver.Remote('http://**.**.**.**:9515', capabilities)
  10. """
  11. Your regular python-webdriver code.
  12. """
  13. driver.quit()
复制代码

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

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2017-6-22 11:09:07 | 只看该作者
感谢分享,看来 corsswalk 用的地方还真不少。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2017-6-22 11:10:17 | 只看该作者
草帽路飞UU 发表于 2017-6-22 11:09
感谢分享,看来 corsswalk 用的地方还真不少。

对了,你们在 ubuntu 上使用 xwalkdriver 有没有装什么依赖库?
现在在尝试用 docker 跑 xwalkdriver ,总是提示缺少某些动态库。。。

回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2017-6-22 13:57:38 | 只看该作者
好文!
提个小问题,markdown 的粗体格式在前面两个星号前必须有一个空格,否则会认为你就是想显示星号。同时一些序号格式要求和其他格式之间有一个空行。我看到文中有两个地方出现了 markdown 的字符了。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-4-25 16:43 , Processed in 0.065066 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表