javascript - Google Puppeteer forEach 不是函数

标签 javascript node.js puppeteer

我有以下功能:

    (async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    await page.goto('http://elgiganten.dk');
    await page.setViewport({width: 1920, height: 1200});
    await page.type('#main-search', 'El');
    await page.keyboard.press('Enter');
    await page.waitForSelector('#no-products');
    //await page.screenshot({path: 'view.png'});

    // execute standard javascript in the context of the page.
    await page.addScriptTag({url: 'https://code.jquery.com/jquery-3.2.1.min.js'});
    const foundProducts = await page.evaluate(() => {
        var products = $('.mini-product-content');
        var returnArray = [];

        products.forEach(function (product) {
            var container = product.find('a');
            returnArray.push({
                title: container.title
            });
        });


        return products;
    });
    console.log(foundProducts);
    await browser.close();
})();

'.mini-product-content' 在页面上出现了 14 次。现在如您所见,我尝试循环遍历它们,但是每当我这样做时,我都会收到以下错误:

Error: Evaluation failed: TypeError: products.forEach is not a function

如果我删除它并打印出结果,我会得到以下结果:

    { '0': {},
  '1': {},
  '2': {},
  '3': {},
  '4': {},
  '5': {},
  '6': {},
  '7': {},
  '8': {},
  '9': {},
  '10': {},
  '11': {},
  '12': {},
  '13': {},
  length: 14,
  prevObject: 
   { '0': 
      { location: [Object],
        __satellite__: 2,
        SearchForm: [Object],
        StoreForm: [Object],
        _html5shiv: 1,
        jQuery2240488744717004840461: [Object] },
     length: 1 } }

上面是使用console.log

所以我的问题是我做错了什么?

最佳答案

您正在尝试遍历 jQuery 列表。您应该将 .forEach() 替换为 jQuery equivalent .each() .

关于javascript - Google Puppeteer forEach 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49730911/

相关文章:

javascript - 根据文本更改背景

javascript - 以适当的方式解构

docker - 使用 --no-sandbox 运行 headless Chrome/Puppeteer

node.js - Puppeteer 并未提取所有元素

node.js - 有没有办法让 puppeteer 的 waitUntil "networkidle"只考虑 XHR (ajax) 请求?

javascript - 如何扁平化reddit评论数据结构?

javascript - 避免mongodb批量插入重复键错误

node.js - 无法捕获 Node opencv 错误?

node.js - 'this' 在 Mongoose 预保存 Hook 中未定义

javascript - 单步执行 NPM 包的最佳方法是什么