解决Chromedriver报错unable to find open port

报错信息如下:

[0.995][SEVERE]: bind() returned an error: ?????????????(Э??/???????/???)??????
????Ρ? (0x2740)
info: JSONWP Proxy: Got response with status 200: {"sessionId":"9aec62a73f2f11cc
e25a3d465414b33f","status":13,"value":{"message":"unknown error: cannot reserve
port for Chrome\nfrom unknown error: unable to find open port\n  (Driver info: c
hromedr...
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 unknown server-side error occurred while processi
ng the command. (Original error: unknown error: cannot reserve port for Chrome
from unknown error: unable to find open port
  (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 (C:\Program Files (x86)\Appium\node_modules\appium\node_modules\
appium-chromedriver\node_modules\appium-jsonwp-proxy\node_modules\babel-runtime\
regenerator\runtime.js:67:40)
    at GeneratorFunctionPrototype.invoke [as _invoke] (C:\Program Files (x86)\Ap
pium\node_modules\appium\node_modules\appium-chromedriver\node_modules\appium-js
onwp-proxy\node_modules\babel-runtime\regenerator\runtime.js:315:22)
    at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (C:\P
rogram Files (x86)\Appium\node_modules\appium\node_modules\appium-chromedriver\n
ode_modules\appium-jsonwp-proxy\node_modules\babel-runtime\regenerator\runtime.j
s:100:21)
    at GeneratorFunctionPrototype.invoke (C:\Program Files (x86)\Appium\node_mod
ules\appium\node_modules\appium-chromedriver\node_modules\appium-jsonwp-proxy\no
de_modules\babel-runtime\regenerator\runtime.js:136:37)
    at bound (domain.js:250:14)
    at GeneratorFunctionPrototype.runBound (domain.js:263:12)
    at run (C:\Program Files (x86)\Appium\node_modules\appium\node_modules\appiu
m-chromedriver\node_modules\appium-jsonwp-proxy\node_modules\babel-runtime\node_
modules\core-js\library\modules\es6.promise.js:89:39)
    at C:\Program Files (x86)\Appium\node_modules\appium\node_modules\appium-chr
omedriver\node_modules\appium-jsonwp-proxy\node_modules\babel-runtime\node_modul
es\core-js\library\modules\es6.promise.js:100:28
    at flush (C:\Program Files (x86)\Appium\node_modules\appium\node_modules\app
ium-chromedriver\node_modules\appium-jsonwp-proxy\node_modules\babel-runtime\nod
e_modules\core-js\library\modules\$.microtask.js:17:13)
    at doNTCallback0 (node.js:407:9)
    at process._tickDomainCallback (node.js:377:13)
 { [Error: An unknown server-side error occurred while processing the command. (
Original error: unknown error: cannot reserve port for Chrome
from unknown error: unable to find open port
  (Driver info: chromedriver=2.18.343845 (73dd713ba7fbfb73cbb514e62641d8c96a9468
2a),platform=Windows NT 6.1 x86_64))]
  status: 13,
  value: { message: 'unknown error: cannot reserve port for Chrome\nfrom unknown
 error: unable to find open port\n  (Driver info: chromedriver=2.18.343845 (73dd
713ba7fbfb73cbb514e62641d8c96a94682a),platform=Windows NT 6.1 x86_64)' },
  httpCode: 200 }

问题原因:每次New AppiumDriver和切换Webview的时候,adb.exe会占用大量端口,而chromedriver每次退出后会寻找新的端口,此问题是chromdriver找不到可用的端口就会报错。

解决办法:测试完成后通过结束adb进程来释放所有adb.exe占用的端口。

Runtime.getRuntime().exec("taskkill /f /im adb.exe");
Thread.sleep(3000);
Runtime.getRuntime().exec("adb start-server"); //若要长时间保持手机与电脑连接,需要继续使用adb start-server来保持连接。

 

posted @ 2017-06-13 20:14  ycyzharry  阅读(2007)  评论(0)    收藏  举报