我有一个使用 chromedp 的函数来检查是否有时会弹出确认模式。如果它弹出该功能,但如果上下文期限延长,它仍然会说超过期限。奇怪的是,如果在其他运行中减少截止日期,它会起作用。
func check(page string) {
opts := append(chromedp.DefaultExecAllocatorOptions[:],
chromedp.UserAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36"),
chromedp.Flag("enable-automation", false),
chromedp.Flag("headless", false),
)
ctx, cancel := chromedp.NewExecAllocator(context.Background(), opts...)
defer cancel()
ctx, cancel = chromedp.NewContext(ctx)
defer cancel()
ctx, cancel = context.WithTimeout(ctx, 10*time.Second)
defer cancel()
err := chromedp.Run(ctx,
chromedp.Navigate(page),
chromedp.WaitReady("body", chromedp.ByQuery),
chromedp.Click(`#ackBtn`, chromedp.ByID),
)
if err != nil {
fmt.Println("Didn't find Ack")
//return
}
ctx, cancel = context.WithTimeout(ctx, 30*time.Second)
defer cancel()
err2 := chromedp.Run(ctx,
chromedp.Click(`#options > div:nth-child(1) > div.c-card__column2 > a.c-card__btn.btn-new.btn-color-blue.btn-size-xxlarge.btn-width-auto.btn-max-width`, chromedp.ByID),
)
if err2 != nil {
fmt.Println("exited on error", err)
}
}