ค้นหาเว็บไซต์

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();

})();

บทความที่เกี่ยวข้อง