Javascript Puppeter并行实例在一个浏览器而不是单独的浏览器中打开页面

Javascript Puppeter并行实例在一个浏览器而不是单独的浏览器中打开页面,javascript,node.js,json,puppeteer,Javascript,Node.js,Json,Puppeteer,我最初想为我拥有的每个独特的配置文件启动一个木偶演员实例。我设法解决了这个问题,但出现了一个新问题。基本上,在我的脚本的一个点上,我告诉浏览器关闭选项卡并重新打开一个新选项卡。它可以很好地关闭每个浏览器中的每个选项卡,但当我使用wait browser.newPage()时它只将所有新选项卡发送到一个浏览器(我猜这是最后一个打开的浏览器),而不是停留在各自的浏览器中 const puppeteer = require('puppeteer-extra'); const fs = require(

我最初想为我拥有的每个独特的配置文件启动一个木偶演员实例。我设法解决了这个问题,但出现了一个新问题。基本上,在我的脚本的一个点上,我告诉浏览器关闭选项卡并重新打开一个新选项卡。它可以很好地关闭每个浏览器中的每个选项卡,但当我使用
wait browser.newPage()时它只将所有新选项卡发送到一个浏览器(我猜这是最后一个打开的浏览器),而不是停留在各自的浏览器中

const puppeteer = require('puppeteer-extra');
const fs = require('fs');

const botRun = async emailInfo => {
    browser = await puppeteer.launch({
        args: [],
        headless: false,
        ignoreHTTPSErrors: true,
        slowMo: 5,
    });
    const page = await browser.newPage();
    await page.waitForTimeout(2500)
    // do stuff with emailInfo
    await page.close(); // works fine - will close tab for each browser 
    await browser.newPage(); // suddenly sends all tabs to 1 browser
};

(async () => {
    const profile = JSON.parse(fs.readFileSync("./settings.json"));    
    await Promise.all(profile.map(({email}) => botRun(email)));
})();
settings.json
看起来像:

[
  {"email": "email1@gmail.com"},
  {"email": "email2@gmail.com"},
  {"email": "email3@gmail.com"}
]


是否有解决方法?

如何
等待浏览器。关闭()而不是底部的
等待browser.newPage()?这无法解决问题,因为在脚本中的某些情况下,我需要先关闭页面,然后重新打开新页面。我在想,如果我给每个人分配一个ID,他们就会知道如何留在各自的浏览器中?我的解决方法是让一个变量提到任务编号:“page=wait browser.newPage(taskNumber);”但这似乎并没有解决问题。每次浏览器关闭并重新打开一个新选项卡时,它只会被发送到最后一个运行的Puppeter实例,而不是停留在各自的浏览器中。