首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Chromedp:处理警报

Chromedp:处理警报
EN

Stack Overflow用户
提问于 2019-09-25 01:38:06
回答 2查看 1.3K关注 0票数 4

如何捕捉警告框在网页上的显示,并使用chromedp获取其中的文本

我注意到,当出现警报时,我可以看到Page.javascriptDialogOpening正在显示

我正在使用

代码语言:javascript
复制
cdp.EvaluateAsDevTools("Page.javascriptDialogOpening", res)

来获得里面的文本,但是它不工作如何在chromedp中处理它?

EN

回答 2

Stack Overflow用户

发布于 2019-10-05 23:04:21

在任务内部,使用ListenTarget并等待JS对话事件。

代码语言:javascript
复制
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!
        }
    })

}
票数 2
EN

Stack Overflow用户

发布于 2019-10-03 02:47:57

我先在浏览器中硬编码了一些javascript,然后在控制台中监听警告框文本,从而解决了这个问题。

下面是参考代码:

代码语言: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。希望它能有所帮助;)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58085607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档