Appium [已解决] Appium 转换 webview context 失败。报错 chrome not reachable

Pauline · 2017年01月12日 · 最后由 WhiteAlbum 回复于 2023年03月14日 · 4797 次阅读

测试背景:自动化测试微信公众号网页

问题描述:
1.Appium(版本 1.6.2)转换 webview context 失败。报错 chrome not reachable
2.测试使用安卓真机,android version 5.1.1
3.在转换的过程中,我留意到真机已经成功进入网页并能加载所有元素,但是就是不能对里面的元素进行操作。chrome browser is invoking but not communicating with the opened window. session 过了大概一分钟才正式关闭。

尝试解决方法:

google 有人说可能是 chromedriver 没有绕过代理设置。通过设置 Internet Properties->connections->LAN settings, set 'Bypass proxy server for local addresses'可以解决这个问题。--------------------我的情况实测不起作用。
google 说有时候引起这个问题是由于 chromedriver 对切换 webview 请求没有及时响应,而 appium 一直在等待 chromedriver 的进一步动作导致超时。所以要解决这个问题的方法就是创建一个线程来监控 chromedriver,当 chromedriver 停止运行,唤醒它。

下面是我的 appium 日志

[HTTP] --> GET /wd/hub/session/3fd60116-5418-4bdf-8c4e-e5f6627b837a/contexts {}
[debug] [MJSONWP] Calling AppiumDriver.getContexts() with args: ["3fd60116-5418-4bdf-8c4e-e5f6627b837a"]
[debug] [AndroidDriver] Getting a list of available webviews
[debug] [ADB] Getting connected devices...
[debug] [ADB] 1 device(s) connected
[debug] [ADB] Running 'D:\software_home\Android_sdk\adt-bundle\adt-bundle-windows-x86_64-20131030\sdk\platform-tools\adb.exe' with args: ["-P",5037,"-s","0123456789ABCDEF","shell","cat","/proc/net/unix"]
[debug] [AndroidDriver] WEBVIEW_19192 mapped to pid 19192
[debug] [AndroidDriver] Getting process name for webview
[debug] [ADB] Getting connected devices...
[debug] [ADB] 1 device(s) connected
[debug] [ADB] Running 'D:\software_home\Android_sdk\adt-bundle\adt-bundle-windows-x86_64-20131030\sdk\platform-tools\adb.exe' with args: ["-P",5037,"-s","0123456789ABCDEF","shell","ps"]
[debug] [AndroidDriver] Parsed pid: 19192 pkg: com.tencent.mm:tools!
[debug] [AndroidDriver] from: u0_a81,19192,1942,1544284,100912,ffffffff,00000000,S,com.tencent.mm:tools
[debug] [AndroidDriver] returning process name: com.tencent.mm:tools
[debug] [AndroidDriver] Found webviews: ["WEBVIEW_com.tencent.mm:tools"]
[debug] [AndroidDriver] Available contexts: ["NATIVE_APP","WEBVIEW_com.tencent.mm:tools"]
[debug] [MJSONWP] Responding to client with driver.getContexts() result: ["NATIVE_APP","WEBVIEW_com.tencent.mm:tools"]
[HTTP] <-- GET /wd/hub/session/3fd60116-5418-4bdf-8c4e-e5f6627b837a/contexts 200 1075 ms - 117
[HTTP] --> POST /wd/hub/session/3fd60116-5418-4bdf-8c4e-e5f6627b837a/context {"name":"WEBVIEW_com.tencent.mm:tools"}
[debug] [MJSONWP] Calling AppiumDriver.setContext() with args: ["WEBVIEW_com.tencent.mm:tools","3fd60116-5418-4bdf-8c4e-e5f6627b837a"]
[debug] [AndroidDriver] Getting a list of available webviews
[debug] [ADB] Getting connected devices...
[debug] [ADB] 1 device(s) connected
[debug] [ADB] Running 'D:\software_home\Android_sdk\adt-bundle\adt-bundle-windows-x86_64-20131030\sdk\platform-tools\adb.exe' with args: ["-P",5037,"-s","0123456789ABCDEF","shell","cat","/proc/net/unix"]
[debug] [AndroidDriver] WEBVIEW_19192 mapped to pid 19192
[debug] [AndroidDriver] Getting process name for webview
[debug] [ADB] Getting connected devices...
[debug] [ADB] 1 device(s) connected
[debug] [ADB] Running 'D:\software_home\Android_sdk\adt-bundle\adt-bundle-windows-x86_64-20131030\sdk\platform-tools\adb.exe' with args: ["-P",5037,"-s","0123456789ABCDEF","shell","ps"]
[debug] [AndroidDriver] Parsed pid: 19192 pkg: com.tencent.mm:tools!
[debug] [AndroidDriver] from: u0_a81,19192,1942,1560304,110312,ffffffff,00000000,S,com.tencent.mm:tools
[debug] [AndroidDriver] returning process name: com.tencent.mm:tools
[debug] [AndroidDriver] Found webviews: ["WEBVIEW_com.tencent.mm:tools"]
[debug] [AndroidDriver] Available contexts: ["NATIVE_APP","WEBVIEW_com.tencent.mm:tools"]
[debug] [AndroidDriver] Connecting to chrome-backed webview context 'WEBVIEW_com.tencent.mm:tools'
[debug] [AndroidDriver] A port was not given, using random port: 8000
[debug] [Chromedriver] Changed state to 'starting'
[Chromedriver] Set chromedriver binary as: C:\Users\Administrator\AppData\Roaming\npm\node_modules.appium_npminstall\appium-chromedriver\2.9.4\appium-chromedriver\chromedriver\win\chromedriver.exe
[Chromedriver] Killing any old chromedrivers, running: FOR /F "usebackq tokens=5" %a in (netstat -nao ^| findstr /R /C:"8000 ") do (FOR /F "usebackq" %b in (TASKLIST /FI "PID eq %a" ^| findstr /I chromedriver.exe) do (IF NOT %b=="" TASKKILL /F /PID %a))
[Chromedriver] No old chromedrivers seemed to exist
[Chromedriver] Spawning chromedriver with: C:\Users\Administrator\AppData\Roaming\npm\node_modules.appium_npminstall\appium-chromedriver\2.9.4\appium-chromedriver\chromedriver\win\chromedriver.exe --
url-base=wd/hub --port=8000 --adb-port=5037
[Chromedriver] [STDOUT] Starting ChromeDriver 2.25.426923 (0390b88869384d6eb0d5d09729679f934aab9eed) on port 8000
Only local connections are allowed.
[debug] [JSONWP Proxy] Proxying [GET /status] to [GET http://127.0.0.1:8000/wd/hub/status] with no body
[debug] [JSONWP Proxy] Got response with status 200: "{\"sessionId\":\"\",\"status\":0,\"value\":{\"build\":{\"version\":\"alpha\"},\"os\":{\"arch\":\"x86_64\",\"name\":\"Windows NT\",\"version\":\"6.
1.7601 SP1\"}}}"
[debug] [JSONWP Proxy] Proxying [POST /session] to [POST http://127.0.0.1:8000/wd/hub/session] with body: {"desiredCapabilities":{"chromeOptions":{"androidPackage":"com.tencent.mm","androidUseRunningA
pp":true,"androidDeviceSerial":"0123456789ABCDEF"}}}
[debug] [JSONWP Proxy] Got response with status 200: {"sessionId":"f53c787a58f62c87150b8fa107be307d","status":100,"value":{"message":"chrome not reachable\n (Driver info: chromedriver=2.25.426923 (03
90b88869384d6eb0d5d09729679f934aab9eed),platform=Windows NT 6.1.7601 SP1 x86_64)"}}
[debug] [JSONWP Proxy] Proxying [POST /session] to [POST http://127.0.0.1:8000/wd/hub/session] with body: {"desiredCapabilities":{"chromeOptions":{"androidPackage":"com.tencent.mm","androidUseRunningA
pp":true,"androidDeviceSerial":"0123456789ABCDEF"}}}
[HTTP] --> DELETE /wd/hub/session/3fd60116-5418-4bdf-8c4e-e5f6627b837a {}
[debug] [MJSONWP] Calling AppiumDriver.deleteSession() with args: ["3fd60116-5418-4bdf-8c4e-e5f6627b837a"]
[debug] [AndroidDriver] Shutting down Android driver
[debug] [AndroidDriver] Resetting IME to com.android.inputmethod.latin/.LatinIME
[debug] [ADB] Getting connected devices...
[debug] [ADB] 1 device(s) connected
[debug] [ADB] Running 'D:\software_home\Android_sdk\adt-bundle\adt-bundle-windows-x86_64-20131030\sdk\platform-tools\adb.exe' with args: ["-P",5037,"-s","0123456789ABCDEF","shell","ime","set","com.and
roid.inputmethod.latin/.LatinIME"]
[debug] [ADB] Getting connected devices...
[debug] [ADB] 1 device(s) connected
[debug] [ADB] Running 'D:\software_home\Android_sdk\adt-bundle\adt-bundle-windows-x86_64-20131030\sdk\platform-tools\adb.exe' with args: ["-P",5037,"-s","0123456789ABCDEF","shell","am","force-stop","com.tencent.mm"]
[debug] [ADB] Pressing the HOME button
[debug] [ADB] Getting connected devices...
[debug] [ADB] 1 device(s) connected
[debug] [ADB] Running 'D:\software_home\Android_sdk\adt-bundle\adt-bundle-windows-x86_64-20131030\sdk\platform-tools\adb.exe' with args: ["-P",5037,"-s","0123456789ABCDEF","shell","input","keyevent",3]
[debug] [AndroidBootstrap] Sending command to android: {"cmd":"shutdown"}
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got data from client: {"cmd":"shutdown"}
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command of type SHUTDOWN
[debug] [AndroidBootstrap] Received command result from bootstrap
[debug] [UiAutomator] Shutting down UiAutomator
[debug] [UiAutomator] Moving to state 'stopping'
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Returning result: {"status":0,"value":"OK, shutting down"}
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Closed client connection
[debug] [AndroidBootstrap] [UIAUTO STDOUT] INSTRUMENTATION_STATUS: numtests=1
[debug] [AndroidBootstrap] [UIAUTO STDOUT] INSTRUMENTATION_STATUS: stream=.
[debug] [AndroidBootstrap] [UIAUTO STDOUT] INSTRUMENTATION_STATUS: id=UiAutomatorTestRunner
[debug] [AndroidBootstrap] [UIAUTO STDOUT] INSTRUMENTATION_STATUS: test=testRunServer
[debug] [AndroidBootstrap] [UIAUTO STDOUT] INSTRUMENTATION_STATUS: class=io.appium.android.bootstrap.Bootstrap
[debug] [AndroidBootstrap] [UIAUTO STDOUT] INSTRUMENTATION_STATUS: current=1
[debug] [AndroidBootstrap] [UIAUTO STDOUT] INSTRUMENTATION_STATUS_CODE: 0
[debug] [AndroidBootstrap] [UIAUTO STDOUT] INSTRUMENTATION_STATUS: stream=
[debug] [AndroidBootstrap] [UIAUTO STDOUT] Test results for WatcherResultPrinter=.
[debug] [AndroidBootstrap] [UIAUTO STDOUT] Time: 109.533
[debug] [AndroidBootstrap] [UIAUTO STDOUT] OK (1 test)
[debug] [AndroidBootstrap] [UIAUTO STDOUT] INSTRUMENTATION_STATUS_CODE: -1
[debug] [UiAutomator] UiAutomator shut down normally
[debug] [UiAutomator] Moving to state 'stopped'
[debug] [ADB] Attempting to kill all uiautomator processes
[debug] [ADB] Getting all processes with uiautomator
[debug] [ADB] Getting connected devices...
[debug] [ADB] 1 device(s) connected
[debug] [ADB] Running 'D:\software_home\Android_sdk\adt-bundle\adt-bundle-windows-x86_64-20131030\sdk\platform-tools\adb.exe' with args: ["-P",5037,"-s","0123456789ABCDEF","shell","ps"]
[ADB] No uiautomator process found to kill, continuing...
[debug] [UiAutomator] Moving to state 'stopped'
[debug] [ADB] Getting connected devices...
[debug] [ADB] 1 device(s) connected
[debug] [ADB] Running 'D:\software_home\Android_sdk\adt-bundle\adt-bundle-windows-x86_64-20131030\sdk\platform-tools\adb.exe' with args: ["-P",5037,"-s","0123456789ABCDEF","shell","am","force-stop","io.appium.unlock"]
[debug] [Logcat] Stopping logcat capture
[debug] [AndroidDriver] Not cleaning generated files. Add clearSystemFiles capability if wanted.
[Appium] Removing session 3fd60116-5418-4bdf-8c4e-e5f6627b837a from our master session list
[debug] [MJSONWP] Received response: null
[debug] [MJSONWP] But deleting session, so not returning
[debug] [MJSONWP] Responding to client with driver.deleteSession() result: null
[HTTP] <-- DELETE /wd/hub/session/3fd60116-5418-4bdf-8c4e-e5f6627b837a 200 6021 ms - 76
[HTTP] <-- POST /wd/hub/session/3fd60116-5418-4bdf-8c4e-e5f6627b837a/context - - ms - -
[debug] [JSONWP Proxy] Got response with status 200: {"sessionId":"f449b3df3f3d38d7f9bd99e89b140692","status":100,"value":{"message":"chrome not reachable\n (Driver info: chromedriver=2.25.426923 (0390b88869384d6eb0d5d09729679f934aab9eed),platform=Windows NT 6.1.7601 SP1 x86_64)"}}
[debug] [JSONWP Proxy] Proxying [POST /session] to [POST http://127.0.0.1:8000/wd/hub/session] with body: {"desiredCapabilities":{"chromeOptions":{"androidPackage":"com.tencent.mm","androidUseRunningApp":true,"androidDeviceSerial":"0123456789ABCDEF"}}}
[debug] [JSONWP Proxy] Got response with status 200: {"sessionId":"aead2b91c6f5e51df6f9595492248f1e","status":100,"value":{"message":"chrome not reachable\n (Driver info: chromedriver=2.25.426923 (0390b88869384d6eb0d5d09729679f934aab9eed),platform=Windows NT 6.1.7601 SP1 x86_64)"}}
[debug] [JSONWP Proxy] Proxying [POST /session] to [POST http://127.0.0.1:8000/wd/hub/session] with body: {"desiredCapabilities":{"chromeOptions":{"androidPackage":"com.tencent.mm","androidUseRunningApp":true,"androidDeviceSerial":"0123456789ABCDEF"}}}
[debug] [JSONWP Proxy] Got response with status 200: {"sessionId":"e3d31d035b41bfb4f7471edb7f79b137","status":100,"value":{"message":"chrome not reachable\n (Driver info: chromedriver=2.25.426923 (0390b88869384d6eb0d5d09729679f934aab9eed),platform=Windows NT 6.1.7601 SP1 x86_64)"}}
[Chromedriver] Chromedriver exited unexpectedly with code null, signal SIGTERM
[debug] [Chromedriver] Changed state to 'stopped'
[Chromedriver] Error: chrome not reachable
(Driver info: chromedriver=2.25.426923 (0390b88869384d6eb0d5d09729679f934aab9eed),platform=Windows NT 6.1.7601 SP1 x86_64)
at Chromedriver.callee$2$0$ (C:\Users\Administrator\AppData\Roaming\npm\node_modules.appium_npminstall\appium-chromedriver\2.9.4\appium-chromedriver\build\lib\chromedriver.js:393:27)
at tryCatch (C:\Users\Administrator\AppData\Roaming\npm\node_modules.appium_npminstall\babel-runtime\5.8.24\babel-runtime\regenerator\runtime.js:67:40)
at GeneratorFunctionPrototype.invoke as _invoke
at GeneratorFunctionPrototype.prototype.(anonymous function) as next
at GeneratorFunctionPrototype.invoke (C:\Users\Administrator\AppData\Roaming\npm\node_modules.appium_npminstall\babel-runtime\5.8.24\babel-runtime\regenerator\runtime.js:136:37)
Error: chrome not reachable
(Driver info: chromedriver=2.25.426923 (0390b88869384d6eb0d5d09729679f934aab9eed),platform=Windows NT 6.1.7601 SP1 x86_64)
at Chromedriver.callee$2$0$ (C:\Users\Administrator\AppData\Roaming\npm\node_modules.appium_npminstall\appium-chromedriver\2.9.4\appium-chromedriver\build\lib\chromedriver.js:393:27)
at tryCatch (C:\Users\Administrator\AppData\Roaming\npm\node_modules.appium_npminstall\babel-runtime\5.8.24\babel-runtime\regenerator\runtime.js:67:40)
at GeneratorFunctionPrototype.invoke as _invoke
at GeneratorFunctionPrototype.prototype.(anonymous function) as next
at GeneratorFunctionPrototype.invoke (C:\Users\Administrator\AppData\Roaming\npm\node_modules.appium_npminstall\babel-runtime\5.8.24\babel-runtime\regenerator\runtime.js:136:37)
[MJSONWP] Encountered internal error running command: Error: chrome not reachable
(Driver info: chromedriver=2.25.426923 (0390b88869384d6eb0d5d09729679f934aab9eed),platform=Windows NT 6.1.7601 SP1 x86_64)
at Chromedriver.callee$2$0$ (C:\Users\Administrator\AppData\Roaming\npm\node_modules.appium_npminstall\appium-chromedriver\2.9.4\appium-chromedriver\build\lib\chromedriver.js:393:27)
at tryCatch (C:\Users\Administrator\AppData\Roaming\npm\node_modules.appium_npminstall\babel-runtime\5.8.24\babel-runtime\regenerator\runtime.js:67:40)
at GeneratorFunctionPrototype.invoke as _invoke
at GeneratorFunctionPrototype.prototype.(anonymous function) as next
at GeneratorFunctionPrototype.invoke (C:\Users\Administrator\AppData\Roaming\npm\node_modules.appium_npminstall\babel-runtime\5.8.24\babel-runtime\regenerator\runtime.js:136:37)

下面是我的用例报告

1) should navigate to the shopping mall homepage
timeout of 100000ms exceeded. Ensure the done() callback is being called in this test.
running
Error: timeout of 100000ms exceeded. Ensure the done() callback is being called in this test.
at Timeout.<anonymous> (C:\Users\Administrator\AppData\Roaming\npm\node_modules.wdio-mocha-framework_npminstall\mocha\2.5.3\mocha\lib\runnable.js:226:19)
at ontimeout (timers.js:365:14)
at tryOnTimeout (timers.js:237:5)
at Timer.listOnTimeout (timers.js:207:5)

如果有遇到同样问题的朋友,还请告知详细解决方法。thanks in advance。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 41 条回复 时间 点赞

我这边部署了三台电脑,同样的代码,有两台电脑能够执行通过,其中一台 90% 的概率执行报错,只要一切换 webview,就报:devices xxx is not online,求解惑,我猜想是环境问题,但是一直找不到原因,求共同探讨 QQ :271584350

hi,请问下各位大神,最先是我的 chrome 和 chromedriver 版本不一致导致切换 context 有问题,报 chrome not reachable 现在我已经把手机的 chrome 和 chromedriver 版本弄一致,但是又报其他错误
get context 得到 ["WEBVIEW_com.tencent.mm:appbrand0","WEBVIEW_com.tencent.mm:tools","WEBVIEW_com.tencent.mm:support","WEBVIEW_com.tencent.mm:appbrand1","WEBVIEW_com.android.quicksearchbox"]
日志打印的 chromeOptions
{"chromeOptions":{"androidPackage":"com.tencent.mm","androidUseRunningApp":true,"androidProcess":"com.tencent.mm:tools","androidDeviceSerial":"ZPRWJREMM4NBL7"}}}
最后切换的时候总是报错 Device ZPRWJREMM4NBL7 is not online\n
info: JSONWP Proxy: Got response with status 200: {"sessionId":"bd50308685a46e4c369e386f881e9ab0","status":13,"value":{"message":"unknown error: Device ZPRWJREMM4NBL7 is not online\n (Driver info: chromedriver=2.9.248315,platform=Windows NT 6.3...
一直说设备不在线,我很绝望,adb devices 设备是在的,请问有没有什么好的解决方法,然后 appium 超时而失败,一直卡在着!

你好!这个问题找到解决办法了吗请教一下?我也出现这个未能定位到问题。

我也出现这种问题,你们都解决了没

你好,我也出现这个问题,请问你解决没

弄了很久还没解决

[Chromedriver] Set chromedriver binary as: C:\Users\xxq\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win\chromedriver.exe
[Chromedriver] Killing any old chromedrivers, running: FOR /F "usebackq tokens=5" %a in (netstat -nao ^| findstr /R /C:"8000 ") do (FOR /F "usebackq" %b in (TASKLIST /FI "PID eq %a" ^| findstr /I chromedriver.exe) do (IF NOT %b=="" TASKKILL /F /PID %a))
[Chromedriver] No old chromedrivers seemed to exist
[Chromedriver] Cleaning any old adb forwarded port socket connections
[ADB] List forwarding ports
[ADB] Running 'D:\test\AndroidSdk\platform-tools\adb.exe' with args: ["-P",5037,"-s","UYT0218323001687","forward","--list"]
[ADB] Removing forwarded port socket connection: 12608
[ADB] Running 'D:\test\AndroidSdk\platform-tools\adb.exe' with args: ["-P",5037,"-s","UYT0218323001687","forward","--remove","tcp:12608"]
[Chromedriver] Spawning chromedriver with: C:\Users\xxq\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win\chromedriver.exe --url-base=wd/hub --port=8000 --adb-port=5037 --verbose
[Chromedriver] Chromedriver version: '2.28.455520'
[JSONWP Proxy] Proxying [GET /status] to [GET http://127.0.0.1:8000/wd/hub/status] with no body
[JSONWP Proxy] Got response with status 200: "{\"sessionId\":\"\",\"status\":0,\"value\":{\"build\":{\"version\":\"alpha\"},\"os\":{\"arch\":\"x86_64\",\"name\":\"Windows NT\",\"version\":\"6.1.7601 SP1\"}}}"
[JSONWP Proxy] Proxying [POST /session] to [POST http://127.0.0.1:8000/wd/hub/session] with body: {"desiredCapabilities":{"chromeOptions":{"androidPackage":"com.tencent.mm","androidUseRunningApp":true,"androidProcess":"com.tencent.mm:tools","androidDeviceSerial":"UYT0218323001687"}}}
[JSONWP Proxy] Got response with status 200: {"sessionId":"6bc8ba69baf82753c45100b73b2364c6","status":100,"value":{"message":"chrome not reachable\n (Driver info: chromedriver=2.28.455520 (cc17746adff54984afff480136733114c6b3704b),platform=Windows NT 6.1.7601 SP1 x86_64)"}}
[Chromedriver] Error: Failed to start Chromedriver session: An error occurred (Original error: chrome not reachable
(Driver info: chromedriver=2.28.455520 (cc17746adff54984afff480136733114c6b3704b),platform=Windows NT 6.1.7601 SP1 x86_64))
at Object.wrappedLogger.errorAndThrow (C:\Users\xxq\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\appium-support\lib\logging.js:69:13)
at Chromedriver.callee$2$0$ (C:\Users\xxq\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\appium-chromedriver\lib\chromedriver.js:217:13)
at tryCatch (C:\Users\xxq\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\babel-runtime\regenerator\runtime.js:67:40)
at GeneratorFunctionPrototype.invoke as _invoke
at GeneratorFunctionPrototype.prototype.(anonymous function) as throw
at GeneratorFunctionPrototype.invoke (C:\Users\xxq\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\babel-runtime\regenerator\runtime.js:136:37)
at
Error: Failed to start Chromedriver session: An error occurred (Original error: chrome not reachable
(Driver info: chromedriver=2.28.455520 (cc17746adff54984afff480136733114c6b3704b),platform=Windows NT 6.1.7601 SP1 x86_64))
at Object.wrappedLogger.errorAndThrow (C:\Users\xxq\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\appium-support\lib\logging.js:69:13)
at Chromedriver.callee$2$0$ (C:\Users\xxq\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\appium-chromedriver\lib\chromedriver.js:217:13)
at tryCatch (C:\Users\xxq\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\babel-runtime\regenerator\runtime.js:67:40)
at GeneratorFunctionPrototype.invoke as _invoke
at GeneratorFunctionPrototype.prototype.(anonymous function) as throw
at GeneratorFunctionPrototype.invoke (C:\Users\xxq\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\babel-runtime\regenerator\runtime.js:136:37)
at
[JSONWP Proxy] Proxying [POST /session] to [POST http://127.0.0.1:8000/wd/hub/session] with body: {"desiredCapabilities":{"chromeOptions":{"androidPackage":"com.tencent.mm","androidUseRunningApp":true,"androidProcess":"com.tencent.mm:tools","androidDeviceSerial":"UYT0218323001687"}}}
[JSONWP Proxy] Got response with status 200: {"sessionId":"ab360dae53ce766dced1e8fc6c9a9ea1","status":100,"value":{"message":"chrome not reachable\n (Driver info: chromedriver=2.28.455520 (cc17746adff54984afff480136733114c6b3704b),platform=Windows NT 6.1.7601 SP1 x86_64)"}}
[Chromedriver] Error: Failed to start Chromedriver session: An error occurred (Original error: chrome not reachable
(Driver info: chromedriver=2.28.455520 (cc17746adff54984afff480136733114c6b3704b),platform=Windows NT 6.1.7601 SP1 x86_64))
at Object.wrappedLogger.errorAndThrow (C:\Users\xxq\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\appium-support\lib\logging.js:69:13)
at Chromedriver.callee$2$0$ (C:\Users\xxq\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\appium-chromedriver\lib\chromedriver.js:217:13)
at tryCatch (C:\Users\xxq\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\babel-runtime\regenerator\runtime.js:67:40)
at GeneratorFunctionPrototype.invoke as _invoke
at GeneratorFunctionPrototype.prototype.(anonymous function) as throw
at GeneratorFunctionPrototype.invoke (C:\Users\xxq\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\babel-runtime\regenerator\runtime.js:136:37)
at
Error: Failed to start Chromedriver session: An error occurred (Original error: chrome not reachable
(Driver info: chromedriver=2.28.455520 (cc17746adff54984afff480136733114c6b3704b),platform=Windows NT 6.1.7601 SP1 x86_64))
at Object.wrappedLogger.errorAndThrow (C:\Users\xxq\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\appium-support\lib\logging.js:69:13)
at Chromedriver.callee$2$0$ (C:\Users\xxq\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\appium-chromedriver\lib\chromedriver.js:217:13)
at tryCatch (C:\Users\xxq\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\babel-runtime\regenerator\runtime.js:67:40)
at GeneratorFunctionPrototype.invoke as _invoke
at GeneratorFunctionPrototype.prototype.(anonymous function) as throw
at GeneratorFunctionPrototype.invoke (C:\Users\xxq\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\babel-runtime\regenerator\runtime.js:136:37)
at
[JSONWP Proxy] Proxying [POST /session] to [POST http://127.0.0.1:8000/wd/hub/session] with body: {"desiredCapabilities":{"chromeOptions":{"androidPackage":"com.tencent.mm","androidUseRunningApp":true,"androidProcess":"com.tencent.mm:tools","androidDeviceSerial":"UYT0218323001687"}}}
[JSONWP Proxy] Got response with status 200: {"sessionId":"04ec4c7df9cc160429ecf94f041ccbc4","status":100,"value":{"message":"chrome not reachable\n (Driver info: chromedriver=2.28.455520 (cc17746adff54984afff480136733114c6b3704b),platform=Windows NT 6.1.7601 SP1 x86_64)"}}
[Chromedriver] Error: Failed to start Chromedriver session: An error occurred (Original error: chrome not reachable
(Driver info: chromedriver=2.28.455520 (cc17746adff54984afff480136733114c6b3704b),platform=Windows NT 6.1.7601 SP1 x86_64))
at Object.wrappedLogger.errorAndThrow (C:\Users\xxq\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\appium-support\lib\logging.js:69:13)
at Chromedriver.callee$2$0$ (C:\Users\xxq\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\appium-chromedriver\lib\chromedriver.js:217:13)
at tryCatch (C:\Users\xxq\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\babel-runtime\regenerator\runtime.js:67:40)
at GeneratorFunctionPrototype.invoke as _invoke
at GeneratorFunctionPrototype.prototype.(anonymous function) as throw
at GeneratorFunctionPrototype.invoke (C:\Users\xxq\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\babel-runtime\regenerator\runtime.js:136:37)
at
Error: Failed to start Chromedriver session: An error occurred (Original error: chrome not reachable
(Driver info: chromedriver=2.28.455520 (cc17746adff54984afff480136733114c6b3704b),platform=Windows NT 6.1.7601 SP1 x86_64))
at Object.wrappedLogger.errorAndThrow (C:\Users\xxq\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\appium-support\lib\logging.js:69:13)
at Chromedriver.callee$2$0$ (C:\Users\xxq\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\appium-chromedriver\lib\chromedriver.js:217:13)
at tryCatch (C:\Users\xxq\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\babel-runtime\regenerator\runtime.js:67:40)
at GeneratorFunctionPrototype.invoke as _invoke
at GeneratorFunctionPrototype.prototype.(anonymous function) as throw
at GeneratorFunctionPrototype.invoke (C:\Users\xxq\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\babel-runtime\regenerator\runtime.js:136:37)
at

python+Appium v1.8.0 mac 10.13.5 切换 webview 也是报错,用了上文提到的'chromeOptions':{'androidProcess':'com.tencent.mm:appbrand0'}也还是不行,还有其他解决办法吗?下面是 log 信息

Chromedriver)
[Chromedriver] at Object.wrappedLogger.errorAndThrow (/Applications/Appium.app/Contents/Resources/app/node_modules/appium-support/lib/logging.js:78:13)
[Chromedriver] at Chromedriver.callee$2$0$ (/Applications/Appium.app/Contents/Resources/app/node_modules/appium-chromedriver/lib/chromedriver.js:357:13)
[Chromedriver] at tryCatch (/Applications/Appium.app/Contents/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
[Chromedriver] at GeneratorFunctionPrototype.invoke (/Applications/Appium.app/Contents/Resources/app/node_modules/appium-chromedriver/node_modules/babel-runtime/regenerator/runtime.js:136:37)
[Chromedriver] at
[JSONWP Proxy] Proxying [POST /session] to [POST http://127.0.0.1:8001/wd/hub/session] with body: {"desiredCapabilities":{"chromeOptions":{"androidPackage":"com.tencent.mm","androidUseRunningApp":true,"androidProcess":"com.tencent.mm:appbrand0","androidDeviceSerial":"A7QDU17B14000798"}}}
[JSONWP Proxy] Got response with status 200: {"sessionId":"ec3d67c8e917363c4b99a6c82c5f4dd2","status":100,"value":{"message":"chrome not reachable\n (Driver info: chromedriver=2.28.455517 (2c6d2707d8ea850c862f04ac066724273981e88f),platform=Mac OS X 10.13.5 x86_64)"}}
[Chromedriver] Error: Failed to start Chromedriver session: An error occurred (Original error: chrome not reachable
Chromedriver)
[Chromedriver] at Object.wrappedLogger.errorAndThrow (/Applications/Appium.app/Contents/Resources/app/node_modules/appium-support/lib/logging.js:78:13)
[Chromedriver] at Chromedriver.callee$2$0$ (/Applications/Appium.app/Contents/Resources/app/node_modules/appium-chromedriver/lib/chromedriver.js:357:13)
[Chromedriver] at tryCatch (/Applications/Appium.app/Contents/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
[Chromedriver] at GeneratorFunctionPrototype.invoke (/Applications/Appium.app/Contents/Resources/app/node_modules/appium-chromedriver/node_modules/babel-runtime/regenerator/runtime.js:136:37)
[Chromedriver] at
[JSONWP Proxy] Proxying [POST /session] to [POST http://127.0.0.1:8001/wd/hub/session] with body: {"desiredCapabilities":{"chromeOptions":{"androidPackage":"com.tencent.mm","androidUseRunningApp":true,"androidProcess":"com.tencent.mm:appbrand0","androidDeviceSerial":"A7QDU17B14000798"}}}
[JSONWP Proxy] Got response with status 200: {"sessionId":"d82cf6ef756edbbbbf0c5fb67d889beb","status":100,"value":{"message":"chrome not reachable\n (Driver info: chromedriver=2.28.455517 (2c6d2707d8ea850c862f04ac066724273981e88f),platform=Mac OS X 10.13.5 x86_64)"}}
[Chromedriver] Error: Failed to start Chromedriver session: An error occurred (Original error: chrome not reachable
Chromedriver)
[Chromedriver] at Object.wrappedLogger.errorAndThrow (/Applications/Appium.app/Contents/Resources/app/node_modules/appium-support/lib/logging.js:78:13)
[Chromedriver] at Chromedriver.callee$2$0$ (/Applications/Appium.app/Contents/Resources/app/node_modules/appium-chromedriver/lib/chromedriver.js:357:13)
[Chromedriver] at tryCatch (/Applications/Appium.app/Contents/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
[Chromedriver] at GeneratorFunctionPrototype.invoke (/Applications/Appium.app/Contents/Resources/app/node_modules/appium-chromedriver/node_modules/babel-runtime/regenerator/runtime.js:136:37)
[Chromedriver] at
[JSONWP Proxy] Proxying [POST /session] to [POST http://127.0.0.1:8001/wd/hub/session] with body: {"desiredCapabilities":{"chromeOptions":{"androidPackage":"com.tencent.mm","androidUseRunningApp":true,"androidProcess":"com.tencent.mm:appbrand0","androidDeviceSerial":"A7QDU17B14000798"}}}
[JSONWP Proxy] Got response with status 200: {"sessionId":"ad6ca12b435ad7f35b50fc48cfab0920","status":100,"value":{"message":"chrome not reachable\n (Driver info: chromedriver=2.28.455517 (2c6d2707d8ea850c862f04ac066724273981e88f),platform=Mac OS X 10.13.5 x86_64)"}}
[Chromedriver] Error: Failed to start Chromedriver session: An error occurred (Original error: chrome not reachable
Chromedriver)
[Chromedriver] at Object.wrappedLogger.errorAndThrow (/Applications/Appium.app/Contents/Resources/app/node_modules/appium-support/lib/logging.js:78:13)
[Chromedriver] at Chromedriver.callee$2$0$ (/Applications/Appium.app/Contents/Resources/app/node_modules/appium-chromedriver/lib/chromedriver.js:357:13)
[Chromedriver] at tryCatch (/Applications/Appium.app/Contents/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
[Chromedriver] at GeneratorFunctionPrototype.invoke (/Applications/Appium.app/Contents/Resources/app/node_modules/appium-chromedriver/node_modules/babel-runtime/regenerator/runtime.js:136:37)
[Chromedriver] at
[Chromedriver] Chromedriver exited unexpectedly with code null, signal SIGTERM
[Chromedriver] Changed state to 'stopped'
[Chromedriver] Error: Failed to start Chromedriver session: An error occurred (Original error: chrome not reachable
Chromedriver)
[Chromedriver] at Object.wrappedLogger.errorAndThrow (/Applications/Appium.app/Contents/Resources/app/node_modules/appium-support/lib/logging.js:78:13)
[Chromedriver] at Chromedriver.callee$2$0$ (/Applications/Appium.app/Contents/Resources/app/node_modules/appium-chromedriver/lib/chromedriver.js:357:13)
[Chromedriver] at tryCatch (/Applications/Appium.app/Contents/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
[Chromedriver] at GeneratorFunctionPrototype.invoke (/Applications/Appium.app/Contents/Resources/app/node_modules/appium-chromedriver/node_modules/babel-runtime/regenerator/runtime.js:136:37)
[Chromedriver] at
[W3C] Encountered internal error running command: Error: Failed to start Chromedriver session: An error occurred (Original error: chrome not reachable
W3C)
[W3C] at Object.wrappedLogger.errorAndThrow (/Applications/Appium.app/Contents/Resources/app/node_modules/appium-support/lib/logging.js:78:13)
[W3C] at Chromedriver.callee$2$0$ (/Applications/Appium.app/Contents/Resources/app/node_modules/appium-chromedriver/lib/chromedriver.js:357:13)
[W3C] at tryCatch (/Applications/Appium.app/Contents/Resources/app/node_modules/appium-chromedriver/node_modules/babel-runtime/regenerator/runtime.js:67:40)
[W3C] at GeneratorFunctionPrototype.invoke as _invoke
[W3C] at GeneratorFunctionPrototype.prototype.(anonymous function) as throw
[W3C] at GeneratorFunctionPrototype.invoke (/Applications/Appium.app/Contents/Resources/app/node_modules/appium-chromedriver/node_modules/babel-runtime/regenerator/runtime.js:136:37)
[W3C] at
[HTTP] <-- POST /wd/hub/session/42275fbe-8dad-4934-9a3d-967e1326c93b/context 500 244019 ms - 1716
[HTTP]
[HTTP] --> DELETE /wd/hub/session/42275fbe-8dad-4934-9a3d-967e1326c93b

@xxq 你的 chrome not reachable 问题解决没?求助

@nian0099 你好,你那边 chrome not reachable 的问题解决没?我这边也一样,用的是 python3+appium1.8

回复

你可以看我的回复 我的已经解决了 换部手机 可以切换 或者不用切换 你自己直接打印当前页面 你会发现不需要切换 也许美团小程序用了原生的 我觉得如果是原生可以不用切换 用了 h5 就需要切换

有人解决 webview 不能切换的问题吗?烦请告知。崩溃中。

Pauline 回复

你好 请教下能看到 webview 切换 webview 的时候报 chrome not reachable

你好,请问这个问题怎么解决的?

@TheRoadNotTaken 我也是这个情况 用的 mac 系统
appium:1.4.13
android:6.0.1
我特意写了个 for 循环 让他识别 webview contex 大概循环 2-3 次后才识别到 然后 switch_to context. 但是我切进入 web view 的时间比较久大概 1 分钟左右 我写了个 print ‘成功’ 之后一直在 webview 界面 不做任何操作也不执行 最好 1-2 分钟后 session 报错结束!
楼主搞定了记得 回复下 详细

@TheRoadNotTaken
错误代码如下

info: JSONWP Proxy: Got response with status 200: {"sessionId":"838847547e8af5138872d4abd0c9abce","status":100,"value":{"message":"chrome not reachable\n (Driver info: chromedriver=2.18.343837 (52eb4041461e46a6b73308ebb19e85787ced4281),platform=Mac ...

info: JSONWP Proxy: Proxying [POST /session] to [POST http://127.0.0.1:9515/wd/hub/session] with body: {"desiredCapabilities":{"chromeOptions":{"androidPackage":"com.tencent.mm","androidUseRunningApp":true,"androidProcess":"com.tencent.mm:appbrand3","androidDeviceSerial":"532c6f13"}}}

info: --> GET /wd/hub/status {}

info: JSONWP Proxy: Proxying [GET /wd/hub/status] to [GET http://127.0.0.1:9515/wd/hub/status] with body: {}

info: JSONWP Proxy: Got response with status 200: {"sessionId":"","status":0,"value":{"build":{"version":"alpha"},"os":{"arch":"x86_64","name":"Mac OS X","version":"10.11.5"}}}
info: <-- GET /wd/hub/status 200 8.021 ms - 126

info: --> GET /wd/hub/status {}

info: JSONWP Proxy: Proxying [GET /wd/hub/status] to [GET http://127.0.0.1:9515/wd/hub/status] with body: {}

info: JSONWP Proxy: Got response with status 200: {"sessionId":"","status":0,"value":{"build":{"version":"alpha"},"os":{"arch":"x86_64","name":"Mac OS X","version":"10.11.5"}}}
info: <-- GET /wd/hub/status 200 5.346 ms - 126

info: JSONWP Proxy: Got response with status 200: {"sessionId":"ef97a6532170d82596d7338493c62565","status":100,"value":{"message":"chrome not reachable\n (Driver info: chromedriver=2.18.343837 (52eb4041461e46a6b73308ebb19e85787ced4281),platform=Mac ...

info: JSONWP Proxy: Proxying [POST /session] to [POST http://127.0.0.1:9515/wd/hub/session] with body: {"desiredCapabilities":{"chromeOptions":{"androidPackage":"com.tencent.mm","androidUseRunningApp":true,"androidProcess":"com.tencent.mm:appbrand3","androidDeviceSerial":"532c6f13"}}}

info: --> GET /wd/hub/status {}

info: JSONWP Proxy: Proxying [GET /wd/hub/status] to [GET http://127.0.0.1:9515/wd/hub/status] with body: {}

info: JSONWP Proxy: Got response with status 200: {"sessionId":"","status":0,"value":{"build":{"version":"alpha"},"os":{"arch":"x86_64","name":"Mac OS X","version":"10.11.5"}}}
info: <-- GET /wd/hub/status 200 5.502 ms - 126

info: --> GET /wd/hub/status {}

info: JSONWP Proxy: Proxying [GET /wd/hub/status] to [GET http://127.0.0.1:9515/wd/hub/status] with body: {}

info: JSONWP Proxy: Got response with status 200: {"sessionId":"","status":0,"value":{"build":{"version":"alpha"},"os":{"arch":"x86_64","name":"Mac OS X","version":"10.11.5"}}}
info: <-- GET /wd/hub/status 200 8.762 ms - 126

info: JSONWP Proxy: Got response with status 200: {"sessionId":"0da1605e28f8a41a9863fb5c4c150f99","status":100,"value":{"message":"chrome not reachable\n (Driver info: chromedriver=2.18.343837 (52eb4041461e46a6b73308ebb19e85787ced4281),platform=Mac ...

info: JSONWP Proxy: Proxying [POST /session] to [POST http://127.0.0.1:9515/wd/hub/session] with body: {"desiredCapabilities":{"chromeOptions":{"androidPackage":"com.tencent.mm","androidUseRunningApp":true,"androidProcess":"com.tencent.mm:appbrand3","androidDeviceSerial":"532c6f13"}}}

#1 楼 @Tester957 你可以试试我下面的方法,希望可以帮到你。

亲测可用方法:

在配置信息里加上这段(我的是 JavaScript Client)

chromeOptions: {
      androidProcess:"com.tencent.mm:tools"
    }

具体的也可以参考此贴
https://testerhome.com/topics/6954(里面有说到原因)

post 一下成功后的 log

[debug] [JSONWP Proxy] Proxying [GET /status] to [GET http://127.0.0.1:8000/wd/hub/status] with no body
[debug] [JSONWP Proxy] Got response with status 200: "{\"sessionId\":\"\",\"status\":0,\"value\":{\"build\":{\"version\":\"alpha\"},\"os\":{\"arch\":\"x86_64\",\"name\":\"Window
s NT\",\"version\":\"10.0.14393\"}}}"
[debug] [JSONWP Proxy] Proxying [POST /session] to [POST http://127.0.0.1:8000/wd/hub/session] with body: {"desiredCapabilities":{"chromeOptions":{"androidPackage":"com.tencent.
mm","androidUseRunningApp":true,"androidProcess":"com.tencent.mm:tools","androidDeviceSerial":"0123456789ABCDEF"}}}
[debug] [JSONWP Proxy] Got response with status 200: {"sessionId":"a3501a8a437dc4d9ec2700de1bcc95d3","status":0,"value":{"acceptSslCerts":true,"applicationCacheEnabled":false,"b
rowserConnectionEnabled":false,"browserName":"chrome","chrome":{"chromedriverVersion":"2.25.426923 (0390b88869384d6eb0d5d09729679f934aab9eed)"},"cssSelectorsEnabled":true,"datab
aseEnabled":false,"handlesAlerts":true,"hasTouchScreen":false,"javascriptEnabled":true,"locationContextEnabled":true,"mobileEmulationEnabled":false,"nativeEvents":true,"pageLoad
Strategy":"normal","platform":"ANDROID","rotatable":false,"takesHeapSnapshot":true,"takesScreenshot":true,"version":"37.0.0.0","webStorageEnabled":true}}
[debug] [Chromedriver] Changed state to 'online'
[debug] [MJSONWP] Responding to client with driver.setContext() result: null
[HTTP] <-- POST /wd/hub/session/0a5c638f-1489-4cb4-b5ae-435235699860/context 200 6266 ms - 76
[HTTP] --> GET /wd/hub/session/0a5c638f-1489-4cb4-b5ae-435235699860/title {}
[MJSONWP] Driver proxy active, passing request on via HTTP proxy
[debug] [JSONWP Proxy] Proxying [GET /wd/hub/session/0a5c638f-1489-4cb4-b5ae-435235699860/title] to [GET http://127.0.0.1:8000/wd/hub/session/a3501a8a437dc4d9ec2700de1bcc95d3/ti
tle] with body: {}
[debug] [JSONWP Proxy] Got response with status 200: "{\"sessionId\":\"a3501a8a437dc4d9ec2700de1bcc95d3\",\"status\":0,\"value\":\"测试平台\"}"

我切换成功
[debug] [JSONWP Proxy] Proxying [GET /status] to [GET http://127.0.0.1:8000/wd/hub/status] with no b
ody
[debug] [JSONWP Proxy] Got response with status 200: "{\"sessionId\":\"\",\"status\":0,\"value\":{\"
build\":{\"version\":\"alpha\"},\"os\":{\"arch\":\"x86_64\",\"name\":\"Windows NT\",\"version\":\"6.
1.7601 SP1\"}}}"
[debug] [JSONWP Proxy] Proxying [POST /session] to [POST http://127.0.0.1:8000/wd/hub/session] with
body: {"desiredCapabilities":{"chromeOptions":{"androidPackage":"com.tencent.mm","androidUseRunningA
pp":true,"args":[],"androidProcess":"com.tencent.mm:appbrand0","extensions":[],"androidDeviceSerial"
:"ZX1G4294SH"}}}
[debug] [JSONWP Proxy] Got response with status 200: {"sessionId":"83a43f95f4d58aaa08c13278d617eb15"
,"status":0,"value":{"acceptSslCerts":true,"applicationCacheEnabled":false,"browserConnectionEnabled
":false,"browserName":"chrome","chrome":{"chromedriverVersion":"2.26.436362 (5476ec6bf7ccbada1734a0c
dec7d570bb042aa30)"},"cssSelectorsEnabled":true,"databaseEnabled":false,"handlesAlerts":true,"hasTou
chScreen":false,"javascriptEnabled":true,"locationContextEnabled":true,"mobileEmulationEnabled":fals
e,"nativeEvents":true,"pageLoadStrategy":"normal","platform":"ANDROID","rotatable":false,"takesHeapS
napshot":true,"takesScreenshot":true,"unexpectedAlertBehaviour":"","version":"37.0.0.0","webStorageE
nabled":true}}
[debug] [Chromedriver] Changed state to 'online'
[debug] [MJSONWP] Responding to client with driver.setContext() result: null
[HTTP] <-- POST /wd/hub/session/9a81663a-b01d-4846-90e0-779e160c4644/context 200 5078 ms - 76、

但是找元素时候提示这个

[debug] [JSONWP Proxy] Got response with status 200: {"sessionId":"83a43f95f4d58aaa08c13278d617eb15"
,"status":7,"value":{"message":"no such element: Unable to locate element: {\"method\":\"xpath\",\"s
elector\":\"//*[text()='机票']\"}\n (Session info: webview=37.0.0.0)\n (Driver info: chromedriver=
2.26.436362 (5476ec6bf7ccbada1734a0cdec7d570bb042aa30),platform=Windows NT 6.1.7601 SP1 x86_64)"}}

原因大概知道了,去哪儿出行页面显示很丰富,但是 getsource 看到 body 是空的
😂 😂 😂 😂 😂 😂 😂 😂 ,所以 xpath 什么也找不到


#9 楼 @TheRoadNotTaken 您好 我这里始终切换不到 webview 试了好多方法都不行 log 里显示可用的 context 只有 NATIVE_APP,您遇到过这种情况吗

#6 楼 @utopia 转换 webview 后,我是能操作元素的。建议你再检查一下元素的定位信息。

#12 楼 @TheRoadNotTaken 因为我是在测试微信号中做测试,没法配置微信的菜单,只能通过对话框进入 H5 页面。 切换 context 应该就是在跳转到 H5 页面之后转吧,我的有时候会出现 WEBVIEW_com.tencent.mm:tools,但是也会报错

@TheRoadNotTaken 能定位是说小程序么

#8 楼 @utopia 不是小程序,是公众号里面的网页。

#13 楼 @zrleo 我这边也是在测试微信号里测试的,你可以实现整个过程自动化的,从手机自动解锁,自动启动微信程序,自动点点点进入到测试网页。人工是怎么进入目标页面的,就驱动手机做相应操作。不是很清楚配置微信菜单是什么情况,建议你发个新帖问问其他朋友。

#11 楼 @zrleo 看了你的 log,说了当前的 context 没有 webview 哦。建议你先搜索一下什么时候才需要转 context。如果你一进入微信,想要控制元素进入公众号之类的,在 native context 下就可以控制元素了。不需要转 context,公众号里面打开网页,这时要转 context。

info: [debug] Getting a list of available webviews
info: [debug] executing cmd: E:\appnium\android\sdk\android-sdk-windows\platform-tools\adb.exe -s 3332B087C13200EC shell "cat /proc/net/unix"
info: [debug] Available contexts:
info: [debug] []
info: [debug] Available contexts: NATIVE_APP
info: [debug] Responding to client with success: {"status":0,"value":["NATIVE_APP"],"sessionId":"3442571c-56e5-47e5-86e4-e2d4c12a5718"}
info: <-- GET /wd/hub/session/3442571c-56e5-47e5-86e4-e2d4c12a5718/contexts 200 198.187 ms - 86 {"status":0,"value":["NATIVE_APP"],"sessionId":"3442571c-56e5-47e5-86e4-e2d4c12a5718"}
info: --> POST /wd/hub/session/3442571c-56e5-47e5-86e4-e2d4c12a5718/context {"sessionId":"3442571c-56e5-47e5-86e4-e2d4c12a5718","name":"WEBVIEW_com.tencent.mm:tools"}
info: [debug] Getting a list of available webviews
info: [debug] executing cmd: E:\appnium\android\sdk\android-sdk-windows\platform-tools\adb.exe -s 3332B087C13200EC shell "cat /proc/net/unix"
info: [debug] Available contexts: NATIVE_APP
info: [debug] []
info: [debug] Available contexts: NATIVE_APP
info: [debug] Responding to client with error: {"status":35,"value":{"message":"No such context found.","origValue":"Context 'WEBVIEW_com.tencent.mm:tools' does not exist"},"sessionId":"3442571c-56e5-47e5-86e4-e2d4c12a5718"}
info: <-- POST /wd/hub/session/3442571c-56e5-47e5-86e4-e2d4c12a5718/context 500 74.620 ms - 177
info: [debug] Didn't get a new command in 60 secs, shutting down...
info: Shutting down appium session
info: [debug] Pressing the HOME button
info: [debug] executing cmd: E:\appnium\android\sdk\android-sdk-windows\platform-tools\adb.exe -s 3332B087C13200EC shell "input keyevent 3"
info: [debug] Stopping logcat capture
info: [debug] Logcat terminated with code null, signal SIGTERM
info: [debug] [BOOTSTRAP] [debug] Got data from client: {"cmd":"shutdown"}
info: [debug] [BOOTSTRAP] [debug] Got command of type SHUTDOWN
info: [debug] [BOOTSTRAP] [debug] Returning result: {"value":"OK, shutting down","status":0}
info: [debug] Sent shutdown command, waiting for UiAutomator to stop...
info: [debug] [BOOTSTRAP] [debug] Closed client connection
info: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: numtests=1
info: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: stream=.
info: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: id=UiAutomatorTestRunner
info: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: test=testRunServer
info: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: class=io.appium.android.bootstrap.Bootstrap
info: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: current=1

我的 log 是这样的,能不能帮忙看一下,谢谢

#14 楼 @TheRoadNotTaken 嗯 好的 谢谢哈 我和你的操作是一样的

#1 楼 @Tester957 我的情况和你一样,有什么好的解决方法吗?

—— 来自 TesterHome 官方 安卓客户端

> info: [debug] Connecting to chrome-backed webview
> info: Chromedriver: Changed state to 'starting'
> info: Chromedriver: Set chromedriver binary as: D:\Appium\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win\chromedriver.exe
> info: Chromedriver: Killing any old chromedrivers, running: FOR /F "usebackq tokens=5" %a in (`netstat -nao ^| findstr /R /C:"9515 "`) do (FOR /F "usebackq" %b in (`TASKLIST /FI "PID eq %a" ^| findstr /I chromedriver.exe`) do (IF NOT %b=="" TASKKILL /F /PID %a))
> info: Chromedriver: No old chromedrivers seemed to exist
> info: Chromedriver: Spawning chromedriver with: D:\Appium\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win\chromedriver.exe --url-base=wd/hub --port=9515
> info: Chromedriver: [STDOUT] Starting ChromeDriver 2.18.343845 (73dd713ba7fbfb73cbb514e62641d8c96a94682a) on port 9515
> Only local connections are allowed.
> info: JSONWP Proxy: Proxying [GET /status] to [GET http://127.0.0.1:9515/wd/hub/status] with no body
> info: JSONWP Proxy: Got response with status 200: "{\"sessionId\":\"\",\"status\":0,\"value\":{\"build\":{\"version\":\"alpha\"},\"os\":{\"arch\":\"x86_64\",\"name\":\"Windows NT\",\"version\":\"6.1 SP1\"}}}"
> info: JSONWP Proxy: Proxying [POST /session] to [POST http://127.0.0.1:9515/wd/hub/session] with body: {"desiredCapabilities":{"chromeOptions":{"androidPackage":"com.quantum.Tmsp7","androidUseRunningApp":true,"androidDeviceSerial":"9298e3e5"}}}
> info: JSONWP Proxy: Got response with status 200: {"sessionId":"e99d4f25a7d1ed109a7bf5a59df93aa7","status":13,"value":{"message":"unknown error: Device 9298e3e5 is not online\n  (Driver info: chromedriver=2.18.343845 (73dd713ba7fbfb73cbb514e62641d...
> info: JSONWP Proxy: Proxying [POST /session] to [POST http://127.0.0.1:9515/wd/hub/session] with body: {"desiredCapabilities":{"chromeOptions":{"androidPackage":"com.quantum.Tmsp7","androidUseRunningApp":true,"androidDeviceSerial":"9298e3e5"}}}
> info: JSONWP Proxy: Got response with status 200: {"sessionId":"440c50570a1f7c28a06f590340979f51","status":13,"value":{"message":"unknown error: Device 9298e3e5 is not online\n  (Driver info: chromedriver=2.18.343845 (73dd713ba7fbfb73cbb514e62641d...
> info: JSONWP Proxy: Proxying [POST /session] to [POST http://127.0.0.1:9515/wd/hub/session] with body: {"desiredCapabilities":{"chromeOptions":{"androidPackage":"com.quantum.Tmsp7","androidUseRunningApp":true,"androidDeviceSerial":"9298e3e5"}}}
> info: JSONWP Proxy: Got response with status 200: {"sessionId":"7181aad8d442038eb88a3812db5dcd10","status":13,"value":{"message":"unknown error: Device 9298e3e5 is not online\n  (Driver info: chromedriver=2.18.343845 (73dd713ba7fbfb73cbb514e62641d...
> error: Chromedriver: Chromedriver exited unexpectedly with code null, signal SIGTERM
> info: Chromedriver: Changed state to 'stopped'
> warn: Chromedriver for context WEBVIEW_com.quantum.Tmsp7 stopped unexpectedly
> warn: Chromedriver quit unexpectedly, but it wasn't the active context, ignoring
> error: Chromedriver: Error: An unknown server-side error occurred while processing the command. (Original error: unknown error: Device 9298e3e5 is not online
>   (Driver info: chromedriver=2.18.343845 (73dd713ba7fbfb73cbb514e62641d8c96a94682a),platform=Windows NT 6.1 SP1 x86_64))
>     at JWProxy.command$ (lib/proxy.js:133:15)

楼主的消息是:
[debug] [Chromedriver] Changed state to 'stopped'
[Chromedriver] Error: chrome not reachable

我的 log 是这样的,讨论看下,是不是一个问题

error: Chromedriver: Chromedriver exited unexpectedly with code null, signal SIGTERM
info: Chromedriver: Changed state to 'stopped'
warn: Chromedriver for context WEBVIEW_com.quantum.Tmsp7 stopped unexpectedly
warn: Chromedriver quit unexpectedly, but it wasn't the active context, ignoring
error: Chromedriver: Error: An unknown server-side error occurred while processing the command. (Original error: unknown error: Device 9298e3e5 is not online

@TheRoadNotTaken 微信小程序 我 click 就动了一下 没有进入 但是代码是执行成功了 知道什么情况吗

#17 楼 @luke 我觉得是类似的情况。

@TheRoadNotTaken 进入 Webview 后不能操作页面元素,知道怎么解决么?定位方法没问题,提示:rg.openqa.selenium.NoSuchSessionException: no such session
(Driver info: chromedriver=2.22.397929 (fb72fb249a903a0b1041ea71eb4c8b3fa0d9be5a),platform=Mac OS X 10.12.2 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 28 milliseconds
Build info: version: '3.0.1', revision: '1969d75', time: '2016-10-18 09:49:13 -0700'
System info: host: 'localhost', ip: '127.0.0.1', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.12.2', java.version: '1.8.0_121'
Driver info: io.appium.java_client.android.AndroidDriver
Capabilities [{app=, appPackage=com.tencent.mm, networkConnectionEnabled=true, noReset=true, warnings={}, databaseEnabled=false, deviceName=57b51c43, fullReset=false, platform=ANDROID, deviceUDID=57b51c43, appActivity=.ui.LauncherUI, desired={app=, appPackage=com.tencent.mm, noReset=true, deviceName=A02AECPB2CLTG, fullReset=false, platform=ANDROID, appActivity=.ui.LauncherUI, platformVersion=5.1.1, automationName=Appium, browserName=, fastReset=false, chromeOptions={args=[], extensions=[], androidProcess=com.tencent.mm:tools}, platformName=Android}, platformVersion=5.1.1, webStorageEnabled=false, locationContextEnabled=false, automationName=Appium, takesScreenshot=true, browserName=, javascriptEnabled=true, fastReset=false, chromeOptions={args=[], extensions=[], androidProcess=com.tencent.mm:tools}, platformName=Android}]
Session ID: b5fee2fb-cc51-422d-8b01-eb742b86a603
*** Element info: {Using=xpath, value=//*[contains(@url, '古代')]}

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:216)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:168)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:635)
at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:51)
at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)
at io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:368)
at io.appium.java_client.DefaultGenericMobileDriver.findElement(DefaultGenericMobileDriver.java:67)
at io.appium.java_client.AppiumDriver.findElement(AppiumDriver.java:1)
at io.appium.java_client.android.AndroidDriver.findElement(AndroidDriver.java:1)
at org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:473)
at io.appium.java_client.DefaultGenericMobileDriver.findElementByXPath(DefaultGenericMobileDriver.java:145)
at io.appium.java_client.AppiumDriver.findElementByXPath(AppiumDriver.java:1)
at io.appium.java_client.android.AndroidDriver.findElementByXPath(AndroidDriver.java:1)
at Weixin.MiniProgramTest.miniProgramTest(MiniProgramTest.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:100)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:646)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:811)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1137)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)
at org.testng.TestRunner.privateRun(TestRunner.java:753)
at org.testng.TestRunner.run(TestRunner.java:607)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:368)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:363)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:321)
at org.testng.SuiteRunner.run(SuiteRunner.java:270)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1284)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1209)
at org.testng.TestNG.runSuites(TestNG.java:1124)
at org.testng.TestNG.run(TestNG.java:1096)
at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72)
at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:127)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

Lyndon1 回复

你好,你的这个问题解决了吗?是怎么解决的呢?可以分享一下吗

大神,我切换的时候是这样报错,请问下是什么原因呢?

http 回复

跟你一样的,请问解决了没。卡了我好久了

我想问下 我再转换后打印 driver.getcontext() 有时能打印出来,有时就不能。能的时候就可以执行下一步的元素点击操作了。
这是什么情况呢?


报错 chrome not reachable,同求解决方法,QQ188368459

通过设置 Internet Properties->connections->LAN settings, set 'Bypass proxy server for local addresses'

这个设置在哪里啊,想请问一下

你好,我也出现这个问题,请问你解决了没

还有人活跃吗,我这边也是一直解决不了,报错 chrome not reachable

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