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

如何用Golang新Selenium服务方法调用Edge浏览器(GoDog框架)

使用Selenium GoDog框架实现Microsoft Edge自动化测试

一、调用Edge浏览器的服务方法

GoDog依赖的Selenium Go库(tebeka/selenium)中,Edge的服务初始化逻辑和Chrome一致,只需导入edge子包并调用edge.NewService()即可。前提是你已下载并配置好EdgeDriver(版本必须与本地Edge浏览器匹配)。

示例代码片段:

import (
    "github.com/tebeka/selenium"
    "github.com/tebeka/selenium/edge"
)

func main() {
    // 初始化Edge服务
    service, err := edge.NewService()
    if err != nil {
        panic(err)
    }
    defer service.Stop()

    // 后续创建会话...
}

二、配置浏览器功能(Capabilities)

Edge的Capabilities通过selenium.Capabilities对象配置,核心是设置edgeOptions字段,支持无头模式、窗口大小、下载路径等常见参数:

caps := selenium.Capabilities{
    "browserName": "MicrosoftEdge",
    "edgeOptions": map[string]interface{}{
        "args": []string{
            "--headless",        // 无头模式
            "--disable-gpu",     // 禁用GPU加速
            "--window-size=1920,1080", // 指定窗口尺寸
            "--incognito",       // 启动隐身模式
        },
        "prefs": map[string]interface{}{
            "profile.default_content_settings.popups": 0, // 关闭弹窗拦截
            "download.default_directory": "/your/download/path", // 设置默认下载路径
        },
    },
}

三、配置服务选项(Service Option)

如果需要指定EdgeDriver路径、自定义端口或调试日志,可通过edge.ServiceOption参数传递给edge.NewService():

常用选项示例:

// 自定义EdgeDriver路径(未加入系统PATH时需指定)
servicePath := "/usr/local/bin/msedgedriver"
// 设置服务监听端口
port := 9515
// 启用调试级日志
logLevel := selenium.LogLevelDebug

service, err := edge.NewService(
    edge.Path(servicePath),
    edge.Port(port),
    edge.LogLevel(logLevel),
)
if err != nil {
    panic(err)
}

四、完整运行示例

整合上述配置的完整测试代码:

package main

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

func main() {
    // 1. 启动Edge服务
    service, err := edge.NewService(
        edge.Path("/usr/local/bin/msedgedriver"), // 替换为你的EdgeDriver路径
        edge.Port(9515),
    )
    if err != nil {
        panic(fmt.Sprintf("启动Edge服务失败: %v", err))
    }
    defer service.Stop()

    // 2. 配置浏览器功能
    caps := selenium.Capabilities{
        "browserName": "MicrosoftEdge",
        "edgeOptions": map[string]interface{}{
            "args": []string{
                "--headless",
                "--disable-gpu",
                "--window-size=1920,1080",
            },
        },
    }

    // 3. 创建浏览器会话
    driver, err := selenium.NewRemote(caps, fmt.Sprintf("http://localhost:%d/wd/hub", 9515))
    if err != nil {
        panic(fmt.Sprintf("创建会话失败: %v", err))
    }
    defer driver.Quit()

    // 4. 执行测试操作
    if err := driver.Get("https://www.microsoft.com"); err != nil {
        panic(err)
    }
    title, err := driver.Title()
    if err != nil {
        panic(err)
    }
    fmt.Printf("页面标题: %s\n", title)
}

注意事项

  • EdgeDriver版本必须与本地Edge浏览器版本完全匹配,否则会启动失败。
  • 若EdgeDriver已加入系统环境变量PATH,则无需在edge.NewService()中指定edge.Path()。
  • Edge特有的功能(如DevTools协议调试)可通过edgeOptions中的debuggerAddress参数配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 20:35:19