更新webdriver-manager后出现SessionNotCreatedError问题排查
解决更新webdriver-manager后出现的SessionNotCreatedError问题
刚更新webdriver-manager到12.1.5就碰上个会话创建失败的问题,结合你给出的环境(Node 10.15.3、Protractor 5.4.2、Chrome)和之前一直能用的配置,我梳理了几个最可能的原因和对应的解决办法:
1. 新旧版本不兼容,踩了版本匹配的坑
Protractor 5.4.2是2019年的老版本了,它和webdriver-manager的新版本兼容性不太好。webdriver-manager 12.x在Selenium Server交互逻辑、ChromeDriver下载机制上都有不少改动,旧版Protractor根本跟不上这些变化,自然就创建不了会话了。
怎么解决:
- 先降级webdriver-manager到和Protractor 5.4.2适配的稳定版本,执行命令:
npm install webdriver-manager@12.0.6,这个版本是当时和5.x Protractor搭配的常用稳定版本; - 如果打算长期维护,也可以考虑升级Protractor到7.x版本,但要注意Node 10.15.3可能不支持最新的Protractor,得先确认版本兼容情况。
2. 配置里藏着无效/错误参数,被新版本严格校验拦下来了
你的配置里有几个细节问题,旧版本可能睁一只眼闭一只眼,但新版本webdriver-manager对参数校验更严,直接就卡壳了:
- Alert行为参数拼写错误:你写的是
"unexpectedAlertBehaviour": "accept",但WebDriver的标准参数是美式拼写unexpectedAlertBehavior(最后是Behavior不是Behaviour),这个拼写错误会让WebDriver识别不了配置; - 添加了非标准Capabilities参数:
"perform": "ANY"和"version": "ANY"这俩不是WebDriver官方认可的参数,旧版本可能忽略,但新版本会直接判定配置无效; - Chrome启动参数冲突/失效:
--start-maximized和--headless一起用完全没用,无头模式下根本没有窗口,这个参数反而可能引发配置错误;另外--enable-thread-composting这个参数在新的Chrome/ChromeDriver里已经被移除了,属于无效参数。
怎么解决:
- 把
unexpectedAlertBehaviour改成unexpectedAlertBehavior,修正拼写; - 删掉
"perform": "ANY"和"version": "ANY"这两个非标准参数; - 清理无效的Chrome启动参数:去掉
--start-maximized和--enable-thread-composting,要是不确定--enable-gpu-benchmarking还能用,也可以先注释掉试试。
3. 重复配置引发冲突
你既设置了seleniumAddress,又在params.perf.selenium里重复定义了一遍Selenium的连接信息,虽然这是自定义参数,但在新版本环境下可能和Protractor的内部逻辑撞车,导致会话创建失败。
怎么解决:
- 先暂时注释掉
params.perf下的那堆Selenium配置,测试下能不能正常创建会话; - 如果需要保留这部分自定义参数,得确保它和Protractor的核心配置字段没有重叠冲突。
4. ChromeDriver和Chrome版本不匹配
webdriver-manager 12.x可能默认下载了较新的ChromeDriver,而你的Chrome浏览器版本比较旧,两者不兼容就会导致会话创建失败。
怎么解决:
- 先查看你的Chrome浏览器版本,然后手动指定对应版本的ChromeDriver,执行命令:
webdriver-manager update --chrome --versions.chrome=xxx.xxx.xxx(把xxx换成你的Chrome版本号); - 或者直接把Chrome浏览器升级到和当前ChromeDriver兼容的版本。
排查建议
建议按这个顺序来排查:
- 先降级webdriver-manager到兼容版本,看看问题是不是直接解决了;
- 如果降级没用,再清理配置里的错误/无效参数;
- 最后检查ChromeDriver和Chrome的版本匹配情况。
内容的提问来源于stack exchange,提问作者TOBi
相关产品推荐
相关产品推荐

