TA的每日心情 | 无聊 2024-7-12 13:16 |
---|
签到天数: 1 天 连续签到: 1 天 [LV.1]测试小兵
|
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
- 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结合下,效果也不错。
|
|