以编程方式启动Appium服务器遇连接拒绝问题求助
嘿,我来帮你搞定这个Appium启动时的连接拒绝问题!结合你用Maven+TestNG的场景,给你几个实用的排查方向和解决办法:
常见排查与解决方案
1. 先确认Appium服务真的启动成功了
你是用代码自动启动Appium的,得先排查启动逻辑有没有问题:
- 检查启动Appium的代码(比如执行
appium --port 4723这类命令的逻辑)有没有抛出异常但没被捕获?说不定服务根本没起来。 - 手动在命令行敲一遍相同的启动命令,看看能不能正常启动,有没有报错(比如端口被占、Node.js或者Appium依赖缺失)。
2. 检查目标端口是否被占用或未被监听
Connection refused最常见的原因就是指定的端口没被Appium监听。你可以这么做:
- 在Windows命令行执行
netstat -ano | findstr :4723,查看4723端口是否被其他进程占用,或者Appium是否真的在监听这个端口。 - 如果端口被占,要么杀掉占用的进程,要么在代码里换一个未被占用的端口启动Appium,同时记得在DesiredCapabilities里同步修改
appium:port参数。
3. 给Appium服务留足初始化时间
有时候代码启动Appium后立刻就去连Driver,服务还没完全初始化好,就会导致连接拒绝。你可以在启动代码后加一段等待:
// 启动Appium服务的代码逻辑 appiumService.start(); // 等待服务完成初始化,这里用sleep只是示例,也可以用轮询检查端口连通性的方式更优雅 Thread.sleep(5000); // 再初始化Driver WebDriver driver = new AppiumDriver(new URL("http://localhost:4723/wd/hub"), capabilities);
4. 核对DesiredCapabilities的连接配置
确保你的capabilities里的连接地址和端口和Appium启动的完全一致:
- 比如Appium启动在
localhost:4723,那Driver的URL必须是http://localhost:4723/wd/hub,别写错路径或者端口。 - 另外,
appium:platformName、appium:deviceName这些核心参数也得正确,有些配置错误也可能间接导致连接失败。
5. 检查版本兼容性
你的日志里Selenium版本是3.10.0,这个版本比较老了,要确认和你用的Appium版本是否兼容:
- 如果Appium是2.x版本,Selenium 3.x大概率会有兼容性问题,建议升级Selenium到4.x的稳定版本,或者把Appium降级到1.x的稳定版。
6. 排查防火墙或代理干扰
Windows的防火墙可能会阻止本地Appium服务的连接:
- 可以临时关闭防火墙试试能不能连接成功,如果可以,就给Appium添加防火墙允许规则。
- 要是有代理软件在运行,也可能干扰本地连接,试试关闭代理再测试。
内容的提问来源于stack exchange,提问作者shashank shekhar




