You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker环境下使用Selenium运行Behat测试的配置问题排查

问题分析与解决方案

从你给出的报错信息来看,这个问题大概率和Behat的Selenium客户端配置以及browser容器的Selenium服务配置不匹配有关,XpiDriverService的错误提示说明Behat尝试使用旧版的Firefox驱动(XPI格式)来连接,但Selenium 3.8.1已经需要使用GeckoDriver来驱动Firefox了。下面是具体的排查和修复步骤:

1. 检查Behat配置文件(通常是behat.yml)的Selenium部分

你的当前配置大概率存在不兼容的问题,正确的配置应该明确指定浏览器驱动类型,并启用Marionette(Selenium 3+驱动Firefox的必要参数)。示例配置如下:

default:
  extensions:
    Behat\MinkExtension:
      base_url: 'http://drupalfront' # 指向你的Drupal站点容器地址
      sessions:
        selenium:
          selenium2:
            wd_host: 'http://browser:4444/wd/hub'
            browser: firefox
            capabilities:
              extra_capabilities:
                marionette: true # 必须开启,适配Selenium 3+的Firefox驱动
  • 重点确认项:
    • browser字段是否明确设置为firefox(如果你的browser容器用的是Firefox)
    • 是否添加了marionette: true配置,这是解决XpiDriverService错误的核心
    • wd_host地址是否与你使用的一致:http://browser:4444/wd/hub

2. 验证browser容器的Selenium服务是否包含正确驱动

如果你的browser容器使用的是官方Selenium镜像,要确保是预装GeckoDriver的版本(比如selenium/standalone-firefox,而非仅带旧版XPI驱动的镜像)。可以进入容器验证:

# 进入browser容器
docker exec -it browser bash
# 检查GeckoDriver是否存在
which geckodriver

如果未找到该驱动,建议更换为对应版本的官方镜像:

docker run -d --name browser selenium/standalone-firefox:3.8.1

3. 检查Behat扩展版本兼容性

确保behat/mink-selenium2-driver版本与Selenium 3.8.1兼容,旧版本可能不支持Marionette驱动。可以通过Composer更新到适配版本:

composer require behat/mink-selenium2-driver:^1.4

4. 测试容器间的网络连通性

从drupalfront容器内部测试是否能正常访问browser的Selenium hub,排除网络问题:

# 进入drupalfront容器
docker exec -it drupalfront bash
# 用curl测试连通性
curl http://browser:4444/wd/hub/status

如果返回JSON格式的状态信息,说明网络连通正常;如果无法访问,需确认两个容器是否在同一个Docker网络中。


内容的提问来源于stack exchange,提问作者Potney Switters

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:07:58