Frame 類別
表示一個 DOM 框架。
要理解框架,您可以將框架視為 <iframe>
元素。就像 iframes 一樣,框架可以巢狀,當 JavaScript 在一個框架中執行時,JavaScript 不會影響執行 JavaScript 的環境框架內的框架。
簽章
export declare abstract class Frame extends EventEmitter<FrameEvents>
繼承自: EventEmitter<FrameEvents>
備註
框架的生命週期由在父 頁面 上分派的三個事件控制
此類別的建構子標示為內部。第三方程式碼不應直接呼叫建構子或建立擴充 Frame
類別的子類別。
範例 1
在任何時間點,頁面 都會透過 Page.mainFrame() 和 Frame.childFrames() 方法公開其目前的框架樹狀結構。
範例 2
傾印框架樹狀結構的範例
import puppeteer from 'puppeteer';
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.google.com/chrome/browser/canary.html');
dumpFrameTree(page.mainFrame(), '');
await browser.close();
function dumpFrameTree(frame, indent) {
console.log(indent + frame.url());
for (const child of frame.childFrames()) {
dumpFrameTree(child, indent + ' ');
}
}
})();
範例 3
從 iframe 元素取得文字的範例
const frame = page.frames().find(frame => frame.name() === 'myframe');
const text = await frame.$eval('.selector', element => element.textContent);
console.log(text);
屬性
屬性 | 修飾詞 | 類型 | 描述 |
---|---|---|---|
detached |
| boolean |
方法
方法 | 修飾詞 | 描述 |
---|---|---|
$(selector) | 在框架中查詢符合給定選擇器的元素。 | |
$$(selector, options) | 在框架中查詢所有符合給定選擇器的元素。 | |
$$eval(selector, pageFunction, args) | 在框架中符合給定選擇器的元素陣列上執行給定函式。 如果給定函式傳回 Promise,則此方法會等到 Promise 解析為止。 | |
$eval(selector, pageFunction, args) | 在框架中符合給定選擇器的第一個元素上執行給定函式。 如果給定函式傳回 Promise,則此方法會等到 Promise 解析為止。 | |
addScriptTag(options) | 將 | |
addStyleTag(options) | 將具有所需網址的 | |
addStyleTag(options) | 將具有所需網址的 | |
childFrames() | 子框架的陣列。 | |
click(selector, options) | 點擊符合 備註 如果
| |
content() | 框架的完整 HTML 內容,包括 DOCTYPE。 | |
evaluate(pageFunction, args) | 行為與 Page.evaluate() 相同,只是它在此框架的內容中執行。 請參閱 Page.evaluate() 以了解詳細資訊。 | |
evaluateHandle(pageFunction, args) | 行為與 Page.evaluateHandle() 相同,只是它在此框架的內容中執行。 請參閱 Page.evaluateHandle() 以了解詳細資訊。 | |
focus(selector) | 將焦點放在符合 | |
frameElement() | ||
goto(url, options) | 將框架或頁面導覽至給定的 備註 導覽至 警告 無頭殼模式不支援導覽至 PDF 文件。請參閱上游問題。 在無頭殼中,當遠端伺服器傳回任何有效的 HTTP 狀態碼時,此方法不會擲回錯誤,包括 404「找不到」和 500「內部伺服器錯誤」。此類回應的狀態碼可以透過呼叫 HTTPResponse.status() 來擷取。 | |
hover(selector) | 將指標懸停在符合 | |
isDetached() |
| 如果框架已分離,則為 已過時 使用 |
locator(selector) | 為提供的選擇器建立定位器。請參閱 Locator 以了解詳細資訊和支援的動作。 | |
locator(func) | 為提供的函式建立定位器。請參閱 Locator 以了解詳細資訊和支援的動作。 | |
name() |
| 框架的 已過時 使用
備註 此值會在建立框架時計算一次,如果稍後變更屬性,則不會更新。 |
page() | 與框架相關聯的頁面。 | |
parentFrame() | 父框架(如果有的話)。已分離和主要框架傳回 | |
select(selector, values) | 在符合 | |
setContent(html, options) | 設定框架的內容。 | |
tap(selector) | 點擊符合 | |
title() | 框架的標題。 | |
type(selector, text, options) | 為文字中的每個字元傳送 備註 若要按下特殊按鍵,例如 | |
url() | 框架的 URL。 | |
waitForFunction(pageFunction, options, args) | ||
等待框架導覽。當您執行會間接導致框架導覽的程式碼時,此方法非常有用。 使用 History API 來變更 URL 會被視為導覽。 | ||
waitForSelector(selector, options) | 等待符合給定選擇器的元素出現在框架中。 此方法會跨導覽運作。 |