Playwright for Goに関する個人的な備忘録
Seleniumであれば clear
関数を用いてinputフォーム内を空にできるが、Playwrightの場合は fill
を用いる。
Playwright for Goであれば playwright.Locator
に Fill
メソッドが用意されているのでそちらを利用する。
※コード自体は以前書いた『Playwright for GoでローカルのChromeを利用して実行する方法』内のコードを拡張した形で書いている また、処理内容を目視で確認できるようにHeadlessモードは無効化している。
package main import ( "log" "time" "github.com/playwright-community/playwright-go" ) func main() { // Playwright用にブラウザを新たにインストールはせず、既にインストールされているChromeを利用する runOption := &playwright.RunOptions{ SkipInstallBrowsers: true, } // ここでPlaywrightのDriverのインストールを実施する // なお2回目以降はすでにDriverはインストールされているため、この処理はスキップ可能 err := playwright.Install(runOption) if err != nil { log.Fatalf("could not install playwright dependencies: %v", err) } pw, err := playwright.Run() if err != nil { log.Fatalf("could not start playwright: %v", err) } option := playwright.BrowserTypeLaunchOptions{ Channel: playwright.String("chrome"), Headless: playwright.Bool(false), } browser, err := pw.Chromium.Launch(option) if err != nil { log.Fatalf("could not launch browser: %v", err) } defer browser.Close() page, err := browser.NewPage() if err != nil { log.Fatalf("could not create page: %v", err) } defer page.Close() if _, err = page.Goto("https://www.google.com/"); err != nil { log.Fatalf("could not goto: %v", err) } input, err := page.Locator("input") if err != nil { log.Fatalf("could not get input form: %v", err) } // 「今日の天気」と入力する input.Fill("今日の天気") // 3秒待機 time.Sleep(time.Duration(3 * time.Second)) // inputフォームを空にする input.Fill("") // 3秒待機 time.Sleep(time.Duration(3 * time.Second)) log.Println("Finish!") }
ただし下記で議論されているようにこのやり方は確実ではないとのこと。
clear
を追加するのはどうかと議論されているので、今後追加される可能性もあるのかも