Saya perlu menghapus / menghapus teks dalam iframe melalui dalang. Saya dapat melakukannya dengan mudah menggunakan metode / objek halaman, I.E.

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

Di atas akan menghapus 30 karakter atau kurang dari pemilih CSSselectorInput CSS. Tapi, ketika saya mencoba:

// 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');
}

Ya, saya tahu, melihat dalang, frame.keyboard tidak ada di sana. Jadi, bagaimana saya bisa menghapus teks dari kotak input melalui dalang?

0
Huckleberry Carignan 2 April 2021, 22:00

1 menjawab

Jawaban Terbaik

Ini sepertinya OK:

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); }
1
vsemozhebuty 2 April 2021, 20:48