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 | 參數 | 要傳遞給 |
傳回
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!']);