Selenium4下使用Behat+Mink Selenium2驱动运行Edge测试的问题
问题解答
可行性说明
可以在Selenium 4 Grid环境下,使用Mink Selenium2驱动在Edge浏览器上运行测试,你遇到的是启动配置不匹配导致的Edge启动失败问题。
问题根因
你遇到的DevToolsActivePort文件不存在报错,本质是两个核心问题:
- Mink Selenium2的Edge能力配置层级错误,Selenium4无法正确识别你配置的启动参数
- Edge远程调试端口默认绑定本地回环地址,Grid节点无法访问,导致端口绑定失败
解决方案步骤
1. 修正Behat配置结构
把edgeOptions从extra_capabilities层级移出,直接放在selenium2.capabilities下,同时追加缺少的必要启动参数,修正后配置如下:
default: suites: default: filters: tags: ~@wip paths: ['%paths.base%/storage/features'] gherkin: cache: ~ extensions: Behat\MinkExtension: base_url: http://www.google.com javascript_session: selenium2 browser_name: edge selenium2: capabilities: browserName: MicrosoftEdge edgeOptions: args: - "--no-sandbox" - "--disable-dev-shm-usage" - "--headless" - "--disable-gpu" - "--dns-prefetch-disable" - "--disable-setuid-sandbox" - "--window-size=1920,1080" - "--remote-debugging-port=9222" # 新增以下三个参数解决端口绑定和启动崩溃问题 - "--remote-debugging-address=0.0.0.0" - "--no-first-run" - "--no-default-browser-check"
2. 校验版本匹配
确认Selenium Grid节点上安装的Edge浏览器大版本和msedgedriver版本完全一致,你日志中msedgedriver版本为95.0.1020.30,对应Edge浏览器也必须为95系列版本,版本不匹配会直接导致启动崩溃。
3. 容器环境额外校验
如果Selenium Grid节点运行在Docker容器内:
- 确认
/usr/bin/microsoft-edge文件存在且有可执行权限 - 若以非root用户运行容器,确保
--no-sandbox参数已正确配置
4. 兼容性优化
如果调整配置后依然报错,可根据Edge版本调整无头模式参数:
- Edge 96及以上版本,将
--headless替换为--headless=new,使用新的无头模式,兼容性更强 - 追加
--disable-features=VizDisplayCompositor参数,屏蔽GPU渲染相关的组件,降低启动崩溃概率
内容的提问来源于stack exchange,提问作者Scobee
相关产品推荐
相关产品推荐

