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

Geb集成Geckodriver异常:Firefox启动多窗口且无法加载URL

搞定Geb中Firefox启动多窗口且不加载URL的问题

嘿,我来帮你搞定这个Geb+Firefox的坑!你说Chrome跑完全正常,但Firefox启动一堆窗口还不加载URL,结合你的环境配置(Firefox 57.0.4 32位、Geckodriver 0.20.1、Selenium 3.11.0),我梳理了几个大概率的解决方案:

1. 先确认Geckodriver的位数匹配

你用的是32位Firefox,那一定要对应下载32位的Geckodriver!很多人容易顺手下成64位,驱动和浏览器位数不匹配,就会出现这种窗口乱弹、无法正常加载的诡异问题。

2. 修正GebConfig.groovy的Firefox配置方式

你当前的配置只设置了系统属性,但没正确初始化FirefoxDriver的配置选项,Geb需要明确的参数来约束Firefox的行为。试试把你的配置改成这样:

import org.openqa.selenium.firefox.FirefoxDriver
import org.openqa.selenium.firefox.FirefoxOptions

driver = {
    // 先指定Geckodriver的完整路径
    System.setProperty("webdriver.gecko.driver", "C:\\Data\\selenium\\geckodriver.exe")
    
    // 配置Firefox的启动选项,解决多窗口问题
    def firefoxOptions = new FirefoxOptions()
    // 强制Firefox启动时只打开一个窗口,禁用恢复上次会话的特性
    firefoxOptions.addArguments("-new-window", "about:blank")
    // 明确指定32位Firefox的二进制路径(避免系统默认调用64位版本)
    firefoxOptions.setBinary("C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe")
    
    // 初始化驱动并返回
    new FirefoxDriver(firefoxOptions)
}

如果觉得麻烦,也可以试试Geb更简洁的内置配置方式:

environments {
    firefox {
        driver = {
            System.setProperty("webdriver.gecko.driver", "C:\\Data\\selenium\\geckodriver.exe")
            def driver = new FirefoxDriver()
            // 可选:最大化窗口,确保页面加载正常
            driver.manage().window().maximize()
            driver
        }
    }
}

3. 检查Firefox的默认启动设置

有时候Firefox的默认设置会坑你——比如上次关闭时开了多个标签页/窗口,它会自动恢复。你可以手动打开Firefox,设置“启动时打开空白页”,或者直接在配置里加参数强制它启动空白页(就是上面配置里的-new-window about:blank)。

4. 确认Geckodriver的权限

确保Geckodriver.exe所在的文件夹有读写和执行权限,如果权限不足,驱动没法正常控制浏览器,也会出现窗口异常的情况。

5. 小版本升级试试(可选)

如果上面的方法都没用,考虑小版本升级:比如把Firefox升到59.x(和Geckodriver 0.20.1完全兼容),或者把Geckodriver升到0.21.0(适配Firefox 57-63),有时候一点点版本差异就会导致这类奇怪的bug。

最后,你可以先写个极简的测试脚本验证:

import geb.Browser

Browser.drive {
    go "https://www.google.com"
    assert title == "Google"
}

看看这个简单的脚本能不能正常跑起来,逐步排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:55:25