rod: Reconnect to the same browser and use WaitRequestIdle will hang forever

Rod Version: v0.52.0

To Reproduce

func main() {
	u := launcher.New().Headless(false).RemoteDebuggingPort(8765).MustLaunch()
	b := rod.New().Timeout(30 * time.Second).ControlURL(u).MustConnect()

	page := b.MustPages()[0]
	nav(page)
	fmt.Println("1")
	nav(page)
	fmt.Println("2")
}

func nav(page *rod.Page) {
	wait := page.MustWaitRequestIdle()
	page.MustNavigate("https://www.taobao.com")
	wait()
}
go run ./main.go
go run ./main.go

Expected behavior

1
2
1
2

What you expected to get.

Actual result

1
2
1
panic: context deadline exceeded

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Comments: 20

Most upvoted comments

多谢你花时间报告这个问题。我基本确定是某种 bug 了,你可以先不使用 MustWaitRequestIdle 来等待页面加载。可以用 MustElement 来等待:

page.MustNavigate("https://www.taobao.com").MustElement(`.class-name`)

这种等待更加实用。

我有时间会看下怎么修复这个 bug。