Puppeteer中的jQuery find()。filter()等效项

时间:2019-06-23 22:18:35

标签: jquery 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);

1 个答案:

答案 0 :(得分:0)

在jQuery上的 $ 与在操纵up中的 $ 没有关系。您需要在页面上注入jQuery并评估脚本。

要从CDN注入jQuery,

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");
})