Appium+Java安卓模拟器测试报Can't stop process错误如何解决
错误根因分析
该报错本质是chromedriver进程启动失败,Appium在会话初始化失败后尝试终止不存在的chromedriver进程触发报错,常见诱因如下:
- chromedriver版本与模拟器内置Chrome浏览器版本不匹配:安卓9系统自带Chrome大版本通常为70-73区间,若本地使用的chromedriver版本不在对应兼容区间,会直接启动失败,无运行中的进程供Appium终止。
- chromedriver路径配置错误或无执行权限:代码中配置的
chromedriverExecutable路径与实际文件存放路径不一致,或是Windows系统权限限制,导致Appium无法拉起chromedriver.exe进程。 - 端口被占用:日志显示chromedriver尝试绑定8000端口,若该端口被残留的chromedriver进程或其他服务占用,会直接导致进程启动失败。
- 配置冲突:新增的
w3c: false配置与当前使用的Selenium 3.141.59、Appium服务版本不适配,导致chromedriver启动参数异常。
解决方案
- 匹配驱动版本:打开安卓模拟器,进入「设置-应用-查看全部应用-找到Chrome」,查看其具体版本号,下载对应大版本的chromedriver替换项目resources目录下的exe文件即可,安卓9对应Chrome版本通常适配chromedriver 2.46~73.x区间。
- 校验路径与权限:将代码中配置的chromedriver绝对路径复制到Windows资源管理器地址栏,确认可正常定位到exe文件;若路径正确,右键点击chromedriver.exe,选择「属性-安全」,给当前登录用户添加「读取和执行」权限。
- 清理端口占用与残留进程:打开Windows任务管理器,结束所有运行中的chromedriver.exe进程;再打开CMD执行
netstat -ano | findstr "8000",若有进程占用8000端口,执行taskkill /f /pid [对应PID]杀掉进程,也可以在capability中新增配置cap.setCapability("chromedriverPort", 9515);切换为chromedriver默认的9515端口避免冲突。 - 调整适配配置:删除
cap.setCapability("appium:chromeOptions", ImmutableMap.of("w3c", false));这行配置,Selenium 3.141.59默认兼容W3C协议,强制关闭反而会触发版本适配问题。 - 前置验证:修改完配置后,双击启动本地的chromedriver.exe,若无闪退、控制台输出端口监听日志,说明驱动本身可正常运行,再执行测试即可。
内容的提问来源于stack exchange,提问作者Asanga Korala
相关产品推荐
相关产品推荐

