[英]Puppeteer: How do I intercept requests across multiple “pages”?
我試圖從一個網頁上下載PDF,其中一個頁面上有多個PDF鏈接。 第一個問題是,當點擊()鏈接時,它會自動顯示一個新標簽或頁面。 我研究了這一點 - 這種行為似乎是固有的 - 並且不可改變。 所以 - 我在下一個緩沖所有這些內容的途徑是設置一個請求攔截器,它接受每個類似的請求(除了更改的URL參數)並使用瀏覽器cookie - 復制請求並使用不同的請求庫發送它。
這讓我想到了我的主要問題 - 在創建時,將每個新頁面基本上“掛鈎”到我的請求攔截器中的最佳方法是什么? 我已經查看了從主頁面發出的請求 - 似乎它位於發送請求的新選項卡中。
誰知道怎么做?
您可以使用瀏覽器發出的targetcreated事件。
您需要知道的一件重要事情是,雖然將創建新目標,但PDF查看器(如果可用)將打開PDF。 您將無法evaluate
, screenshot
或pdf
該目標。
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.