我正在尝试使用 chromedp 登录仪表板。表单上的动作是action="javascript:void(0);"
。当按下提交时,会启动一些 JS 函数,最终结果会生成 url;操作更新,提交过程继续。
查看日志,chromedp 正在"javascript:void(0);"
用作操作,因此该过程处于连续循环中查找app-sidebar-navigation-menu__item__label
。login() 是相关函数:
func login(cfg *config, url, username, password string, res *string) chromedp.Tasks {
return chromedp.Tasks{
chromedp.Navigate(url),
chromedp.WaitVisible(#Email, chromedp.ByID),
chromedp.WaitVisible(#Password, chromedp.ByID),
chromedp.SendKeys(#Email, username, chromedp.ByID),
chromedp.SendKeys(#Password, password, chromedp.ByID),
chromedp.Submit(#Email, chromedp.ByID),
chromedp.WaitVisible(.app-sidebar-navigation-menu__item__label, chromedp.BySearch),
chromedp.Click(.app-sidebar-navigation-menu__item__label, chromedp.BySearch),
chromedp.Text(.app-sidebar-navigation-menu__item__label, res, chromedp.BySearch),
}
}
我试图添加一个 sleep(),但我认为我没有以正确的方式使用它:
...
chromedp.Submit(#Email, chromedp.ByID, chromedp.After(func(i context.Context, n ...*cdp.Node) error {
chromedp.Sleep(5 * time.Second)
return nil
})),
...
我确实打算看看chromedp.ListenTarget
这是否是一条合理的路线,但我希望这是一个简单的解决方案(它不是,我需要一些 ListenTarget 的帮助);
我也在chromedp 的 github repo 上打开了这个问题;仍在等待评论。