簡體   English   中英

Puppeteer:我如何跨多個“頁面”攔截請求?

[英]Puppeteer: How do I intercept requests across multiple “pages”?

我試圖從一個網頁上下載PDF,其中一個頁面上有多個PDF鏈接。 第一個問題是,當點擊()鏈接時,它會自動顯示一個新標簽或頁面。 我研究了這一點 - 這種行為似乎是固有的 - 並且不可改變。 所以 - 我在下一個緩沖所有這些內容的途徑是設置一個請求攔截器,它接受每個類似的請求(除了更改的URL參數)並使用瀏覽器cookie - 復制請求並使用不同的請求庫發送它。

這讓我想到了我的主要問題 - 在創建時,將每個新頁面基本上“掛鈎”到我的請求攔截器中的最佳方法是什么? 我已經查看了從主頁面發出的請求 - 似乎它位於發送請求的新選項卡中。

誰知道怎么做?

您可以使用瀏覽器發出的targetcreated事件。

您需要知道的一件重要事情是,雖然將創建新目標,但PDF查看器(如果可用)將打開PDF。 您將無法evaluatescreenshotpdf該目標。

const browser =  await puppeteer.launch({ headless: false});
const page = await browser.newPage();

browser.on('targetcreated', e => {
    console.log(e.url());
});

await page.goto("https://codepen.io/hardkoded/pen/gOYmVww");
const frameEl = await page.$("#result");
const frame = await frameEl.contentFrame();
await frame.click("a");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM