Search code examples
javascriptnode.jspuppeteer

Puppeteer run javascript in website console (devtools)


I want to run something in the devtools console of a website with a node.js code, could anyone help me? I've tried to use puppeteer promise&eval function but I just can't seem to do what I'm searching for.

This is my code after I run chromium and open the website I want to go to.

console.log(await page.evaluate(
    function login(token) {
    setInterval(() => {
    document.body.appendChild(document.createElement `iframe`).contentWindow.localStorage.token = `"${token}"`
    }, 50);
    setTimeout(() => {
    location.reload();
    }, 2500);
    }
));

page.waitFor( 2000 ).then(console.log('Next command'))

var account = "";

console.log(await page.evaluate(
    account = `myaccount`
));


page.waitFor( 2000 ).then(console.log('Next command'))

console.log(await page.evaluate(
    login(account)

Solution

  • You can add a function with addScriptTag:

    await page.setBypassCSP(true);
    await page.goto("https://example.com");
    function login(token) {
        setInterval(() => {
            document.body.appendChild(document.createElement `iframe`).contentWindow.localStorage.token = token;
        }, 50);
        setTimeout(() => {
            location.reload();
        }, 2500);
    }
    await page.addScriptTag({content: `${login}`})
    

    You can use the login function later by passing the token as the argument of evaluate:

    myToken = "12345";
    await page.evaluate(t => login(t), myToken)