報錯信息如下:
error: Chromedriver: Chromedriver exited unexpectedly with code null, signal SIG TERM info: Chromedriver: Changed state to 'stopped' warn: Chromedriver for context WEBVIEW_com.tencent.mm:tools stopped unexpectedly warn: Chromedriver quit unexpectedly, but it wasn't the active context, ignoring error: Chromedriver: Error: An error occurred (Original error: chrome not reacha ble (Driver info: chromedriver=2.18.343845 (73dd713ba7fbfb73cbb514e62641d8c96a9468 2a),platform=Windows NT 6.1 x86_64)) at JWProxy.command$ (lib/proxy.js:133:15) at tryCatch (D:\Program Files\Appium\node_modules\appium\node_modules\appium -chromedriver\node_modules\appium-jsonwp-proxy\node_modules\babel-runtime\regene rator\runtime.js:67:40) at GeneratorFunctionPrototype.invoke [as _invoke] (D:\Program Files\Appium\n ode_modules\appium\node_modules\appium-chromedriver\node_modules\appium-jsonwp-p roxy\node_modules\babel-runtime\regenerator\runtime.js:315:22) at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (D:\P rogram Files\Appium\node_modules\appium\node_modules\appium-chromedriver\node_mo dules\appium-jsonwp-proxy\node_modules\babel-runtime\regenerator\runtime.js:100: 21) at GeneratorFunctionPrototype.invoke (D:\Program Files\Appium\node_modules\a ppium\node_modules\appium-chromedriver\node_modules\appium-jsonwp-proxy\node_mod ules\babel-runtime\regenerator\runtime.js:136:37) at bound (domain.js:287:14) at GeneratorFunctionPrototype.runBound (domain.js:300:12) at run (D:\Program Files\Appium\node_modules\appium\node_modules\appium-chro medriver\node_modules\appium-jsonwp-proxy\node_modules\babel-runtime\node_module s\core-js\library\modules\es6.promise.js:89:39) at D:\Program Files\Appium\node_modules\appium\node_modules\appium-chromedri ver\node_modules\appium-jsonwp-proxy\node_modules\babel-runtime\node_modules\cor e-js\library\modules\es6.promise.js:100:28 at flush (D:\Program Files\Appium\node_modules\appium\node_modules\appium-ch romedriver\node_modules\appium-jsonwp-proxy\node_modules\babel-runtime\node_modu les\core-js\library\modules\$.microtask.js:17:13) at nextTickCallbackWith0Args (node.js:420:9) at process._tickDomainCallback (node.js:390:13) { [Error: An error occurred (Original error: chrome not reachable (Driver info: chromedriver=2.18.343845 (73dd713ba7fbfb73cbb514e62641d8c96a9468 2a),platform=Windows NT 6.1 x86_64))] status: 100, value: { message: 'chrome not reachable\n (Driver info: chromedriver=2.18.343 845 (73dd713ba7fbfb73cbb514e62641d8c96a94682a),platform=Windows NT 6.1 x86_64)' }, httpCode: 200 }
解決辦法:修改Appium安裝目錄下的文件,例如:
D:\Program Files\Appium\node_modules\appium\lib\devices\android\android-hybrid.js
找到androidHybrid.startChromedriverProxy 函數,注釋掉相關內容。
問題原因:
Appium第一次切換到Html頁面時,會新生成一個Chromedriver;當第二次切換到Html時,會使用已經存在的Chromedriver。但其實在我們的應用里面每次打開一個Activity時一般都是會重新創建一個WebChromeClient,所以這里就把它改成無論如何都生成一個新的Chromedriver。
參考原文:http://laocaixw.github.io/2016/11/01/Appium測試Android混合應用時,第二次切換到WebView時的定位問題/?utm_source=tuicool&utm_medium=referral