我正在使用Nightmare来自动化网站。到目前为止一切都很好,但我注意到当我想与动态加载的内容进行交互时它会出现一些问题。甚至还有一种方法,它等待一个元素出现在页面上.wait(#elementId)
,但它不适用于动态生成的内容。
以前有人遇到过这个问题吗,或者你能推荐一些其他的技术吗?我喜欢噩梦的是,它实际上并不是无头的,并且通过它与 Electron 的集成,它还有一个 GUI,可以显示所做的一切。如果这可能的话,我更愿意。
编辑
为了更好地说明我的担忧,这是我正在使用的代码,但已抽象:
假设我想在 上搜索https://www.google.com
,但搜索表单是通过库动态生成的。我的代码看起来像这样
vo(function* () {
var nightmare = Nightmare({ show: true });
var search = yield nightmare
.goto('https://google.com')
.wait('input[name="search"]')
.type('input[name="search"]', ‘the term I am searching for’)
.click('#submitButton')
.wait(2000)
.evaluate(function () {
return $('input[name="search"]').val();
});
yield nightmare.end();
return search;
})(function (err, result) {
if (err) return console.log(err);
console.log(result);
});
但由于input[name="search"]
不是用html编写的,而是在页面加载后生成的,即使我可以在GUI中看到它,但刮板却无法识别它,并且将永远等待。我猜它只适用于静态代码。有没有办法在一段时间后更新html,或者类似的东西?