如何使用 Puppeteer 删除输入文本

How to delete input text with Puppeteer

我需要通过 puppeteer 在 iF​​rame 中 remove/delete 文本。我可以使用 method/object 页面轻松完成,即

await page.click(cssSelectorInput);
for (let i = 0; i < settings._30; i++) {
    await page.keyboard.press('Backspace');
}

以上将从 CSS 选择器 cssSelectorInput 中删除 30 个或更少的字符。 但是,当我尝试时:

// Get the iFrame in Signle Sign On page
const frameHandle = await page.$('iframe[id="sso-iframe"]');
const frame = await frameHandle.contentFrame();

await frame.click(cssSelectorInput);
for (let i = 0; i < settings._30; i++) {
    await frame.keyboard.press('Backspace');
}

是的,我知道,看傀儡师,frame.keyboard不在。那么,如何通过 puppeteer 从输入框中删除文本?

这似乎还可以:

import puppeteer from 'puppeteer';

const browser = await puppeteer.launch({ headless: false, defaultViewport: null });

const html = `
  <!doctype html>
  <html>
    <head><meta charset='UTF-8'><title>Test</title></head>
    <body>
      <iframe src='data:text/html,<input value="Text">'></iframe>
    </body>
  </html>`;

try {
  const [page] = await browser.pages();

  await page.goto(`data:text/html,${html}`);

  await page.frames()[1].click('input');
  for (let i = 0; i < 4; i++) {
    await page.keyboard.press('Backspace');
  }
} catch (err) { console.error(err); }