Javascript Puppeter:未加载使用indexeddb的动态页面

Javascript Puppeter:未加载使用indexeddb的动态页面,javascript,node.js,puppeteer,google-chrome-headless,Javascript,Node.js,Puppeteer,Google Chrome Headless,我试图截取一个使用indexeddb生成部分内容的页面的屏幕截图 我的木偶演员代码非常简单: (async() => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.setViewport({ width: 1200, height: 1080 }); const relevantS

我试图截取一个使用indexeddb生成部分内容的页面的屏幕截图

我的木偶演员代码非常简单:

(async() => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    await page.setViewport({
        width: 1200,
        height: 1080
    });
    const relevantSite = 'http://example.com'; // <<-- replace this with the actual site
    await page.goto(relevantSite);
    await page.waitForSelector('#myContentSelector');
    console.log('Content is now loaded');
    await page.screenshot({path: 'dynamic-screenshot.png'});
    await browser.close();
})();
(异步()=>{
const browser=wait puppeter.launch();
const page=wait browser.newPage();
等待page.setViewport({
宽度:1200,
身高:1080
});

康斯特相关网站http://example.com“;//IndexedDB似乎对木偶演员很管用

我怀疑您的问题实际上是您没有给页面时间来加载和填充内容

await page.waitForSelector('#myContentSelector');
#myContentSelector是否类似于容器div,实际内容稍后填充(甚至是25毫秒之后)


尝试在页面加载后等待一秒钟再截图?

尝试如下操作:

await page.goto(relevantSite, { waitUntil: 'networkidle2' });
const navigationPromise = page.waitForNavigation();
await page.waitForSelector('#myContentSelector');
console.log('Content is now loaded');
await page.screenshot({path: 'dynamic-screenshot.png'});
await navigationPromise;

使用选项waitUntil for和with

#myContentSelector
是一个动态生成的元素。最终发生的是
页面。waitForSelector(“#myContentSelector”);
行永远不会为我解决问题并超时。简言之,我不相信等待会解决我的问题(我已经尝试过)。尝试一些不同类型的等待。networkidle0对我来说非常可靠。或者您可以等待更快的一种:
wait Promise.race([page.waitForNavigation({waitUntil:'load'}),page.waitForNavigation({waitUntil:'networkidle0'}),]))
@ippi谢谢你的建议,这是我尝试的第一件事:S,我感觉等待不是问题。谢谢你的建议,但等待选项是我尝试的第一件事,我可以验证这不起作用:(我感觉到你的痛苦,过去几周我一直在和木偶演员打架(但没有接触indexddb)。我会尝试设置userDataDir选项(可能您需要它来实现indexedDb?)。此外,
dumpio:true
可能会给出一些提示。您是否使用任何babel transpiler或类似工具?如果是,请确保您的async/awaits是真正的async awaits(检查当前节点版本和transpile目标)。请尝试Puppeter下一个分支(当前为1.5.0-next.1530333501924)。测试headless false(但这就像任何人做的第一件事一样)。使用chromium打开站点并检查它是否存在浏览器问题。请尝试更高版本的节点。