node.js - วิธีจัดการหน้ากระดาษใหม่เมื่อคลิกปุ่มใน Puppeteer?
ฉันกำลังใช้ Puppeteer ในโปรเจคเพื่อทดสอบเว็บเพจ ในเพจนั้นฉันมีหลายปุ่มที่เปิดแท็บใหม่ในเบราว์เซอร์ ฉันจะจัดการเรื่องนั้นโดยใช้ Puppeteer ได้อย่างไร?
const puppeteer = require('puppeteer');
(async() => {
const browser = await puppeteer.launch({ defaultViewport: null });
const page = await browser.newPage();
// go to the URL
await page.goto('https://example.com/', {waitUntil: 'networkidle'});
await page.click('.btnId'); //opens new tab with Page 2
// handle Page 2
// process Page 2
// close Page 2
// go back to Page 1
browser.close();
})();
ฉันจะจัดการหน้าที่ 2 ได้อย่างไร?
คำตอบ #1
await page.waitFor(3 * 1000) // wait for new page to open
const pages = await browser.pages() // get all pages
const page2 = pages[pages.length - 1] // get the new page
// process the new page
await page2.close()
คำตอบ #2
หวังว่าสิ่งนี้จะช่วยในการแก้ปัญหาได้
const puppeteer = require('puppeteer');
(async() => {
const browser = await puppeteer.launch({ defaultViewport: null });
const page = await browser.newPage();
// go to the URL
await page.goto('https://example.com/', {waitUntil: 'networkidle'});
await page.click('.btnId'); //opens new tab with Page 2
// you can make this as dynamic as well depends on the website and use case.
const [tabOne, tabTwo] = (await browser.pages());
// use the tabs Page objects properly
console.log("Tab One Title ",await tabOne.title());
// use the tabs Page objects properly
console.log("Tab Two Title ",await tabTwo.title());
// you can use close property for tab when it's done.
browser.close();
})();
