如何捕捉警告框在网页上的显示,并使用chromedp获取其中的文本
我注意到,当出现警报时,我可以看到Page.javascriptDialogOpening正在显示
我正在使用
cdp.EvaluateAsDevTools("Page.javascriptDialogOpening", res)来获得里面的文本,但是它不工作如何在chromedp中处理它?
发布于 2019-10-05 23:04:21
在任务内部,使用ListenTarget并等待JS对话事件。
printMsg := chromedp.ActionFunc(func(ctx context.Context) error {
chromedp.ListenTarget(lctx, func(ev interface{}) {
if _, ok := ev.(*page.EventJavascriptDialogOpening); ok { // page loaded
fmt.Printf(ev.(*page.EventJavascriptDialogOpening).Message) // holds msg!
}
})
}发布于 2019-10-03 02:47:57
我先在浏览器中硬编码了一些javascript,然后在控制台中监听警告框文本,从而解决了这个问题。
下面是参考代码:
func main() {
// create context
ctx, cancel := chromedp.NewContext(context.Background())
defer cancel()
// run task list
var res interface{}
err := chromedp.Run(ctx,
chromedp.Navigate(`https://www.quackit.com/javascript/javascript_alert_box.cfm`), // navigate to random page
chromedp.EvaluateAsDevTools(`window.alert = function (txt){return txt}`, &res), // set a function to return the text in the alert box as text
chromedp.EvaluateAsDevTools(`alert('hehe')`, &res), // create an alert box to test the execution
)
if err != nil {
log.Fatal(err)
}
log.Println(res)}
它将登录到您的控制台的res。希望它能有所帮助;)
https://stackoverflow.com/questions/58085607
复制相似问题