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 |
要传递给 |
返回值:
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),
);