瀏覽器
瀏覽器是透過 browser_type.launch() 建立的。以下是如何使用 Browser 建立 Page 的範例
- 同步
- 非同步
from playwright.sync_api import sync_playwright, Playwright
def run(playwright: Playwright):
firefox = playwright.firefox
browser = firefox.launch()
page = browser.new_page()
page.goto("https://example.com")
browser.close()
with sync_playwright() as playwright:
run(playwright)
import asyncio
from playwright.async_api import async_playwright, Playwright
async def run(playwright: Playwright):
firefox = playwright.firefox
browser = await firefox.launch()
page = await browser.new_page()
await page.goto("https://example.com")
await browser.close()
async def main():
async with async_playwright() as playwright:
await run(playwright)
asyncio.run(main())
方法
close
v1.9 之前加入如果此瀏覽器是使用 browser_type.launch() 取得的,則關閉瀏覽器及其所有頁面(如果有的話)。
如果此瀏覽器是連線到的,則清除所有屬於此瀏覽器的已建立內容,並與瀏覽器伺服器斷線。
這類似於強制結束瀏覽器。若要優雅地關閉頁面並確保您收到頁面關閉事件,請在您先前使用 browser.new_context() 明確建立的任何 BrowserContext 實例上呼叫 browser_context.close(),然後再呼叫 browser.close()。
Browser 物件本身被視為已處置,且無法再使用。
用法
browser.close()
browser.close(**kwargs)
參數
回傳
new_browser_cdp_session
加入於:v1.11CDP 會話僅在基於 Chromium 的瀏覽器上受支援。
傳回新建立的瀏覽器會話。
用法
browser.new_browser_cdp_session()
回傳
new_context
v1.9 之前加入建立新的瀏覽器內容。它不會與其他瀏覽器內容共用 Cookie/快取。
如果直接使用此方法建立 BrowserContext,最佳實務是在您的程式碼完成 BrowserContext 之後,以及在呼叫 browser.close() 之前,透過 browser_context.close() 明確關閉傳回的內容。這將確保 context
優雅地關閉,並且任何產生的項目(例如 HAR 和影片)都完全刷新並儲存。
用法
- 同步
- 非同步
browser = playwright.firefox.launch() # or "chromium" or "webkit".
# create a new incognito browser context.
context = browser.new_context()
# create a new page in a pristine context.
page = context.new_page()
page.goto("https://example.com")
# gracefully close up everything
context.close()
browser.close()
browser = await playwright.firefox.launch() # or "chromium" or "webkit".
# create a new incognito browser context.
context = await browser.new_context()
# create a new page in a pristine context.
page = await context.new_page()
await page.goto("https://example.com")
# gracefully close up everything
await context.close()
await browser.close()
參數
-
是否自動下載所有附件。預設為
true
,其中接受所有下載。 -
當使用 page.goto()、page.route()、page.wait_for_url()、page.expect_request() 或 page.expect_response() 時,它會使用
URL()
建構函式來建構對應的 URL,從而考量基本 URL。預設為未設定。範例- baseURL:
https://127.0.0.1:3000
和導覽至/bar.html
會產生https://127.0.0.1:3000/bar.html
- baseURL:
https://127.0.0.1:3000/foo/
和導覽至./bar.html
會產生https://127.0.0.1:3000/foo/bar.html
- baseURL:
https://127.0.0.1:3000/foo
(不含尾部斜線)和導覽至./bar.html
會產生https://127.0.0.1:3000/bar.html
- baseURL:
-
切換繞過頁面的內容安全策略。預設為
false
。 -
client_certificates
清單[字典] (選用)加入於:1.46#-
origin
字串憑證有效的確切來源。來源包含
https
通訊協定、主機名稱和選用的連接埠。 -
certPath
聯合[字串, pathlib.Path] (選用)PEM 格式憑證檔案的路徑。
-
cert
位元組 (選用)PEM 格式憑證的直接值。
-
keyPath
聯合[字串, pathlib.Path] (選用)PEM 格式私密金鑰檔案的路徑。
-
key
位元組 (選用)PEM 格式私密金鑰的直接值。
-
pfxPath
聯合[字串, pathlib.Path] (選用)PFX 或 PKCS12 編碼的私密金鑰和憑證鏈的路徑。
-
pfx
位元組 (選用)PFX 或 PKCS12 編碼的私密金鑰和憑證鏈的直接值。
-
passphrase
字串 (選用)私密金鑰(PEM 或 PFX)的密碼。
TLS 用戶端驗證允許伺服器請求用戶端憑證並驗證它。
詳細資訊
要使用的用戶端憑證陣列。每個憑證物件都必須具有
certPath
和keyPath
、單一pfxPath
或其對應的直接值等效項(cert
和key
或pfx
)。或者,如果憑證已加密,則應提供passphrase
屬性。應提供origin
屬性,以精確比對憑證有效的請求來源。注意在 macOS 上使用 WebKit 時,存取
localhost
不會選取用戶端憑證。您可以將localhost
替換為local.playwright
,使其運作。 -
-
color_scheme
"light" | "dark" | "no-preference" | "null" (選用)#模擬 prefers-colors-scheme 媒體功能,支援的值為
'light'
和'dark'
。請參閱 page.emulate_media() 以取得更多詳細資訊。傳遞'null'
會將模擬重設為系統預設值。預設為'light'
。 -
指定裝置縮放比例(可以視為 dpr)。預設為
1
。深入瞭解模擬具有裝置縮放比例的裝置。 -
extra_http_headers
字典[字串, 字串] (選用)#包含要與每個請求一起傳送的其他 HTTP 標頭的物件。預設為無。
-
forced_colors
"active" | "none" | "null" (選用)#模擬
'forced-colors'
媒體功能,支援的值為'active'
、'none'
。請參閱 page.emulate_media() 以取得更多詳細資訊。傳遞'null'
會將模擬重設為系統預設值。預設為'none'
。 -
指定視窗是否支援觸控事件。預設為 false。深入瞭解行動裝置模擬。
-
-
username
字串 -
password
字串 -
origin
字串 (選用)限制在特定來源 (scheme://host:port).
-
send
"unauthorized" | "always" (選用)此選項僅適用於從對應的 APIRequestContext 傳送的請求,且不影響從瀏覽器傳送的請求。
'always'
- 具有基本驗證憑證的Authorization
標頭將與每個 API 請求一起傳送。'unauthorized
- 僅當收到具有WWW-Authenticate
標頭的 401 (未授權) 回應時,才會傳送憑證。預設為'unauthorized'
。
HTTP 驗證的憑證。如果未指定來源,則使用者名稱和密碼會在未經授權的回應時傳送至任何伺服器。
-
-
在傳送網路請求時是否忽略 HTTPS 錯誤。預設為
false
。 -
是否考量
meta viewport
標籤並啟用觸控事件。isMobile 是裝置的一部分,因此您實際上不需要手動設定它。預設為false
,且在 Firefox 中不受支援。深入瞭解行動裝置模擬。 -
是否要在內容中啟用 JavaScript。預設為
true
。深入瞭解停用 JavaScript。 -
指定使用者地區設定,例如
en-GB
、de-DE
等。地區設定將影響navigator.language
值、Accept-Language
請求標頭值以及數字和日期格式規則。預設為系統預設地區設定。深入瞭解我們模擬指南中的模擬。 -
不強制執行固定視窗,允許在 Headed 模式中調整視窗大小。
-
是否模擬網路離線。預設為
false
。深入瞭解網路模擬。 -
要授予此內容中所有頁面的權限清單。請參閱 browser_context.grant_permissions() 以取得更多詳細資訊。預設為無。
-
-
server
字串用於所有請求的 Proxy。支援 HTTP 和 SOCKS Proxy,例如
http://myproxy.com:3128
或socks5://myproxy.com:3128
。簡短形式myproxy.com:3128
被視為 HTTP Proxy。 -
bypass
字串 (選用)要繞過 Proxy 的選用逗號分隔網域,例如
".com, chromium.org, .domain.com"
。 -
username
字串 (選用)如果 HTTP Proxy 需要驗證,則為要使用的選用使用者名稱。
-
password
字串 (選用)如果 HTTP Proxy 需要驗證,則為要使用的選用密碼。
要在此內容中使用的網路 Proxy 設定。預設為無。
-
-
record_har_content
"omit" | "embed" | "attach" (選用)#用於控制資源內容管理的選用設定。如果指定
omit
,則不會保存內容。如果指定attach
,則資源會另存為個別檔案,並且所有這些檔案都會與 HAR 檔案一起封存。預設為embed
,這會根據 HAR 規格將內容內嵌儲存在 HAR 檔案中。 -
record_har_mode
"full" | "minimal" (選用)#設定為
minimal
時,僅記錄從 HAR 路由所需的資訊。這會省略大小、時間、頁面、Cookie、安全性和其他類型的 HAR 資訊,這些資訊在從 HAR 重新播放時未使用。預設為full
。 -
record_har_omit_content
布林值 (選用)#用於控制是否從 HAR 中省略請求內容的選用設定。預設為
false
。 -
record_har_path
聯合[字串, pathlib.Path] (選用)#啟用將所有頁面的 HAR 記錄到檔案系統上指定的 HAR 檔案中。如果未指定,則不會記錄 HAR。請務必呼叫 browser_context.close() 以儲存 HAR。
-
record_video_dir
聯合[字串, pathlib.Path] (選用)#啟用將所有頁面的影片記錄到指定的目錄中。如果未指定,則不會記錄影片。請務必呼叫 browser_context.close() 以儲存影片。
-
記錄影片的尺寸。如果未指定,則大小將等於縮放以符合 800x800 的
viewport
。如果未明確設定viewport
,則影片大小預設為 800x450。如有必要,每個頁面的實際圖片將縮小以符合指定的尺寸。 -
reduced_motion
"reduce" | "no-preference" | "null" (選用)#模擬
'prefers-reduced-motion'
媒體功能,支援的值為'reduce'
、'no-preference'
。請參閱 page.emulate_media() 以取得更多詳細資訊。傳遞'null'
會將模擬重設為系統預設值。預設為'no-preference'
。 -
模擬網頁內透過
window.screen
可用的一致視窗螢幕大小。僅當設定 viewport 時才會使用。 -
service_workers
"allow" | "block" (選用)#是否允許網站註冊 Service Worker。預設為
'allow'
。'allow'
:可以註冊 Service Worker。'block'
:Playwright 將封鎖所有 Service Worker 的註冊。
-
storage_state
聯合[字串, pathlib.Path] | 字典 (選用)#深入瞭解儲存狀態和驗證。
使用給定的儲存狀態填入內容。此選項可用於使用透過 browser_context.storage_state() 取得的已登入資訊初始化內容。
-
如果設定為 true,則為此內容啟用嚴格選取器模式。在嚴格選取器模式中,當多個元素符合選取器時,對暗示單一目標 DOM 元素之選取器的所有操作都會擲回例外。此選項不影響任何 Locator API(Locator 始終是嚴格的)。預設為
false
。請參閱 Locator 以深入瞭解嚴格模式。 -
變更內容的時區。請參閱 ICU 的 metaZones.txt 以取得支援的時區 ID 清單。預設為系統時區。
-
在此內容中使用的特定使用者代理程式。
-
為每個頁面設定一致的視窗。預設為 1280x720 視窗。
no_viewport
停用固定視窗。深入瞭解視窗模擬。
回傳
new_page
v1.9 之前加入在新瀏覽器內容中建立新頁面。關閉此頁面也會關閉內容。
這是一個方便的 API,僅適用於單頁情境和簡短程式碼片段。生產程式碼和測試框架應明確建立 browser.new_context(),然後呼叫 browser_context.new_page(),以控制其確切生命週期。
用法
browser.new_page()
browser.new_page(**kwargs)
參數
-
是否自動下載所有附件。預設為
true
,其中接受所有下載。 -
當使用 page.goto()、page.route()、page.wait_for_url()、page.expect_request() 或 page.expect_response() 時,它會使用
URL()
建構函式來建構對應的 URL,從而考量基本 URL。預設為未設定。範例- baseURL:
https://127.0.0.1:3000
和導覽至/bar.html
會產生https://127.0.0.1:3000/bar.html
- baseURL:
https://127.0.0.1:3000/foo/
和導覽至./bar.html
會產生https://127.0.0.1:3000/foo/bar.html
- baseURL:
https://127.0.0.1:3000/foo
(不含尾部斜線)和導覽至./bar.html
會產生https://127.0.0.1:3000/bar.html
- baseURL:
-
切換繞過頁面的內容安全策略。預設為
false
。 -
client_certificates
清單[字典] (選用)加入於:1.46#-
origin
字串憑證有效的確切來源。來源包含
https
通訊協定、主機名稱和選用的連接埠。 -
certPath
聯合[字串, pathlib.Path] (選用)PEM 格式憑證檔案的路徑。
-
cert
位元組 (選用)PEM 格式憑證的直接值。
-
keyPath
聯合[字串, pathlib.Path] (選用)PEM 格式私密金鑰檔案的路徑。
-
key
位元組 (選用)PEM 格式私密金鑰的直接值。
-
pfxPath
聯合[字串, pathlib.Path] (選用)PFX 或 PKCS12 編碼的私密金鑰和憑證鏈的路徑。
-
pfx
位元組 (選用)PFX 或 PKCS12 編碼的私密金鑰和憑證鏈的直接值。
-
passphrase
字串 (選用)私密金鑰(PEM 或 PFX)的密碼。
TLS 用戶端驗證允許伺服器請求用戶端憑證並驗證它。
詳細資訊
要使用的用戶端憑證陣列。每個憑證物件都必須具有
certPath
和keyPath
、單一pfxPath
或其對應的直接值等效項(cert
和key
或pfx
)。或者,如果憑證已加密,則應提供passphrase
屬性。應提供origin
屬性,以精確比對憑證有效的請求來源。注意在 macOS 上使用 WebKit 時,存取
localhost
不會選取用戶端憑證。您可以將localhost
替換為local.playwright
,使其運作。 -
-
color_scheme
"light" | "dark" | "no-preference" | "null" (選用)#模擬 prefers-colors-scheme 媒體功能,支援的值為
'light'
和'dark'
。請參閱 page.emulate_media() 以取得更多詳細資訊。傳遞'null'
會將模擬重設為系統預設值。預設為'light'
。 -
指定裝置縮放比例(可以視為 dpr)。預設為
1
。深入瞭解模擬具有裝置縮放比例的裝置。 -
extra_http_headers
Dict[str, str] (選填)#包含要與每個請求一起傳送的其他 HTTP 標頭的物件。預設為無。
-
forced_colors
"active" | "none" | "null" (選填)#模擬
'forced-colors'
媒體功能,支援的值為'active'
、'none'
。請參閱 page.emulate_media() 以取得更多詳細資訊。傳遞'null'
會將模擬重設為系統預設值。預設為'none'
。 -
指定視窗是否支援觸控事件。預設為 false。深入瞭解行動裝置模擬。
-
-
username
字串 -
password
字串 -
origin
字串 (選用)限制在特定來源 (scheme://host:port).
-
send
"unauthorized" | "always" (選用)此選項僅適用於從對應的 APIRequestContext 傳送的請求,且不影響從瀏覽器傳送的請求。
'always'
- 具有基本驗證憑證的Authorization
標頭將與每個 API 請求一起傳送。'unauthorized
- 僅當收到具有WWW-Authenticate
標頭的 401 (未授權) 回應時,才會傳送憑證。預設為'unauthorized'
。
HTTP 驗證的憑證。如果未指定來源,則使用者名稱和密碼會在未經授權的回應時傳送至任何伺服器。
-
-
ignore_https_errors
bool (選填)#在傳送網路請求時是否忽略 HTTPS 錯誤。預設為
false
。 -
是否考量
meta viewport
標籤並啟用觸控事件。isMobile 是裝置的一部分,因此您實際上不需要手動設定它。預設為false
,且在 Firefox 中不受支援。深入瞭解行動裝置模擬。 -
java_script_enabled
bool (選填)#是否要在內容中啟用 JavaScript。預設為
true
。深入瞭解停用 JavaScript。 -
指定使用者地區設定,例如
en-GB
、de-DE
等。地區設定將影響navigator.language
值、Accept-Language
請求標頭值以及數字和日期格式規則。預設為系統預設地區設定。深入瞭解我們模擬指南中的模擬。 -
不強制執行固定視窗,允許在 Headed 模式中調整視窗大小。
-
是否模擬網路離線。預設為
false
。深入瞭解網路模擬。 -
要授予此內容中所有頁面的權限清單。請參閱 browser_context.grant_permissions() 以取得更多詳細資訊。預設為無。
-
-
server
字串用於所有請求的 Proxy。支援 HTTP 和 SOCKS Proxy,例如
http://myproxy.com:3128
或socks5://myproxy.com:3128
。簡短形式myproxy.com:3128
被視為 HTTP Proxy。 -
bypass
字串 (選用)要繞過 Proxy 的選用逗號分隔網域,例如
".com, chromium.org, .domain.com"
。 -
username
字串 (選用)如果 HTTP Proxy 需要驗證,則為要使用的選用使用者名稱。
-
password
字串 (選用)如果 HTTP Proxy 需要驗證,則為要使用的選用密碼。
要在此內容中使用的網路 Proxy 設定。預設為無。
-
-
record_har_content
"omit" | "embed" | "attach" (選填)#用於控制資源內容管理的選用設定。如果指定
omit
,則不會保存內容。如果指定attach
,則資源會另存為個別檔案,並且所有這些檔案都會與 HAR 檔案一起封存。預設為embed
,這會根據 HAR 規格將內容內嵌儲存在 HAR 檔案中。 -
record_har_mode
"full" | "minimal" (選填)#設定為
minimal
時,僅記錄從 HAR 路由所需的資訊。這會省略大小、時間、頁面、Cookie、安全性和其他類型的 HAR 資訊,這些資訊在從 HAR 重新播放時未使用。預設為full
。 -
record_har_omit_content
bool (選填)#用於控制是否從 HAR 中省略請求內容的選用設定。預設為
false
。 -
record_har_path
Union[str, pathlib.Path] (選填)#啟用將所有頁面的 HAR 記錄到檔案系統上指定的 HAR 檔案中。如果未指定,則不會記錄 HAR。請務必呼叫 browser_context.close() 以儲存 HAR。
-
record_video_dir
Union[str, pathlib.Path] (選填)#啟用將所有頁面的影片記錄到指定的目錄中。如果未指定,則不會記錄影片。請務必呼叫 browser_context.close() 以儲存影片。
-
記錄影片的尺寸。如果未指定,則大小將等於縮放以符合 800x800 的
viewport
。如果未明確設定viewport
,則影片大小預設為 800x450。如有必要,每個頁面的實際圖片將縮小以符合指定的尺寸。 -
reduced_motion
"reduce" | "no-preference" | "null" (選填)#模擬
'prefers-reduced-motion'
媒體功能,支援的值為'reduce'
、'no-preference'
。請參閱 page.emulate_media() 以取得更多詳細資訊。傳遞'null'
會將模擬重設為系統預設值。預設為'no-preference'
。 -
模擬網頁內透過
window.screen
可用的一致視窗螢幕尺寸。僅在設定 viewport 時使用。 -
service_workers
"allow" | "block" (選填)#是否允許網站註冊 Service Worker。預設為
'allow'
。'allow'
:可以註冊 Service Worker。'block'
:Playwright 將封鎖所有 Service Worker 的註冊。
-
storage_state
Union[str, pathlib.Path] | Dict (選填)#深入瞭解儲存狀態和驗證。
使用給定的儲存狀態填入內容。此選項可用於使用透過 browser_context.storage_state() 取得的已登入資訊初始化內容。
-
如果設定為 true,則為此內容啟用嚴格選取器模式。在嚴格選取器模式中,當多個元素符合選取器時,對暗示單一目標 DOM 元素之選取器的所有操作都會擲回例外。此選項不影響任何 Locator API(Locator 始終是嚴格的)。預設為
false
。請參閱 Locator 以深入瞭解嚴格模式。 -
變更內容的時區。請參閱 ICU 的 metaZones.txt 以取得支援的時區 ID 清單。預設為系統時區。
-
在此內容中使用的特定使用者代理程式。
-
viewport
NoneType | Dict (選填)#為每個頁面設定一致的視窗。預設為 1280x720 視窗。
no_viewport
停用固定視窗。深入瞭解視窗模擬。
回傳
start_tracing
加入於:v1.11此 API 控制 Chromium Tracing,這是一個低階的 chromium 特定偵錯工具。控制 Playwright Tracing 的 API 可以在這裡找到。
您可以使用 browser.start_tracing() 和 browser.stop_tracing() 來建立追蹤檔案,該檔案可以在 Chrome DevTools 效能面板中開啟。
用法
- 同步
- 非同步
browser.start_tracing(page, path="trace.json")
page.goto("https://www.google.com")
browser.stop_tracing()
await browser.start_tracing(page, path="trace.json")
await page.goto("https://www.google.com")
await browser.stop_tracing()
參數
-
選填,如果指定,追蹤會包含給定頁面的螢幕截圖。
-
指定要使用的自訂類別,而不是預設類別。
-
path
Union[str, pathlib.Path] (選填)#要將追蹤檔案寫入的路徑。
-
在追蹤中擷取螢幕截圖。
回傳
stop_tracing
加入於:v1.11此 API 控制 Chromium Tracing,這是一個低階的 chromium 特定偵錯工具。控制 Playwright Tracing 的 API 可以在這裡找到。
傳回包含追蹤資料的緩衝區。
用法
browser.stop_tracing()
回傳
屬性
browser_type
新增於:v1.23取得瀏覽器所屬的瀏覽器類型(chromium、firefox 或 webkit)。
用法
browser.browser_type
回傳
contexts
v1.9 之前加入傳回所有開啟的瀏覽器內容的陣列。在全新建立的瀏覽器中,這將傳回零個瀏覽器內容。
用法
- 同步
- 非同步
browser = pw.webkit.launch()
print(len(browser.contexts)) # prints `0`
context = browser.new_context()
print(len(browser.contexts)) # prints `1`
browser = await pw.webkit.launch()
print(len(browser.contexts)) # prints `0`
context = await browser.new_context()
print(len(browser.contexts)) # prints `1`
回傳
is_connected
v1.9 之前加入表示瀏覽器已連線。
用法
browser.is_connected()
回傳
version
v1.9 之前加入傳回瀏覽器版本。
用法
browser.version
回傳
事件
on("disconnected")
v1.9 之前加入當瀏覽器與瀏覽器應用程式斷線時發出。發生這種情況可能是因為以下原因之一
- 瀏覽器應用程式已關閉或崩潰。
- 已呼叫 browser.close() 方法。
用法
browser.on("disconnected", handler)
事件資料