playwright-demo/main.go

72 lines
1.4 KiB
Go

package main
import (
"fmt"
"log"
"github.com/playwright-community/playwright-go"
)
func main() {
if err := playwright.Install(); err != nil {
log.Fatalf("playwright.Install: %v", err)
}
pw, err := playwright.Run()
if err != nil {
panic(err)
}
defer pw.Stop()
browser, err := pw.Chromium.Launch(playwright.BrowserTypeLaunchOptions{
Headless: playwright.Bool(false),
})
if err != nil {
log.Printf("fail to open browser")
return
}
defer browser.Close()
context, err := browser.NewContext()
if err != nil {
log.Fatalf("fail to create Context: %v", err)
}
defer context.Close()
page, err := context.NewPage()
if err != nil {
log.Fatalf("fail to open page: %v", err)
}
defer page.Close()
if _, err := page.Goto("https://www.baidu.com", playwright.PageGotoOptions{
WaitUntil: playwright.WaitUntilStateLoad,
}); err != nil {
log.Fatalf("fail to open website: %v", err)
}
searchBox := page.Locator("input[id=kw]")
if err := searchBox.Fill("playwright golang"); err != nil {
log.Fatalf("input: %v", err)
}
searchButton := page.Locator("input[id=su]")
if err := searchButton.Click(); err != nil {
log.Fatalf("click: %v", err)
}
//等待页面加载
page.WaitForEvent("load")
firstResult := page.Locator("h3").First()
title, err := firstResult.TextContent()
if err != nil {
log.Fatalf("page Locator: %v", err)
}
fmt.Println(title)
}