javascript - NightmareJS wait(selector) 不适用于基于 dojo 的网页

标签 javascript web-scraping dojo nightmare

我正在尝试抓取使用 Dojo Webkit 制作的网页与 NightmareJS 。我遇到的问题是,在尝试单击按钮以浏览页面时,我需要确保在尝试单击按钮之前加载按钮本身,否则我会收到诸如以下错误:“无法通过选择器查找元素:选择器”,这是可以预料的。

添加 wait(milliseconds) 是有效的,但在服务器速度慢或有大量要显示的内容的情况下,加载可能会超出等待时间,这显然是我想要避免的。然后我尝试使用 wait(selector) 方法,结果它就在那时停止了。在这一切过程中,Electron 浏览器都是打开的,并且页面已完全加载成功,包括带有选择器的按钮,我可以单击它并手动执行所有操作。

这是我正在尝试做的一个示例:

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

单击第一个按钮并加载页面,但随后它卡在那里,第二个单击功能永远不会发生。

编辑:在对Dojo Webkit进行了一些研究之后我发现它有一个special loader我认为这会扰乱网页的加载方式,但因为我不确定 wait(selector) 如何检查页面以确定元素是否已加载到页面中,所以我无法确定 dojo 加载器是根本原因,即使如此,如果是的话,我仍然希望找到某种解决方法。

最佳答案

我今天也遇到了这个问题。

我用 Cucumber js 运行 Nightmare ,测试在等待函数响应之前超时了。

我检查了源代码,发现“wait”函数允许将超时参数作为第二个参数。

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

我认为这是最新版本的 Nightmare 中的一个错误。

希望这有帮助。

关于javascript - NightmareJS wait(selector) 不适用于基于 dojo 的网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39006191/

相关文章:

javascript - 以 O(log n) 的顺序查找已排序数组中元素的第一个和最后一个位置

python - 从依赖于交互式 map 的表中抓取数据

javascript - 我希望某些节点不触发 Dojo 树上下文菜单?

javascript - 同步 Ajax 请求

javascript - 当浏览器调整大小时隐藏粘性导航

javascript - Coqsoft 树网格单元中的 OnMouseOver 事件

javascript - 创建 Windows 8 资源管理器模拟 - 鼠标选择问题

python - 关于使用 py bs4 进行网页抓取的问题

python - @src 图像属性的 Xpath

javascript - 如何从 dijit/form/select 中删除所有选项?