簡體   English   中英

Puppeteer 在查詢中返回未定義

[英]Puppeteer returning undefined on query

我正在使用Puppeteer檢查網站上的死鏈接。 這些鏈接將有一個帶有“找不到頁面”的h1作為內容。 我的理解是page.evaluate可以訪問DOM ,但是當我嘗試在這里使用它時,我得到了undefined 我嘗試了幾種不同的方法來訪問這些數據( .$.$eval ),但到目前為止沒有任何效果。

當我在開發工具中輸入document.querySelector('h1', el => el.textContent)時,它可以正常工作。 我還設置了 userAgent,所以我很確定該網站不認為我是機器人。

const puppeteer = require('puppeteer'); 

const prepareForTests = async(page) => {
    const userAgent = 'Mozilla/5.0 (X11; Linux x86_64)' +
    'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.39 Safari/537.36';
  await page.setUserAgent(userAgent);
}

(async() => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    await prepareForTests(page);

    const link = await page.goto("https://www.example.com");

    console.log(await page.evaluate(() => {
        document.querySelector('h1', el => el.textContent);
    }));

    await browser.close();
    process.exit();
})();

看來這個片段是問題所在:

console.log(await page.evaluate(() => {
  document.querySelector('h1', el => el.textContent);
}));
  1. function 不返回值。
  2. document.querySelector()只接受 1 個參數,因此第二個 function 被忽略。

嘗試這個:

console.log(await page.evaluate(() => {
  return document.querySelector('h1').textContent;
}));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM