gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 05:39:58 24 4
gpt4 key购买 nike

我正在尝试抓取使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com