Эквивалент jQuery find().filter() в Puppeteer

У меня есть этот код в jQuery:

$(iframe).find('input[type=text]').filter(':visible:first').val("abc");

Я попытался сделать это в Puppeteer следующим образом:

const iframe = await page.frames().find(f => f.name() === 'iframe');
var inputText = await iframe.$('input[type=text]').filter(':visible:first');
await inputText.focus();
await page.keyboard.type("abc");

Я получил следующую ошибку:

iframe.$(...).filter is not a function

Я также пробовал с iframe.$$, но получил те же результаты.

Обновлено:

Моя конечная цель - воспроизвести этот jQuery:

$(iframe).find('select').filter(':visible').eq(1);
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
1
0
264
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

$ на jQuery и $ на кукловоде не имеют отношения. Вам нужно внедрить jQuery и оценить скрипт на странице.

Чтобы внедрить jQuery из cdn,

await page.addScriptTag({url: 'https://code.jquery.com/jquery-3.4.1.min.js'});

Чтобы внедрить локальный jQuery,

await page.addScriptTag({path: require.resolve('jquery')});

И тогда ваш код обычно с page.evaluate,

await page.evaluate(()=>{
  // get the body inside iframe
  const iframe = $("YourSelector").contents().find("body");

  // run your code
  $(iframe).find('input[type=text]').filter(':visible:first').val("abc");
})

Другие вопросы по теме