執行文件裡Installing指令即可
go get -t -d github.com/tebeka/selenium
因為我的OS是Windows,沒辦法用文件裡Downloading Dependencies的例子(那是linux),所以要自己找到瀏覽器的Binary檔
使用如何使用 Golang 操作瀏覽器的例子,但要設定ChromeDriver Binary檔的路徑(第20行)
import (
"fmt"
"os"
"time"
"github.com/tebeka/selenium"
)
const (
port = 8080
)
func main() {
opts := []selenium.ServiceOption{
// Enable fake XWindow session.
// selenium.StartFrameBuffer(),
selenium.Output(os.Stderr), // Output debug information to STDERR
//設定ChromeDriver Binary檔的路徑
//因為我把下載的ChromeDriver Binary放在main資料夾內,所以用相對路徑設定就好
//這個設定在20221005被發現沒有作用,可能是我誤解了他的用法,也可能是go升版1.19後的關係,總之先註解
//selenium.ChromeDriver("main"),
}
// Enable debug info.
// selenium.SetDebug(true)
//這裡用相對路徑的方式去寫chromedriver的位置
service, err := selenium.NewChromeDriverService("./chromedriver", port, opts...)
if err != nil {
panic(err)
}
defer service.Stop()
caps := selenium.Capabilities{"browserName": "chrome"}
wd, err := selenium.NewRemote(caps, fmt.Sprintf("http://127.0.0.1:%d/wd/hub", port))
if err != nil {
panic(err)
}
defer wd.Quit()
wd.Get("https://tw.yahoo.com")
time.Sleep(5 * time.Second)
}
參考官網去改
package main
import (
"fmt"
"os"
"strings"
"time"
"github.com/tebeka/selenium"
)
const (
port = 8080
)
func main() {
opts := []selenium.ServiceOption{
// Enable fake XWindow session.
// selenium.StartFrameBuffer(),
selenium.Output(os.Stderr), // Output debug information to STDERR
//設定ChromeDriver Binary檔的路徑
//因為我把下載的ChromeDriver Binary放在main資料夾內,所以用相對路徑設定就好
selenium.ChromeDriver("main"),
}
// Enable debug info.
// selenium.SetDebug(true)
service, err := selenium.NewChromeDriverService("chromedriver", port, opts...)
if err != nil {
panic(err)
}
defer service.Stop()
caps := selenium.Capabilities{"browserName": "chrome"}
wd, err := selenium.NewRemote(caps, fmt.Sprintf("http://127.0.0.1:%d/wd/hub", port))
if err != nil {
panic(err)
}
defer wd.Quit()
// Navigate to the simple playground interface.
url := "https://go.dev/play/"
if err := wd.Get(url); err != nil {
panic(err)
}
// Get a reference to the text box containing code.
elem, err := wd.FindElement(selenium.ByCSSSelector, "#code")
if err != nil {
panic(err)
}
// Remove the boilerplate code already in the text box.
if err := elem.Clear(); err != nil {
panic(err)
}
// Enter some new code in text box.
keys := `package main
import "fmt"
func main() {
fmt.Println("Hello WebDriver!")
}`
err = elem.SendKeys(keys)
if err != nil {
panic(err)
}
// Click the run button.
btn, err := wd.FindElement(selenium.ByCSSSelector, "#run")
if err != nil {
panic(err)
}
if err := btn.Click(); err != nil {
panic(err)
}
// Wait for the program to finish running and get the output.
outputDiv, err := wd.FindElement(selenium.ByTagName, "pre")
if err != nil {
panic(err)
}
var output string
for {
output, err = outputDiv.Text()
if err != nil {
panic(err)
}
if output != "Waiting for remote server..." {
break
}
time.Sleep(time.Millisecond * 100)
}
fmt.Printf("%s", strings.Replace(output, "\n\n", "\n", -1))
time.Sleep(10 * time.Second)
}
印出
Hello WebDriver!
Program exited.
https://opensourcedoc.com/selenium/manipulate-selenium-with-golang/
https://github.com/tebeka/selenium
https://github.com/tebeka/selenium/blob/master/example_test.go
下載macOS Unlocker:讓VMware Workstation 識別OS X的工具程式。
Jan 8, 2025安裝Docker 去套件中心安裝Docker 用Docker安裝Gitlab 在Docker的倉庫伺服器,找關鍵字gitlab,我們下載gitlab/gitlab-ce的映像檔 下載的映像檔會出現在映像檔清單
Sep 27, 2022安裝Docker 安裝指令 sudo apt-get install docker.io 安裝後,查看docker有沒有正常啟動 service docker status
Jan 19, 2022VMware Workstation 16 Player安裝Ubuntu 20.04 https://blog.xuite.net/yh96301/blog/341981056-VMware+Workstation+16+Player%E5%AE%89%E8%A3%9DUbuntu+20.04%3E Ubuntu Server 20.04.1 安裝和設定教學 https://www.footmark.info/linux/ubuntu/ubuntu-server-install/ Ubuntu Server 20.04.1 預設 UFW 防火牆 Firewall 設定規則詳解和教學
Nov 15, 2021or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up