puppeteer frame查找

本文介绍如何使用Puppeteer获取网页中iframe的内容。通过示例代码展示了两种方法:一是通过mainFrame().childFrames()获取iframe,二是通过page.frames()结合find方法找到指定iframe。并演示了如何在找到的iframe中进行元素选择和值读取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

const puppeteer = require('puppeteer');

//https://my.oschina.net/reamd7/blog/1634846
async function run() {
  console.log('开始');
  const browser = await puppeteer.launch({ headless: false });

  const page = await browser.newPage();
  url = "file:///C:/reptile_1/frame%E7%BD%91%E9%A1%B5/index.html";
  await page.goto(url);
  await page.waitFor(1000);


  // 获取uiframe信息
  console.log('获取uiframe信息');
  let frame = await page.mainFrame().childFrames()[0];
  let doc = await frame.evaluateHandle('document');
  let s = await doc.$eval("#edit1", el => el.value);
  console.log(s);
  await page.waitFor(1000);

  //----------或者-------------
  console.log('获取uiframe信息');
  const frameA = page.frames().find(frame => frame.name() === 'iframe1');
  let doc1 = await frameA.evaluateHandle('document');
  let s1 = await doc1.$eval("#edit1", el => el.value);
  console.log(s1);
  await page.waitFor(1000);


  //结束
  console.log('结束');
 

 

 

const browser = await puppeteer.launch();//获得browser对象
const page = await browser.newPage();//获得page对象
await page.goto('https://www.baidu.com/'); //页面跳转
const name = await page.$("input[name='ryname']");//通过name获得页面上的控件
const nm = await page.$("#kw");//通过id获得页面上的控件
await nm.focus(); //定位到搜索框
await page.keyboard.type("puppeteer");//模拟输入
const btn = await page.$("#su");
btn.click();//模拟按钮单击事件
let iframe = await page.frames().find(f => f.name() === 'qy_r');//找名称为qy_r的子框架
//子框架遍历
for (let child of iframe.childFrames()) {
……
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值