使用 puppeteer 在选项卡之间切换

N.o*_*elN 3 tabs node.js puppeteer

我需要一个示例,如何使用 puppeteer 在选项卡之间切换

这是目前我所拥有的:

const puppeteer = require('puppeteer');



(async () => {
    const browser = await puppeteer.launch({
    headless: false, // launch headful mode
});


    const page = await browser.newPage();
    await page.setViewport({ width: 1920, height: 1080 });
                await page.goto('https://URL1.com');




    const pagee = await browser.newPage();
    await pagee.setViewport({ width: 1920, height: 1080 });
                await pagee.goto('https://URL2.com');

})();
Run Code Online (Sandbox Code Playgroud)

所以它首先打开 2 个标签:Url1,第二个:Url2

我需要的:

第一个选项卡做一些动作...转到第二个选项卡做一些动作...回到第一个选项卡做一些动作...

你们能给我举个例子吗?

谢谢你

Rip*_*ppo 5

你需要的代码是page.bringToFront 见这里

下面是一个工作脚本。请注意,我wait在选项卡之间添加了切换,否则脚本运行速度很快:)

const puppeteer = require('puppeteer'); 

async function run() {
    const browser = await puppeteer.launch( {
        headless: false
    }); 

    const page1 = await browser.newPage(); 
    await page1.goto('https://www.google.com');

    const page2 = await browser.newPage(); 
    await page2.goto('https://www.bing.com');

    const pageList = await browser.pages();    
    console.log("NUMBER TABS:", pageList.length);

    //switch tabs here
    await page1.bringToFront();
    blockingWait(1);
    await page2.bringToFront();
    blockingWait(1);
    await page1.bringToFront();
    blockingWait(4);

    await browser.close(); 
}; 

function blockingWait(seconds) {
    //simple blocking technique (wait...)
    var waitTill = new Date(new Date().getTime() + seconds * 1000);
    while(waitTill > new Date()){}

}

run(); 
Run Code Online (Sandbox Code Playgroud)

  • FWIW,“blockingWait”实现非常浪费,最好被动等待,例如“await new Promise(r => setTimeout(r, seconds * 1000))”。 (2认同)