2

我正在尝试抓取使用Dojo WebkitNightmareJS制作的网页。我遇到的问题是,在尝试单击按钮以浏览页面时,我需要确保在尝试单击按钮之前已加载按钮本身,否则会出现错误,例如:“无法通过选择器找到元素:选择器”,这是意料之中的。

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

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

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

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

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

4

1 回答 1

0

我今天也遇到了这个。

我正在用黄瓜 js 做噩梦,在等待函数响应之前测试超时。

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

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

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

希望这可以帮助。

于 2016-11-28T20:23:07.810 回答