如何在 Puppeteer 中实现 page.type()?

How to implement page.type() in Puppeteer?

我想使用 Puppeteer 在以下表格的邮政编码字段中输入邮政编码。

https://www.hudhomestore.com/Listing/BrokerSearch.aspx?sLanguage=ENGLISH

脚本运行后,我希望看到邮政编码出现在表单的邮政编码字段中。但是,相反,我收到以下错误消息。

UnhandledPromiseRejectionWarning: TimeoutError: waiting for selector "#txtZipCode" failed: timeout 30000ms exceeded

我加了一个

page.waitForNavigation({ waitUntil: 'domcontentloaded', });

每次页面更新时执行命令 according to this SO answer。但这并没有帮助。

我做错了什么?

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({
    headless: false,
    waitUntil: 'load',
  });
  const page = await browser.newPage();
  const navigationPromise = page.waitForNavigation({ waitUntil: 'domcontentloaded', });
  await page.goto('https://www.hudhomestore.com/Listing/BrokerSearch.aspx?sLanguage=ENGLISH');
  navigationPromise;
  await page.waitForSelector('#txtZipCode');
  await page.type('#txtZipCode', '79936',);
})()

该元素位于 iframe 中。试试这个:

const page = await browser.newPage();
await page.goto('https://www.hudhomestore.com/Listing/BrokerSearch.aspx?sLanguage=ENGLISH');
await page.waitForSelector('#inWin107');
const iframeElement = await page.$('#inWin107');
const frame = await iframeElement.contentFrame();
await frame.waitForSelector('#txtZipCode');
await frame.type('#txtZipCode', '79936');