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

使用Selenium测试Firefox无头模式时遇整数参数错误,如何解决?

解决Firefox无头模式下SessionNotCreatedException的问题

根据我处理这类问题的经验,你遇到的这个SessionNotCreatedException(附带InvalidArgumentError: Expected [object Undefined] undefined to be an integer提示),主要是版本兼容性不匹配或者无头模式参数配置错误导致的,下面给你几个具体的解决方向:

1. 检查Selenium、Firefox、GeckoDriver的版本兼容性

你当前使用的Selenium是3.8.1,这是2017年底的老版本,它对Firefox的兼容性仅覆盖到Firefox 57-60左右。如果Travis环境默认安装的Firefox版本过高,就会出现这种不兼容的报错。

解决办法:

  • 要么升级Selenium版本:比如升级到4.x系列(当前主流版本),同时搭配对应版本的Firefox(比如Firefox 100+)和GeckoDriver(v0.30+),三者版本必须匹配。
  • 要么降级Firefox版本:在Travis的配置文件(.travis.yml)里指定和Selenium 3.8.1兼容的Firefox版本,示例配置:
    addons:
      firefox: "57.0"
    
    同时确保GeckoDriver使用v0.19.0左右的版本,这个版本和Selenium 3.8.1是匹配的。

2. 检查无头模式的参数配置是否正确

错误提示里的“Expected ... to be an integer”,说明你在设置无头模式参数时,可能传递了非整数的数值(比如带单位的窗口大小字符串),或者参数格式不符合要求。

正确的Java代码配置无头模式示例:

FirefoxOptions options = new FirefoxOptions();
// 启用无头模式
options.setHeadless(true);
// 设置窗口大小,确保参数是纯整数格式的字符串
options.addArguments("--width=1920", "--height=1080");
// 初始化驱动
WebDriver driver = new FirefoxDriver(options);

检查你自己的代码,有没有类似把窗口大小写成"width=1920px"(带px单位)或者其他非纯整数的参数,这类错误会触发这个InvalidArgumentError。

3. 确认Travis环境的依赖配置

在Travis里运行测试时,默认的GeckoDriver版本可能不匹配,你可以在.travis.yml里手动指定GeckoDriver的安装步骤,示例:

before_install:
  - wget https://github.com/mozilla/geckodriver/releases/download/v0.19.0/geckodriver-v0.19.0-linux64.tar.gz
  - tar -xzf geckodriver-v0.19.0-linux64.tar.gz
  - chmod +x geckodriver
  - sudo mv geckodriver /usr/local/bin/

这样能确保使用的GeckoDriver版本和你的Selenium、Firefox版本兼容。

按照这几个方向排查,应该能解决你遇到的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:38:47