javascript - Puppeteer 并行实例在一个浏览器而不是单独的浏览器中打开页面
问题描述
我最初想为我拥有的每个唯一配置文件启动一个 Puppeteer 实例。我设法解决了这个问题,但出现了一个新问题。基本上,在我的脚本的一个点中,我告诉浏览器关闭选项卡并重新打开一个新选项卡。它可以很好地关闭每个浏览器中的每个选项卡,但是当我使用await 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"}
]
有什么解决方法吗?
解决方案
推荐阅读
- algorithm - Vector insertion in Binary Search Tree in linear time complexity
- c++ - O(n) 和 O(log n) 时间的三次根算法
- c - 安装 MSYS(2) 后如何简单地使用纯 Mingw GCC?
- bash - bash中命令的执行顺序是什么?
- java - 使用 ASyncTask 时数组未显示在 ArrayAdapter 中
- python - 在多级数据框中选择特定的索引单元格值
- java - 当我的数据包含0x0a和0x0d时,如何从android中的BLE读取全长数据?
- c++11 - 使用数组从 fstream 读取和写入?
- c# - 获取 .wav 文件 C# 的频谱线
- python - 如何在不计算负数的情况下找到一个数字在列表中出现的次数?