page.evaluate似乎没有发生

时间:2018-01-23 08:24:16

标签: javascript async-await puppeteer

根据主题,我的page.evaluate似乎无法运行。

crawler.crawlUrl = async function(url) {
    if (!url) {
        return;
    }
    const page = await crawler.browser.newPage();
    await page.goto(url);
    console.log('got to here');
    await page.evaluate(() => {
        const links2 = document.querySelectorAll('*');
        console.log('what');
        console.log(links2);
        return Promise.resolve(true);

    }).catch(function(er){
        console.log(er);
    });
}

crawler.crawlUrl('https://www.sundhed.dk');

在运行时,我最终得到了“到达这里”。语句记录到终端但没有其他事情发生。它只是永远地坐着。

1 个答案:

答案 0 :(得分:0)

尝试等待回来的东西!我的经验法则是每当我要求新资源时(点击按钮,转到网址)我总是执行waitForXXX

await page.goto(url);
await page.waitForSelector("h1");

您可能需要将h1替换为页面上存在的内容。

View list of puppeteer selectors

我创建了一个适合我的脚本: -

尝试等待回来的东西!我的经验法则是每当我要求新资源时(点击按钮,转到网址)我总是执行waitForXXX

await page.goto(url);
await page.waitForSelector("h1");

您可能需要将h1替换为页面上存在的内容。

View list of puppeteer selectors

我创建了一个适合我的脚本: -

'use strict'; 

const puppeteer = require('puppeteer'); 

async function run() {

    const browser = await puppeteer.launch( {
        headless: false //true
    }); 

    const page = await browser.newPage(); 
    await page.setViewport({ width:1024, height:800});
    await page.goto('https://www.sundhed.dk');
    await page.waitForSelector('h1');

    const innerText = await page.evaluate(() => {
        return document.querySelector("H1").innerText;
    });

    console.log(innerText);

    await browser.close(); 
}; 

run();