【问题标题】:Puppeteer won't click on Facebook cookie notice, no matter whatPuppeteer 无论如何都不会点击 Facebook cookie 通知
【发布时间】:2021-08-28 10:22:58
【问题描述】:

我正在尝试制作一个脚本来加载 facebook,输入电子邮件和密码并自动登录。但是,当打开 url “https://facebook.com/login”时,大约 0.5 秒后,出现 cookie 通知。我试图让 Puppeteer 点击“接受”按钮,但出于某种原因它不想这样做?

因此,程序永远不会前进,因为它无法单击按钮。有人可以查看我的代码并告诉我哪里出错了吗?

index.js(相关部分):

let browser = await puppeteer.launch({
        headless: false
    });
    let page = await browser.newPage();
    if (Object.keys(cookies).length) {
        await page.setCookie(...cookies);
        await page.goto('https://www.facebook.com/');
    } else {



        await page.goto('https://www.facebook.com/login', {
            waitUntil: 'networkidle0'
        });

        await page.waitForNavigation('load')

        // await page.waitForSelector('#u_0_i_6I', {
        //     visible: true
            // })

            // I TRIED THE ABOVE COMMENTED OUT CODE, DIDN'T WORK

        await delay(3000)
        // SO I TRIED MANUALLY WAITING 3 SECONDS FOR THE NOTICE TO LOAD IN BEFORE I CLICK IT

        
        await page.click('#u_0_i_6I') //COOKIE NOTICE ACCEPT BUTTON ID

【问题讨论】:

    标签: javascript node.js puppeteer


    【解决方案1】:

    我不是专家。但是,这是我发现对我有用的内容。

    有时 page.click() 对我不起作用。也许这就是你的情况。如果这是问题,您可以使用

    page.evalute(//(a function to execute in chrome dev tool environment))
    

    或者,使用

    page.$eval(//(...a selector), //(...a callback function using that selector as argument))
    

    您可以通过搜索函数名称在互联网上阅读有关该函数的更多信息。

    然后在浏览器上下文函数中,你可以执行任何你想要的 chrome 开发工具函数。如果你使用page.evaluate(),你可以

    document.querySelector('<classname or anyother selector>').click()
    

    或更好

    $('<selector>').click()
    

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多