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

Codeception WebDriver无法访问localhost 请求协助排查问题

解决Codeception+Docker Selenium无法访问宿主机localhost的问题

这是个典型的Docker容器网络场景问题,核心原因是Selenium容器内部的localhost指向容器自身,而非你的宿主机,所以容器里的Chrome无法访问到你本地运行在localhost:8888的服务。下面是具体的解决步骤:

1. 修改Codeception配置中的目标URL

将acceptance.suite.yaml里的url参数替换为Docker能识别的宿主机地址:

  • 对于macOS/Linux/Windows(Docker Desktop),可以直接使用Docker内置的域名host.docker.internal,它会自动映射到宿主机的IP:
actor: AcceptanceTester
modules:
  enabled:
    - WebDriver:
        url: 'https://host.docker.internal:8888'  # 替换原localhost为host.docker.internal
        browser: chrome
        clear_cookies: true
        port: 4444
        capabilities:
          browser: chrome
          goog:chromeOptions:
            w3c: false
  • 如果host.docker.internal无法生效,也可以直接使用宿主机的局域网IP(比如192.168.1.100:8888),确保Selenium容器能通过网络访问到这个IP。

2. 确保本地服务监听正确的地址

检查你本地运行的服务是否仅绑定了127.0.0.1(即只能本机访问),如果是,需要修改为绑定0.0.0.0,这样才能允许来自Docker容器的连接。比如启动服务时指定监听地址:

# 示例:假设你的服务是用PHP内置服务器启动
php -S 0.0.0.0:8888

3. 额外排查项

  • 检查宿主机防火墙设置,确保8888端口允许来自Docker容器所在网络的入站连接;
  • 如果你使用了自定义Docker网络而非默认的桥接网络,需要确认网络配置允许容器与宿主机互通。

为什么外部网站能正常运行?

因为外部网站是公网可访问的地址,Selenium容器可以通过宿主机的网络正常解析并访问这些地址,而localhost在容器内部指向自身,自然找不到你宿主机上的服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 23:37:48