Docker环境下Codeception调用Selenium报net::ERR_CONNECTION_REFUSED
问题排查与解决方案
核心问题:错误配置了BrowserStack专属的capabilities参数
你当前在acceptance.suite.dist.yml的WebDriver配置中加入了os、os_version、browserstack.local等仅适用于BrowserStack云测试服务的参数,这会导致WebDriver请求被转发到公网的BrowserStack服务,而BrowserStack的节点无法访问你本地Docker网络内的私有域名http://mmc.nginx,自然会报连接被拒绝。你测试Google能成功,是因为Google是公网可访问的站点,BrowserStack节点可以正常访问。
解决方案
删掉WebDriver配置下的所有capabilities相关配置即可,修改后的配置段如下:
- WebDriver: url: 'http://mmc.nginx' host: mmc.selenium port: '4444' window_size: 1920x1200 browser: 'chrome' wait: 60
第二个常见问题:配置文件未生效
Codeception默认读取的验收测试配置文件是acceptance.suite.yml,你当前给出的是模板文件acceptance.suite.dist.yml,如果没有将.dist模板复制为正式配置文件,你的修改不会生效。
解决方案
在Codeception配置根目录执行以下命令复制配置:cp acceptance.suite.dist.yml acceptance.suite.yml
修改完成后执行codecept build重建配置缓存后再运行测试。
可选网络验证步骤
如果修改完上述配置后仍有问题,可以进入Selenium容器验证网络连通性:
- 执行
docker exec -it mmc-selenium bash进入Selenium容器 - 执行
ping mmc.nginx验证域名解析是否正常 - 执行
curl http://mmc.nginx验证Nginx服务是否可以正常访问
内容的提问来源于stack exchange,提问作者William Francis Gomes
相关产品推荐
相关产品推荐

