Кукловод |Введите текст в Iframe - PullRequest
0 голосов
/ 03 ноября 2019

Проблемы с вводом Iframe Puppeteer

  • Я пытаюсь передать форму проверки с веб-сайта, но в ней есть iframe для информации о карте, кто-нибудь знает, как ввести текст в этомform?

  • Я перепробовал все, что видел в переполнении стека и GitHub, но ничто из того, что я увидел, не могло мне помочь.

  • У меня нет кода, который я пробовал, потому что я много пробовал и удалил его.


Ожидайте заполнить номер карты и имя владельца карты.

1 Ответ

0 голосов
/ 03 ноября 2019

Поэтому, когда вы пытаетесь получить объект Frame, вы должны прослушать событие frameattached на странице. Вы можете сделать этот слушатель как функцию.

function waitForFrame(page, frameName) {
  let fulfill;
  const promise = new Promise(x => fulfill = x);
  checkFrame();
  return promise;

  function checkFrame() {
    const frame = page.frames().find(f => f.name() === frameName);
    if (frame)
      fulfill(frame);
    else
      page.once('frameattached', checkFrame);
  }
}

И эти строки ниже - способ получения объекта Frame

// 1. waiting for frame with name 'ifrw' to get attached
const frame = await waitForFrame(page, 'ifrw')

// 2. waiting for the frame to contain the necessary selector
await frame.waitForSelector('input[type="text"][name="username"]')

// 3. do whatever you want to do like login form for example
const nameInputHandle = await frame.$('input[type="text"][name="username"]')
await nameInputHandle.type('my_name_is_too_long_for_sure')

const passInputHandle = await frame.$('input[type="password"][name="password"]')
await passInputHandle.type('Even_the_password_is_tricky_12345')

const submitButton = await frame.$('input[type="submit"][name="loginsubmit"]')
await submitButton.click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...