我正在使用 puppeteer,但有一个小问题,偶尔会出现带有广告的新选项卡,并停止整个脚本。我正在寻找一种方法来基本上检测浏览器窗口中的第三个选项卡何时打开并关闭此第三个选项卡(它始终是第三个 - 第一个是空白,第二个是我需要的页面,第三个是这个广告)。
尝试这样的事情:
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch({ headless: false });
try {
browser.addListener('targetcreated', async (target) => {
if (target.type() !== 'page') return;
const properOrigin = 'https://example.org';
const pageUrl = target.url();
if (new URL(pageUrl).origin === properOrigin) return;
console.log(`Closing page ${pageUrl}...`);
const newPage = await target.page();
await newPage.waitForTimeout(3000);
await newPage.close();
console.log(`Page ${pageUrl} closed.`);
});
const [mainPage] = await browser.pages();
await mainPage.goto('https://example.org/');
await mainPage.evaluate(() => {
window.open('https://google.com');
});
} catch (err) { console.error(err); }
对于那些只是想关闭当前页面的人,当您分配时
const page = await browser.newPage();
然后你就可以走了:
await page.close();
这将关闭当前页面。