로컬 Chrome을 사용하여 Playwright for Go를 실행하는 방법

9161 단어 goplaywright
Playwright가 기본 설정으로 실행되면 Playwright와 함께 사용할 별도의 브라우저(예: Chromium)가 설치되고 해당 브라우저를 사용하여 프로세스가 실행됩니다.

로컬 시스템에 이미 설치된 Chrome에서 Playwright를 실행하려면 설치를 건너뛰고 로컬 시스템에서 Chrome을 참조하여 프로세스를 실행할 수 있습니다.

다음은 이를 달성하기 위한 샘플 코드입니다.
(아래 코드의 대부분은 README of Playwright for Go 의 샘플을 기반으로 합니다.)

package main

import (
    "fmt"
    "log"

    "github.com/playwright-community/playwright-go"
)

func main() {
    runOption := &playwright.RunOptions{
        SkipInstallBrowsers: true,
    }

    // Perform the installation of Playwright's Driver here.
    // Note that this process can be skipped the second time or later because the Driver is already installed.
    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"),
    }

    browser, err := pw.Chromium.Launch(option)
    if err != nil {
        log.Fatalf("could not launch browser: %v", err)
    }

    page, err := browser.NewPage()
    if err != nil {
        log.Fatalf("could not create page: %v", err)
    }

    if _, err = page.Goto("https://news.ycombinator.com"); err != nil {
        log.Fatalf("could not goto: %v", err)
    }

    entries, err := page.QuerySelectorAll(".athing")
    if err != nil {
        log.Fatalf("could not get entries: %v", err)
    }

    for i, entry := range entries {
        titleElement, err := entry.QuerySelector("td.title > a")
        if err != nil {
            log.Fatalf("could not get title element: %v", err)
        }

        title, err := titleElement.TextContent()
        if err != nil {
            log.Fatalf("could not get text content: %v", err)
        }

        fmt.Printf("%d: %s\n", i+1, title)
    }

    if err = browser.Close(); err != nil {
        log.Fatalf("could not close browser: %v", err)
    }

    if err = pw.Stop(); err != nil {
        log.Fatalf("could not stop Playwright: %v", err)
    }
}

좋은 웹페이지 즐겨찾기