1

我正在尝试使用 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 上打开了这个问题;仍在等待评论。

4

0 回答 0