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

Lando环境下Drupal10集成Behat+Selenium4会话超时问题求助

解决方案:Lando环境下Drupal10 + Behat + Selenium4集成问题排查

一、核心兼容问题说明

Behat的MinkExtension从v2.7+开始支持Selenium4,完全不能沿用selenium2配置节点,旧配置与Selenium4不兼容,这是触发后续错误的核心原因之一。

二、修正Behat配置适配Selenium4

标准Behat.yml配置示例(适配Lando环境)

default:
  suites:
    default:
      contexts:
        - Drupal\DrupalExtension\Context\DrupalContext
        - Drupal\DrupalExtension\Context\MinkContext
        - Drupal\DrupalExtension\Context\MessageContext
  extensions:
    Drupal\DrupalExtension:
      blackbox: ~
      api_driver: 'drupal'
      drupal:
        drupal_root: './web'
    Behat\MinkExtension:
      base_url: "http://your-drupal-site.lndo.site" # 替换为你的Lando站点域名
      sessions:
        default:
          selenium4:
            browser: chrome
            capabilities:
              browserName: chrome
              goog:chromeOptions:
                args:
                  - "--headless=new" # Selenium4推荐的无头模式参数,旧--headless已废弃
                  - "--no-sandbox"
                  - "--disable-dev-shm-usage"
            wd_host: "http://selenium:4444/wd/hub" # 用Lando服务名替代固定IP,避免IP动态变动问题

关键配置要点:

  • 替换原selenium2节点为selenium4
  • 禁止使用固定IP访问Selenium,直接用Lando服务名(如selenium),依赖Lando内部DNS解析容器动态IP
  • 确保Chrome启动参数为Selenium4兼容的新版本格式

三、修正Lando的Selenium服务配置

在.lando.yml中配置兼容Selenium4的官方镜像,保证Chrome、Chromedriver版本匹配:

services:
  selenium:
    type: compose
    services:
      image: selenium/standalone-chrome:4.16.0-20240123 # 选择对应Chrome版本的镜像,需与容器内版本一致
      ports:
        - "4444:4444"
        - "7900:7900" # 可选,VNC端口用于可视化查看浏览器
    command: /opt/bin/entry_point.sh

要点:

  • 必须使用Selenium4官方镜像,禁止混用Selenium3镜像
  • 镜像版本需与容器内Chrome、Chromedriver主版本完全一致,避免版本不匹配报错

四、排查网络与Chromedriver 500错误

  1. ping不通固定IP问题

    • Lando容器IP为动态分配,重启服务后会变动,禁止用固定IP访问Selenium,改用服务名selenium即可
    • 测试连通性可在Lando app容器内执行ping selenium
  2. Chromedriver HTTP 500错误

    • 优先检查版本匹配:执行docker exec -it <selenium容器ID> google-chrome --version和docker exec -it <selenium容器ID> chromedriver --version,确保主版本完全一致
    • 检查Chrome启动参数:替换旧的--headless为--headless=new
    • 权限问题:添加--no-sandbox和--disable-dev-shm-usage参数解决容器内Chrome启动权限限制

五、验证步骤

  1. 重启Lando服务:lando rebuild -y
  2. 进入app容器:lando ssh
  3. 测试Selenium连通性:curl http://selenium:4444/wd/hub/status,返回JSON状态信息则服务正常
  4. 运行Behat测试:./vendor/bin/behat

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 07:16:12