72 lines
1.4 KiB
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)
|
|
}
|