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

在Travis CI中用Sauce Labs运行Django项目Selenium测试遇SSL错误

解决Travis+Sauce Connect+Django功能测试的SSL EOF错误

根据你提供的堆栈跟踪和代码配置,这个ssl.SSLEOFError问题大概率是因为错误地用HTTPS协议访问本地Sauce Connect代理导致的,结合其他可能的配置疏漏,给你几个具体的修复方案:

1. 修正WebDriver的命令执行器协议

你的代码里用了https://%s/wd/hub连接Sauce Connect,但本地的Sauce Connect代理(监听localhost:4445)是HTTP协议的,并不提供SSL证书,这直接触发了SSL握手失败。把协议改成http://就能解决这个核心问题:

def setUp(self):
    if "TRAVIS" in environ:
        username = environ["SAUCE_USERNAME"]
        access_key = environ["SAUCE_ACCESS_KEY"]
        capabilities = {}
        capabilities["tunnel-identifier"] = environ["TRAVIS_JOB_NUMBER"]
        hub_url = "%s:%s@localhost:4445" % (username, access_key)
        capabilities["build"] = environ["TRAVIS_BUILD_NUMBER"]
        capabilities["tags"] = [environ["TRAVIS_PYTHON_VERSION"], "CI"]
        # 关键修改:将https改为http
        self.selenium = webdriver.Remote(
            desired_capabilities=capabilities, 
            command_executor="http://%s/wd/hub" % hub_url
        )
    else:
        self.selenium = webdriver.Safari()
    super(FunctionalTestCase, self).setUp()

2. 确保Sauce Connect隧道正确启动并就绪

在Travis的构建脚本中,要保证Sauce Connect完全启动后再运行测试,且参数配置正确:

  • 下载最新版本的Sauce Connect,避免旧版本的兼容性问题
  • 添加--no-ssl-bump-domains localhost确保本地Django服务器的请求不被SSL拦截
  • 用&让隧道后台运行,并预留足够的等待时间(比如10秒)

示例Travis配置片段:

before_script:
  # 启动Sauce Connect隧道
  - wget https://saucelabs.com/downloads/sc-latest-linux.tar.gz
  - tar -xzf sc-latest-linux.tar.gz
  - cd sc-*-linux
  - ./bin/sc -u $SAUCE_USERNAME -k $SAUCE_ACCESS_KEY -i $TRAVIS_JOB_NUMBER --no-ssl-bump-domains localhost &
  - sleep 10
  # 启动Django开发服务器
  - python manage.py runserver 0.0.0.0:8000 &
  - sleep 5

3. 检查Django服务器的绑定地址

确保Django的runserver绑定到0.0.0.0而不是默认的127.0.0.1,这样Sauce Connect隧道才能访问到本地服务器。

4. 升级依赖版本

你的Python 3.6.3版本较老,SSL模块可能存在兼容性问题,建议升级到Python 3.7+,同时升级selenium库到最新稳定版:

pip install --upgrade selenium

5. 验证环境变量的正确性

确认Travis构建环境中SAUCE_USERNAME、SAUCE_ACCESS_KEY、TRAVIS_JOB_NUMBER这些变量都已正确设置,且capabilities["tunnel-identifier"]的值和Sauce Connect启动时的-i参数完全一致。

先尝试修改WebDriver的协议为HTTP,这应该能直接解决你遇到的SSL EOF错误,如果还有问题再逐一排查其他配置项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:10:02