Puppeteer - 处理框架

html 代码中的框架由 frames/iframe 标签表示。Puppeteer 可以通过从主页切换到框架来处理框架。要处理框架内的元素,首先我们必须借助定位器来识别框架。 contentFrame 方法用于访问框架内的元素。

语法

处理框架的语法如下 −

const f = await page.$("frame[name='frame-bottom']")
const m = await f.contentFrame()

让我们查看框架内元素的 html 代码并获取其中的文本 - BOTTOM。

BOTTOM

上图中突出显示的标签名为 frame,其 name 属性的值为 frame-bottom。

首先,按照 Puppeteer 基础测试章节中的步骤 1 到 2 进行操作,如下所示 −

步骤 1 −在创建 node_modules 文件夹的目录(安装 Puppeteer 和 Puppeteer 核心的位置)内创建一个新文件。

有关 Puppeteer 安装的详细信息,请参阅 Puppeteer 安装一章。

右键单击创建 node_modules 文件夹的文件夹,然后单击新建文件按钮。

Node Modules

步骤 2 − 输入文件名,例如 testcase1.js。

Testcase1.JS

步骤 3 −在创建的 testcase1.js 文件中添加以下代码。

//Puppeteer 库
const pt= require('puppeteer')
async function frameHandle(){
    //以 headless 模式启动浏览器
    const browser = await pt.launch()
    //浏览器新页面
    const page = await browser.newPage()
    //启动 URL
    await page.goto('https://the-internet.herokuapp.com/nested_frames')
    //识别框架
    const f = await page.$("frame[name='frame-bottom']")
    //移动到框架
    const x = await f.contentFrame();
    //识别框架内的元素
    const n = await x.$("body")
    //获取文本
   const v = await (await n.getProperty("textContent")).jsonValue()
   console.log(v)
}
frameHandle()

步骤 4 − 使用命令执行代码 −

node <filename>

因此在我们的示例中,我们将运行命令 −

node testcase1.js
Terminal Console

命令成功执行后,框架内的文本 - BOTTOM 将在控制台中打印。