【问题标题】:How to load extension for Chrome in remote selenium using golang?如何使用 golang 在远程 selenium 中加载 Chrome 扩展?
【发布时间】:2022-11-20 03:37:46
【问题描述】:


我在 docker 容器中有硒(来自 aerocube 的硒)和来自 tebeka 的 golang 硒库。

我找不到任何示例来说明如何在带有扩展名的远程硒中运行 chrome(字面上只适用于 go)

我什至在库中找到了执行此操作的函数,但我没有找到使用它的代码示例。
(https://pkg.go.dev/github.com/tebeka/selenium@v0.9.9/chrome#Capabilities.AddExtension)

caps := selenium.Capabilities{"browserName": "chrome", "browserVersion": "103.0"}

driver, err := selenium.NewRemote(caps, "http://127.0.0.1:4444/wd/hub")
if err != nil {
    fmt.Printf("create selenium session error: %v\n", err)
    return
}
defer driver.Quit()
driver.Get("https://www.google.com/")
driver.Close() 

【问题讨论】:

    标签: selenium go selenium-webdriver selenium-chromedriver


    【解决方案1】:

    我想使用 modheader 扩展,但我遇到了同样的问题,我解决了它。

    第 1 步:获取您的 chrome 扩展 (.crx) 文件

    就我而言,我找到了 modheader 文档,并从页面获取下载链接。

    https://docs.modheader.com/advanced/selenium-webdriver

    将 .crx 文件下载到您的项目中。 the .crx download page

    下载链接 https://github.com/modheader/modheader_selenium/raw/main/chrome-modheader/modheader.crx

    注意:Web 浏览器可能会根据策略阻止下载,使用“wget”命令获取 文件。

    block by browser

    wget the file

    如果你想获得另一个扩展,使用下面的 CRX Extractor/Downloader 可以帮助你。

    CRX Extracti link CRX Extracti/Downloader webpage

    第二步:使用代码加载扩展

    package main
    
    import (
        "fmt"
        "os"
    
        "github.com/tebeka/selenium"
        "github.com/tebeka/selenium/chrome"
    )
    
    const (
        port = 8080
    )
    
    func main() {
    
        opts := []selenium.ServiceOption{
            // Enable fake XWindow session.
            // selenium.StartFrameBuffer(),
            selenium.Output(os.Stderr), // Output debug information to STDERR
        }
    
        _, err := selenium.NewChromeDriverService("../your_driver_path/chromedriver.exe", port, opts...)
        if err != nil {
            panic(err)
        }
        
        caps := selenium.Capabilities{"browserName": "chrome"}
        var cap_ext chrome.Capabilities
    
        // add your extention by crx file
        cap_ext.AddExtension("./modheader.crx")
        caps.AddChrome(cap_ext)
    
        wd, err := selenium.NewRemote(caps, fmt.Sprintf("http://127.0.0.1:%d/wd/hub", port))
    
        // Using api to setting modheader
    
        // add header
        wd.Get("https://webdriver.modheader.com/add?test=ModHeader%20Test")
    
    }
    
    

    第 3 步:设置扩展名

    Modheader 扩展提供 api 来设置。

    例子 :

    wd.Get("https://webdriver.modheader.com/add?test=ModHeader%20Test")
    

    第 4 步:结果

    Loading and setting extention successful

    我希望我能提供帮助。祝你好运。

    【讨论】:

      猜你喜欢
      • 2016-03-17
      • 2018-10-30
      • 1970-01-01
      • 2016-07-22
      • 1970-01-01
      • 1970-01-01
      • 2012-08-04
      • 2012-12-12
      • 2016-12-06
      相关资源
      最近更新 更多