繁体   English   中英

如何在 page.evaluate 中使用页面?

[英]How can I use page inside of my page.evaluate?

在这种适用于 puppeteer 的方法中,我想使用page ,但我不知道如何在 Promise 中获取它。

async scrollList( page ) {
    let results = await page.evaluate( async () => {
        results = await new Promise( async resolve => {
            // next line fails :-(
            await page.mouse.move( 100, 100 );

            // do other stuff
            return resolve( results );
        });
    });

    console.log('Got results: ', results);
}

我怎样才能做到这一点? 现在我收到一个错误,说page未定义。

问题

由于两个运行时(Node.js 和浏览器)是分开的,因此您无法访问页面。 page object 只能从 Node.js 运行时访问。

解决方案

您必须公开一个可以访问page object 的 function 才能通过page.exposeFunction执行此操作:

await page.exposeFunction('moveMouse', async (x, y) => {
    // page is accessible here
    await page.mouse.move(x, y);
});

您可以在 page.evaluate 中使用page.evaluate通过调用window.moveMouse(100, 100)进行评估。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM