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

如何在Github Actions中为Django+React项目运行Selenium webdriver测试

可直接落地的规避方案

方案1:后台挂载运行开发服务+就绪检测

这是改动最小的方案,适配你本地的现有运行逻辑:

  • 给阻塞式启动命令末尾加&符号,让进程在CI环境的后台运行,不会卡住后续步骤
  • 新增服务就绪检测逻辑,等前后端端口可正常访问后再执行Selenium测试,避免服务未启动完成就跑测试的报错问题

以下是可用的GitHub Actions工作流片段参考:

steps:
  # 省略前面的代码拉取、依赖安装、数据库初始化等步骤
  - name: 安装端口检测工具wait-on
    run: npm install -g wait-on
  - name: 启动Django后端服务
    run: python manage.py runserver 0.0.0.0:8000 &
  - name: 启动React前端服务
    run: npm start &
  - name: 等待前后端服务完全启动
    run: wait-on http://localhost:8000 http://localhost:3000
  - name: 执行Selenium测试
    run: python -m pytest  # 替换为你实际的测试执行命令

方案2:使用生产级服务运行(更稳定)

开发服务器(python manage.py runserver、npm start默认的开发模式)本身是为本地调试设计,在CI环境用生产模式运行稳定性更高,也能规避很多开发环境特有的问题:

  • React端先执行npm run build构建静态资源,再用serve等轻量静态服务挂载
  • Django端用gunicorn等生产级WSGI服务器替代runserver

对应命令参考:

steps:
  # 省略前置步骤
  - name: 安装依赖工具
    run: |
      npm install -g wait-on serve
      pip install gunicorn
  - name: 构建React静态资源
    run: npm run build
  - name: 启动Django生产服务
    run: gunicorn 你的项目名.wsgi:application --bind 0.0.0.0:8000 &
  - name: 启动React静态资源服务
    run: serve -s build -l 3000 &
  - name: 等待服务就绪
    run: wait-on http://localhost:8000 http://localhost:3000
  - name: 执行Selenium测试
    run: python -m pytest

注意事项

  • Selenium测试配置要指定无头模式运行,CI环境默认没有图形界面,不开启无头模式会直接报错
  • 前后端服务启动时要绑定0.0.0.0地址,不要只绑定127.0.0.1,避免CI环境的网络访问限制导致服务不通
  • GitHub Actions Job运行结束后后台进程会自动销毁,不需要额外手动终止进程

内容的提问来源于stack exchange,提问作者The S.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:54:03