看看这个简单的代码:
const browser = await puppeteer.launch({headless: false});
const page: Page = await browser.newPage();
await page.evaluate((a) =>
{
//This will open a new page :
([...document.querySelectorAll("a")][0] as HTMLElement).click();
});
如果点击A
( anchor )元素有 target="_blank"
,然后该页面将作为新页面打开。
这不是原始页面对象。
问题:
用户点击<a target="_blank"
后如何获取新的页面对象?
最佳答案
可以这样完成:
const [newTarget] = await Promise.all([
// Await new target to be created with the proper opener
new Promise(x => browser.on('targetcreated', target => {
if (target.opener() !== page.target())
return;
browser.removeListener('targetcreated', arguments.callee);
x();
})),
page.click('link'),
])
// Attach to the newly opened page.
const newPage = await newTarget.page();
关于web-scraping - 点击 "_blank"后使用 Puppeteer 获取新页面的句柄?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53374443/