昨日に引き続き、Playwright for Goに関する個人的な備忘録。
Playwright for Goで指定した場所にスクロールさせる方法だが、playwright.Locator
に ScrollIntoViewIfNeeded
というメソッドが用意されているのでこれを利用する。
実際のサンプルを下に記載したが、わざわざサンプルを記載するほどのこともないぐらい簡単。
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://playwright-community.github.io/playwright-go/"); err != nil { log.Fatalf("could not goto: %v", err) } moreExamples, err := page.Locator("#more-examples") if err != nil { log.Fatalf("could not get input form: %v", err) } // 対象の場所までスクロールする if err := moreExamples.ScrollIntoViewIfNeeded(); err != nil { log.Fatalf("scroll error: %v", err) } // 3秒待機 time.Sleep(time.Duration(3 * time.Second)) log.Println("Finish!") }
以前Seleniumを利用していた際は、スクロール処理を書くのに JavsScript 経由で実現させていたが、このようなメソッドが組み込まれているのは非常に楽。