playwright-community/playwright-go

response.Body() cant‘run in the page.OnResponse(HandleResponse) callback function

xiaoyaochen opened this issue · 5 comments

when use response.Body() in the page.OnResponse(HandleResponse) callback function, it will be stop running
like this:

package main

import (
	"fmt"

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

func HandleResponse(response playwright.Response) {
	fmt.Println(response.URL())
	body, err := response.Body()
	if err == nil {
		fmt.Println(body)
	}
}

func main() {
	pw, _ := playwright.Run()
	browser, _ := pw.Chromium.Launch(playwright.BrowserTypeLaunchOptions{
		Headless: playwright.Bool(true),
	})
	context, _ := browser.NewContext()
	page, _ := context.NewPage()
	page.OnResponse(HandleResponse)
	_, err := page.Goto("https://github.com/")
	if err != nil {
		fmt.Printf(err.Error())
	}
	defer func() {
		page.Close()
		browser.Close()
		pw.Stop()
	}()
}

Please provide verified reproducible code in markdown code block format.

package main

import (
	"fmt"

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

func HandleResponse(response playwright.Response) {
	fmt.Println(response.URL())
	body, err := response.Body()
	if err == nil {
		fmt.Println(body)
	}
}

func main() {
	pw, _ := playwright.Run()
	browser, _ := pw.Chromium.Launch(playwright.BrowserTypeLaunchOptions{
		Headless: playwright.Bool(true),
	})
	context, _ := browser.NewContext()
	page, _ := context.NewPage()
	page.OnResponse(HandleResponse)
	_, err := page.Goto("https://github.com/")
	if err != nil {
		fmt.Printf(err.Error())
	}
	defer func() {
		page.Close()
		browser.Close()
		pw.Stop()
	}()
}

pls use goroutine to get response body for now:

func HandleResponse(response playwright.Response) {
	go func() {
		fmt.Println(response.URL())
		body, err := response.Body()
		if err == nil {
			fmt.Println(body)
		}
	}()
}