golang selenium
时间: 2023-09-22 22:06:33 浏览: 119
Golang 中可以使用 Selenium 来进行自动化测试、爬虫等相关工作。下面是一个简单的示例代码:
```go
package main
import (
"fmt"
"time"
"github.com/tebeka/selenium"
"github.com/tebeka/selenium/chrome"
)
func main() {
// 启动 Chrome 浏览器
opts := []selenium.ServiceOption{
selenium.ChromeDriver("path/to/chromedriver"), // chromedriver 的路径
}
service, err := selenium.NewChromeDriverService("path/to/chromedriver", 9515, opts...)
if err != nil {
panic(err)
}
defer service.Stop()
// 设置 ChromeOptions
chromeCaps := chrome.Capabilities{
Path: "",
Args: []string{
"--headless", // 无头模式
"--disable-gpu",
"--no-sandbox",
"--disable-dev-shm-usage",
"--disable-extensions",
"--disable-infobars",
"--disable-browser-side-navigation",
"--disable-setuid-sandbox",
"--disable-web-security",
"--user-data-dir=/tmp",
},
}
// 启动 Chrome 浏览器
wd, err := selenium.NewRemote(chromeCaps, "")
if err != nil {
panic(err)
}
defer wd.Quit()
// 打开页面
if err := wd.Get("http://www.baidu.com"); err != nil {
panic(err)
}
// 输入搜索关键字
searchBox, err := wd.FindElement(selenium.ByCSSSelector, "#kw")
if err != nil {
panic(err)
}
if err = searchBox.SendKeys("golang selenium"); err != nil {
panic(err)
}
// 点击搜索按钮
searchBtn, err := wd.FindElement(selenium.ByCSSSelector, "#su")
if err != nil {
panic(err)
}
if err = searchBtn.Click(); err != nil {
panic(err)
}
// 等待搜索结果加载完毕
time.Sleep(time.Second * 5)
// 获取搜索结果标题
titles, err := wd.FindElements(selenium.ByCSSSelector, "h3")
if err != nil {
panic(err)
}
for _, title := range titles {
text, err := title.Text()
if err != nil {
panic(err)
}
fmt.Println(text)
}
}
```
需要注意的是,需要先安装 Chrome 浏览器和对应版本的 chromedriver,并将其路径添加到系统 PATH 中。另外,还需要安装 selenium 和 chrome 这两个 Golang 的第三方包。
阅读全文