51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

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

[转贴] Crosswalk App UI 自动化

[复制链接]
  • TA的每日心情
    无聊
    2024-7-12 13:16
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    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 用的地方还真不少。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2024-7-12 13:16
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

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

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

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2024-7-12 13:16
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

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

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-13 14:43 , Processed in 0.065883 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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