Puppeteer 中文文档v25.8.0

ElementHandle.$$eval() 方法

在当前元素中,对匹配给定选择器的元素数组运行给定函数。

如果给定函数返回 Promise,则此方法将等待该 Promise 解析。

签名

class ElementHandle {
  $$eval<
    Selector extends string,
    Params extends unknown[],
    Func extends EvaluateFuncWith<Array<NodeFor<Selector>>, Params> =
      EvaluateFuncWith<Array<NodeFor<Selector>>, Params>,
  >(
    selector: Selector,
    pageFunction: Func | string,
    ...args: Params
  ): Promise<Awaited<ReturnType<Func>>>;
}

参数

参数

类型

说明

selector

Selector

选择器用于在页面中查询。CSS 选择器可以按原样传递,Puppeteer 特有的选择器语法允许按文本无障碍角色和名称XPath查询,也允许跨 shadow root 组合这些查询。另外,你可以使用前缀指定选择器类型。

pageFunction

Func | string

要在元素所在页面的上下文中求值的函数。匹配给定选择器的元素数组将作为其第一个参数传递给该函数。

args

Params

要传递给 pageFunction 的其他参数。

返回值:

Promise<Awaited<ReturnType<Func>>>

该函数结果的 Promise。

示例

HTML:

<div class="feed">
  <div class="tweet">Hello!</div>
  <div class="tweet">Hi!</div>
</div>

JavaScript:

const feedHandle = await page.$('.feed');

const listOfTweets = await feedHandle.$$eval('.tweet', nodes =>
  nodes.map(n => n.innerText),
);