Javascript 正在等待使用Puppeter显示Google验证码

Javascript 正在等待使用Puppeter显示Google验证码,javascript,node.js,puppeteer,Javascript,Node.js,Puppeteer,我无法使用Puppeter验证页面上是否存在div,我也不知道为什么。。。 我想使用以下代码在页面上确定验证码的范围: puppeteer .launch(options) .then(async (browser) => { const page = await browser.newPage(); await page.setViewport({ width: 1280, height: 720 }); console.log(&qu

我无法使用Puppeter验证页面上是否存在div,我也不知道为什么。。。 我想使用以下代码在页面上确定验证码的范围:

puppeteer
    .launch(options)
    .then(async (browser) => {
      const page = await browser.newPage();
      await page.setViewport({ width: 1280, height: 720 });
      console.log("[+] Connecting...");
      await page.goto("https://www.google.com/recaptcha/api2/demo");
      console.log("[+] Connected");
      page.waitForNavigation()
      if (await page.$('div.recaptcha-checkbox-border') !== null)
        console.log('[+] Resolving captcha');
  })
  .catch((err) => {
    console.log(err);
  });
但我的假设总是错误的,我不知道为什么

以下是手动确定范围的元素的屏幕截图:


此脚本应该可以运行

'use strict';

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({ headless : false});
  const page = await browser.newPage();

  console.log("Opening page");
  await page.goto('https://www.google.com/recaptcha/api2/demo');
  console.log("Opened page");

  const frame = await page.frames().find(f => f.name().startsWith("a-"));
  await frame.waitForSelector('div.recaptcha-checkbox-border');
  console.log("Captcha exists!");

  await browser.close();
})();
验证码似乎位于始终以
name=a-
开头的iframe内(但是,我无法通过有限的测试确认这一点)

首先需要获取iframe,然后在加载iframe之后等待选择器。这是输出,请尝试更改iframe名称或选择器名称以查看其失败


我想您必须等待reCaptcha。但是我已经创建了一个
页面。waitForNavigation()
,但是您不知道reCaptcha是何时创建的。