55 lines
1.0 KiB
Go
55 lines
1.0 KiB
Go
|
package browser
|
||
|
|
||
|
import (
|
||
|
"github.com/go-rod/rod"
|
||
|
"github.com/go-rod/rod/lib/launcher"
|
||
|
)
|
||
|
|
||
|
type Browser struct {
|
||
|
launcher *launcher.Launcher
|
||
|
page *rod.Page
|
||
|
}
|
||
|
|
||
|
func Launch() *Browser {
|
||
|
br := Browser{}
|
||
|
|
||
|
br.launcher = launcher.New().Headless(true).Set("no-sandbox")
|
||
|
u := br.launcher.MustLaunch()
|
||
|
|
||
|
// Create blank page first:
|
||
|
br.page = rod.New().ControlURL(u).MustConnect().MustPage()
|
||
|
|
||
|
return &br
|
||
|
}
|
||
|
|
||
|
func (br *Browser) Close() {
|
||
|
br.page.MustClose()
|
||
|
br.launcher.Kill()
|
||
|
}
|
||
|
|
||
|
func (br *Browser) Navigate(url string) {
|
||
|
br.page.MustNavigate(url)
|
||
|
br.page.MustWaitIdle()
|
||
|
}
|
||
|
|
||
|
func (br *Browser) Click(elm string) {
|
||
|
br.page.MustElement(elm).MustClick()
|
||
|
br.page.MustWaitIdle()
|
||
|
}
|
||
|
|
||
|
func (br *Browser) Input(elm string, str string) {
|
||
|
br.page.MustElement(elm).MustInput(str)
|
||
|
}
|
||
|
|
||
|
func (br *Browser) GetElmHTML(elm string) string {
|
||
|
return br.page.MustElement(elm).MustHTML()
|
||
|
}
|
||
|
|
||
|
func (br *Browser) GetElmText(elm string) string {
|
||
|
return br.page.MustElement(elm).MustText()
|
||
|
}
|
||
|
|
||
|
func (br *Browser) Screenshot(filename string) {
|
||
|
br.page.MustScrollScreenshot(filename)
|
||
|
}
|