在node.js中用chromeless分页

我在AWS Lambda上使用无界面的无头浏览器。

我想弄清楚如何分页内容,但我是新的节点和asynchronous/等待。

这是我的代码:

const Chromeless = require('chromeless').default async function run() { const chromeless = new Chromeless({}) var results = []; const instance = await chromeless .goto('https://www.privacyshield.gov/list') for (i = 0; i < 3; i++) { console.log('in for'); instance .html() .click('a.btn-navigate:contains("Next Results")') .wait(3000) results.push(html) } await chromeless.end() } run().catch(console.error.bind(console)) 

但我得到的错误:

 TypeError: Cannot read property 'html' of undefined 

这意味着实例没有被定义在等待之外。 我不等待每个循环迭代都创build单独的实例,因为我将失去在页面上的位置。

花了一些时间弄清楚,但是很有趣,这也是我第一次等待节点的asynchronous代码。

 const { Chromeless } = require('chromeless') async function run() { const chromeless = new Chromeless() let curpos = chromeless chromeless.goto('https://www.privacyshield.gov/list') .press(13) .wait(3000); const page1 = await curpos.html() curpos = curpos.click('a.btn-navigate') .wait(3000); const page2 = await curpos.html() curpos = curpos.click('a.btn-navigate') .wait(3000); const page3 = await curpos.html() console.log(page1) console.log("\n\n\n\n\n\n\n") console.log(page2) console.log("\n\n\n\n\n\n\n") console.log(page3) await chromeless.end() } run().catch(console.error.bind(console)) 

我希望你可以从那里把它带到循环。

有趣的是,我能够转换成ES5代码并进行debugging。

希望能帮助到你。