如何使用puppeteer获取具有样式的所有字体

时间:2019-04-23 03:22:19

标签: puppeteer google-chrome-headless

我正在使用puppeteer来获取给定网页的字体列表。

尝试以下代码段来获取给定页面的所有字体。

const selector = 'html';
const getFontProperty = async (page) => {
  const font = await page.evaluate((selector) => {
    let elements = Array.from(document.querySelectorAll(selector));
    console.log(elements)
    let links = elements.map(element => {
      console.log(element)
      console.log(getComputedStyle(element).font)
    });
  }, selector);
  return font;
}

但是,elements的定义不确定。

[引用链接:puppeteer page.evaluate querySelectorAll return empty objects

1 个答案:

答案 0 :(得分:0)

发生这种情况是因为您实际上没有返回字体定义,而是用console.log记录它们。如果您不使用箭头函数的简短形式,则需要显式返回一个值:

let links = elements.map(element => {
  console.log(element)
  return getComputedStyle(element).font
});

否则,您可以编写:

let links = elems.map(element => getComputedStyle(element).font);

更新:您还必须返回page.evaluate中查找的数据:

const font = await page.evaluate(selector => {

    let elements = Array.from(document.querySelectorAll(selector));
    let links = elems.map(element => getComputedStyle(element).font);

    return links; // <-- return data from page.evaluate

}, selector);