at backyard

Color my life with the chaos of trouble.

Playwright for Goでinputフォームの値を空にする方法

Playwright for Goに関する個人的な備忘録

Seleniumであれば clear 関数を用いてinputフォーム内を空にできるが、Playwrightの場合は fill を用いる。

Playwright for Goであれば playwright.LocatorFillメソッドが用意されているのでそちらを利用する。

※コード自体は以前書いた『Playwright for GoでローカルのChromeを利用して実行する方法』内のコードを拡張した形で書いている また、処理内容を目視で確認できるようにHeadlessモードは無効化している。

shinshin86.hateblo.jp

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 を追加するのはどうかと議論されているので、今後追加される可能性もあるのかも

github.com