Appium appium—android Hybrid App—x5 内核 webview 自动化测试要点

yuxichou · 2018年10月26日 · 1402 次阅读

前提条件:appium 环境正常 ,switchToWebview 正常,chromedriver 有 2.29 版本(https://npm.taobao.org/mirrors/chromedriver/

关键点一:开启 x5 的 debug 模式
方法 1:要测试的 APP 中打开 http://debugx5.qq.com 进入 信息====>勾选 打开 TBS 内核 Inspector 调试功能
方法 2:下载 TBS Studio https://x5.tencent.com/tbs/guide/debug/download.html 安装后打开调试

关键点二:手机内的 webview 的实现版本是 57.0.2987.132(当前版本的 x5 内核是基于此版本,如果以后 x5 内核基于的 chrome 版本升级,此版本也需要更新)
方法 1:安装 chrome 57.0.2987.132 版本,webview 实现选择 chrome

方法 2:改源代码(下面的是 mac 非桌面版 1.9.1 的路径,windows 以及 linux 的根据安装目录找):
vim /usr/local/lib/node_modules/appium/node_modules/appium-chromedriver/build/lib/chromedriver.js

595 行:写死 chromeVersion='57.0.2987'

757 行:写死 webviewVersion='Chrome/57.0.2987.132'
===================================================================
case 17:
chromeVersion=’57.0.2987' //=============看这里
log.debug('Found Chrome bundle \'' + this.bundleId + '\' version \'' + chromeVersion + '\'');

if (!(_semver2['default'].gt(chromeVersion, _lodash2['default'].values(mapping)[0]) && !_lodash2['default'].isUndefined(cds[0]) && _lodash2['default'].isUndefined(cds[0].minCDVersion))) {
context$2$0.next = 22;
break;

}

case 15:

// set up our subprocess object
this.proc = new _teen_process.SubProcess(this.chromedriver, args);
processIsAlive = true;

// handle log output
this.proc.on('output', function (stdout, stderr) {
// if the cd output is not printed, find the chrome version and print
// will get a response like
// DevTools response: {
// "Android-Package": "io.appium.sampleapp",
// "Browser": "Chrome/55.0.2883.91",
// "Protocol-Version": "1.2",
// "User-Agent": "...",
// "WebKit-Version": "537.36"
// }
var out = stdout + stderr;
var match = /"Browser": "(.*)"/.exec(out);
if (match) {
//webviewVersion = match[1];
webviewVersion = 'Chrome/57.0.2987.132’ //=============看这里
log.debug('Webview version: \'' + webviewVersion + '\'');
}

// also print chromedriver version to logs
// will output something like
// Starting ChromeDriver 2.33.506106 (8a06c39c4582fbfbab6966dbb1c38a9173bfb1a2) on port 9515
match = /Starting ChromeDriver ([.\d]+)/.exec(out);
if (match) {
log.debug('Chromedriver version: \'' + match[1] + '\'');

}

之所以给出上下源码,是便于老版本 appium 查找。

关键点三:DesiredCapabilities 设置
先上官方文档: http://appium.io/docs/en/writing-running-appium/caps/
chromeOptions 设置 http://chromedriver.chromium.org/getting-started/getting-started---android

"recreateChromeDriverSessions":true,
"chromedriverExecutableDir":"xxxxxr”, =========>>>>把 chromedriver 单独放置一个目录,防止升级 appium 被覆盖
"chromedriverChromeMappingFile":"xxx.json”,=======>>>chrome 版本与 chromedriver 版本的对应关系
"chromeOptions": {
"androidPackage": "com.xxx.xxx”,
“ androidProcess”:” com.xxx.xxx”,======>>>一般情况下同 androidPackage,当然也有例外的如微信 “com.tencent.mm:tools”

"androidActivity":” xxx.xxx.xxx.xxx”, =======>>>webview 所在 activity
“ androidUseRunningApp”:true
},
"nativeWebScreenshot": true, =======>>>>>如果需要截屏此配置还是需要的
"androidScreenshotPath": "target/screenshots" =======>>>>>如果需要截屏此配置还是需要的
},

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册