我正在尝试使用Dojo Webkit和NightmareJS抓取一个网页。我遇到的问题是,当我尝试单击按钮来浏览页面时,我需要确保在尝试单击它们之前加载按钮本身,否则我会收到错误,例如:“无法通过选择器找到元素:选择器“,这是预期的。
添加等待(毫秒)有效,但是在服务器运行缓慢或需要显示大量内容的情况下,加载可能会超出等待时间,这是我显然想要避免的。那么我尝试使用wait(选择器)方法,结果就是它在那时停止了。电子浏览器在所有这些期间打开,页面已经完全加载,包括带选择器的按钮,我可以点击它并手动完成所有操作。
这是我想要做的一个例子:
nightmare
.click('#button')
.wait('#otherbutton')
.click('#otherbutton')
.catch((error) => console.log('Error:...', error));
单击第一个按钮并加载页面,但随后它会挂起并且第二次单击功能永远不会发生。
编辑:在对Dojo Webkit进行一些研究后,我发现它有一个special loader,我认为它正在弄乱网页的加载方式,但是因为我不确定如何等待(选择器) )检查页面以确定元素是否已加载到页面中,我不能确定dojo加载器是根本原因,即使这样,我仍然会欣赏某种解决方法,如果它是。
答案 0 :(得分:0)
我今天也遇到了这个。
我正在用黄瓜js运行噩梦,测试在等待功能响应之前超时。
我检查了源代码并发现“wait”函数允许使用timeout参数作为第二个参数。
我通过添加超时解决了我的问题
.wait('selector', 2000)
我认为这是最新版恶梦中的一个错误。
希望这有帮助。