跳至主要內容
版本:23.11.1

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

選擇器

要查詢頁面的選擇器CSS 選擇器可以直接傳遞,而Puppeteer 特定選擇器語法允許依文字a11y 角色與名稱以及xpath 進行查詢,並且跨 shadow root 組合這些查詢。或者,您可以使用前綴指定選擇器類型。

pageFunction

函式 | 字串

要在元素的頁面上下文中求值的函式。符合指定選擇器的元素陣列將作為其第一個參數傳遞給該函式。

args

參數

要傳遞給 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');
expect(
await feedHandle.$$eval('.tweet', nodes => nodes.map(n => n.innerText)),
).toEqual(['Hello!', 'Hi!']);