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

如何在基于Golang的远程Selenium中为Chrome加载扩展?

在Go中使用tebeka/selenium远程连接Selenoid Chrome并加载扩展

实现步骤与代码示例

要在远程Selenoid的Chrome实例中加载扩展,需要使用tebeka/selenium库的chrome子包提供的扩展添加方法,以下是修改后的完整代码:

package main

import (
	"fmt"
	"github.com/tebeka/selenium"
	"github.com/tebeka/selenium/chrome"
)

func main() {
	// 初始化Chrome专属配置
	chromeCaps := chrome.Capabilities{
		BrowserName:    "chrome",
		BrowserVersion: "103.0",
	}

	// 直接从本地文件添加扩展(支持CRX或ZIP格式)
	err := chromeCaps.AddExtensionFile("/path/to/your/extension.crx")
	if err != nil {
		fmt.Printf("添加扩展失败: %v\n", err)
		return
	}

	// 将Chrome配置转换为Selenium通用Capabilities
	caps := selenium.Capabilities(chromeCaps)

	// 连接远程Selenoid服务
	driver, err := selenium.NewRemote(caps, "http://127.0.0.1:4444/wd/hub")
	if err != nil {
		fmt.Printf("创建Selenium会话失败: %v\n", err)
		return
	}
	defer driver.Quit()

	// 访问目标页面,此时扩展已自动加载
	if err = driver.Get("https://www.google.com/"); err != nil {
		fmt.Printf("访问页面失败: %v\n", err)
		return
	}

	// 执行你的业务逻辑...
	driver.Close()
}

关键注意事项

  • 导入依赖:必须导入github.com/tebeka/selenium/chrome子包,才能使用Chrome专属的配置方法
  • 扩展格式:确保扩展是CRX(Chrome打包扩展)或ZIP格式,目录形式的扩展需要先打包
  • Selenoid权限:如果扩展文件在本地机器,需要确保Selenoid容器能访问到该文件(可通过挂载本地目录到容器实现);也可以将扩展内容转为字节数组嵌入代码中,使用AddExtension方法传入

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 12:48:34