解决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来保持连接。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构