Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature]: Can puppeteer launch headless browser and headed browser at the same time? #12465

Closed
Yemesoft opened this issue May 20, 2024 · 8 comments
Labels

Comments

@Yemesoft
Copy link

Feature description

Can puppeteer launch headless browser and headed browser at the same time?

@OrKoN
Copy link
Collaborator

OrKoN commented May 21, 2024

You can launch two browser instances by calling the launch method twice.

@OrKoN OrKoN closed this as not planned Won't fix, can't repro, duplicate, stale May 21, 2024
@Yemesoft
Copy link
Author

Howerver, when a headless browser launched, I cannot launch a headed browser any more.

@OrKoN
Copy link
Collaborator

OrKoN commented May 21, 2024

import puppeteer from 'puppeteer'

const browser1 = await puppeteer.launch();
const browser2 = await puppeteer.launch({
  headless: false,
});

console.log('Two browsers launched');

browser1.close();
browser2.close();

works for me.

@Yemesoft
Copy link
Author

Oh, sorry、、I am using puppeteer-core and chrome、、

@OrKoN
Copy link
Collaborator

OrKoN commented May 21, 2024

It would not work if you try to use the same userDataDir for example. Without seeing code, it is hard to say. Consider filing out a bug report form, if you think something is not working.

@Yemesoft
Copy link
Author

My codes below。I must use the same userDataDir to share user data for all browsers

    async openHeadless(){
        let  browser = await puppeteer.launch({
            width: screen.getPrimaryDisplay().width,
            height: screen.getPrimaryDisplay().height,
            executablePath: store.chromExecutablePath,
            headless: true,
            debuggingPort: remote_debugging_port,
            args: ['--remote-debugging-port=' + remote_debugging_port],
            ignoreDefaultArgs: ['--enable-automation'],
            userDataDir: 'default',
            defaultViewport: null,
        })
        let page = await browser.newPage()
        await page.goto('https://weibo.com')
        console.log('openHeadless success')
    },
    async openHeaded(){
        let  browser = await puppeteer.launch({
            width: screen.getPrimaryDisplay().width,
            height: screen.getPrimaryDisplay().height,
            executablePath: store.chromExecutablePath,
            headless: false,
            debuggingPort: remote_debugging_port,
            args: ['--remote-debugging-port=' + remote_debugging_port],
            ignoreDefaultArgs: ['--enable-automation'],
            userDataDir: 'default',
            defaultViewport: null,
        })
        let page = await browser.newPage()
        await page.goto('https://weibo.com')
        console.log('openHeaded success')
    }

image

@OrKoN
Copy link
Collaborator

OrKoN commented May 21, 2024

That will not work since the instances can corrupt the user data dir. I suggest you make a copy for each of the instances.

@Yemesoft
Copy link
Author

Ok,thanks a lot

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants