如何用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
相关产品推荐
相关产品推荐

