Appium Appium 从 native 切换到 webview 页面失败,提示:Failed to start Chromedriver session: An error occurred (Original error: chrome not reachable)

巩程师 · 2018年06月06日 · 最后由 YueChen 回复于 2019年12月16日 · 2887 次阅读

测试背景:自动化测试混合页 app

测试数据
1.Appium(版本 1.6.1)
2.测试使用安卓真机,android version 5.1
3.chromedriver 版本 2.37,chrome 版本 66

问题描述
检测到 native 和 webview 页面后转换到 webview 是卡主不动,直到超时提示:Failed to start Chromedriver session: An error occurred (Original error: chrome not reachable)

配置数据
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("androidProcess", "WEBVIEW_com.xxx.zhidao");
capabilities.setCapability(ChromeOptions.CAPABILITY, options);

代码体
for (String contextName : contextNames) {
System.out.println(contextName);
System.out.println(driver.context(contextName));//此处打印结果:NATIVE_APP
WEBVIEW_com.xxx.zhidao
}
driver.context("WEBVIEW_com.xxx.zhidao");//执行到此处终止知道超时退出

appium 日志
[Chromedriver] Error: Failed to start Chromedriver session: An error occurred (Original error: chrome not reachable
Chromedriver)
[Chromedriver] at Object.wrappedLogger.errorAndThrow (C:\Users\weiwei_gong\AppData\Local\Programs\Appium\resources\app\node_modules\appium-support\lib\logging.js:78:13)
[Chromedriver] at Chromedriver.callee$2$0$ (C:\Users\weiwei_gong\AppData\Local\Programs\Appium\resources\app\node_modules\appium-chromedriver\lib\chromedriver.js:357:13)
[Chromedriver] at tryCatch (C:\Users\weiwei_gong\AppData\Local\Programs\Appium\resources\app\node_modules\appium-chromedriver\node_modules\babel-runtime\regenerator\runtime.js:67:40)
[Chromedriver] at GeneratorFunctionPrototype.invoke as _invoke
[Chromedriver] at GeneratorFunctionPrototype.prototype.(anonymous function) as throw

已经尝试很多方法了 包括网上说断开代理,依然不能解决问题
请大神指点迷津万分感谢thanks

共收到 9 条回复 时间 点赞

楼主解决了么?遇到同样的问题了

webview 的调试模式有没有打开?

打印下 context,打印详细的 appium log 日志,能显示 chromedriver 版本和 webview 版本的信息

hansen 回复

chrome driver 版本要和安卓内核 webview 版本适配

我也遇到了同样的问题,有的 app 能切换成功,有的就报错,和楼主报错信息一样,应该不是版本不匹配的问题,请问楼主怎么解决的呢?下图是版本信息,我查了对照表也是匹配的。

vic 回复

有个简单的方法把 所有 Chromedriver 版本都下载下来
appium 初始化 desired capability 的时候增加一个 chromedriverExecutableDir 参数 指向你存放所有 Chromedriver 版本的路径,它会自己选择的

连接 http://appium.io/docs/en/writing-running-appium/web/chromedriver/#chromedriverchrome-compatibility

YueChen 回复

谢谢大佬的回复,但是如何解决 chromedriver 不同版本命名的问题呢?

vic 回复

没有关系,可以随意命名 chromedriver + 下划线 + 版本 什么的

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