NightmareJS等待(选择器)无法使用基于dojo的网页

时间:2016-08-17 20:59:44

标签: javascript web-scraping dojo nightmare

我正在尝试使用Dojo WebkitNightmareJS抓取一个网页。我遇到的问题是,当我尝试单击按钮来浏览页面时,我需要确保在尝试单击它们之前加载按钮本身,否则我会收到错误,例如:“无法通过选择器找到元素:选择器“,这是预期的。

添加等待(毫秒)有效,但是在服务器运行缓慢或需要显示大量内容的情况下,加载可能会超出等待时间,这是我显然想要避免的。那么我尝试使用wait(选择器)方法,结果就是它在那时停止了。电子浏览器在所有这些期间打开,页面已经完全加载,包括带选择器的按钮,我可以点击它并手动完成所有操作。

这是我想要做的一个例子:

nightmare
  .click('#button')
  .wait('#otherbutton')
  .click('#otherbutton')
  .catch((error) => console.log('Error:...', error));

单击第一个按钮并加载页面,但随后它会挂起并且第二次单击功能永远不会发生。

编辑:在对Dojo Webkit进行一些研究后,我发现它有一个special loader,我认为它正在弄乱网页的加载方式,但是因为我不确定如何等待(选择器) )检查页面以确定元素是否已加载到页面中,我不能确定dojo加载器是根本原因,即使这样,我仍然会欣赏某种解决方法,如果它是。

1 个答案:

答案 0 :(得分:0)

我今天也遇到了这个。

我正在用黄瓜js运行噩梦,测试在等待功能响应之前超时。

我检查了源代码并发现“wait”函数允许使用timeout参数作为第二个参数。

我通过添加超时解决了我的问题 .wait('selector', 2000)

我认为这是最新版恶梦中的一个错误。

希望这有帮助。