瀏覽器
瀏覽器是透過 BrowserType.LaunchAsync() 建立的。Browser 用於建立 Page 的範例
using Microsoft.Playwright;
using var playwright = await Playwright.CreateAsync();
var firefox = playwright.Firefox;
var browser = await firefox.LaunchAsync(new() { Headless = false });
var page = await browser.NewPageAsync();
await page.GotoAsync("https://www.bing.com");
await browser.CloseAsync();
方法
BrowserType
加入於:v1.23取得瀏覽器所屬的瀏覽器類型 (chromium、firefox 或 webkit)。
用法
Browser.BrowserType
回傳
CloseAsync
於 v1.9 之前加入如果此瀏覽器是使用 BrowserType.LaunchAsync() 取得,則關閉瀏覽器及其所有頁面 (如果有的話)。
如果此瀏覽器已連線,則清除屬於此瀏覽器的所有已建立內容,並與瀏覽器伺服器中斷連線。
這與強制結束瀏覽器類似。若要優雅地關閉頁面並確保收到頁面關閉事件,請在您先前使用 Browser.NewContextAsync() 明確建立的任何 BrowserContext 執行個體上呼叫 BrowserContext.CloseAsync(),然後再呼叫 Browser.CloseAsync()。
Browser 物件本身會被視為已處置,且無法再使用。
用法
await Browser.CloseAsync(options);
引數
回傳
內容
於 v1.9 之前加入傳回所有開啟的瀏覽器內容的陣列。在新建立的瀏覽器中,這將傳回零個瀏覽器內容。
用法
using var playwright = await Playwright.CreateAsync();
var browser = await playwright.Webkit.LaunchAsync();
System.Console.WriteLine(browser.Contexts.Count); // prints "0"
var context = await browser.NewContextAsync();
System.Console.WriteLine(browser.Contexts.Count); // prints "1"
回傳
IsConnected
於 v1.9 之前加入指示瀏覽器已連線。
用法
Browser.IsConnected
回傳
NewBrowserCDPSessionAsync
加入於:v1.11CDP 工作階段僅在 Chromium 基礎的瀏覽器上受到支援。
傳回新建立的瀏覽器工作階段。
用法
await Browser.NewBrowserCDPSessionAsync();
回傳
NewContextAsync
於 v1.9 之前加入建立新的瀏覽器內容。它不會與其他瀏覽器內容共用 Cookie/快取。
如果直接使用此方法建立 BrowserContext,最佳做法是在程式碼完成 BrowserContext 之後,以及在呼叫 Browser.CloseAsync() 之前,透過 BrowserContext.CloseAsync() 明確關閉傳回的內容。這將確保 context
優雅地關閉,並且任何成品 (例如 HAR 和影片) 都會完整刷新並儲存。
用法
using var playwright = await Playwright.CreateAsync();
var browser = await playwright.Firefox.LaunchAsync();
// Create a new incognito browser context.
var context = await browser.NewContextAsync();
// Create a new page in a pristine context.
var page = await context.NewPageAsync(); ;
await page.GotoAsync("https://www.bing.com");
// Gracefully close up everything
await context.CloseAsync();
await browser.CloseAsync();
引數
options
BrowserNewContextOptions?
(選用)-
是否自動下載所有附件。預設為
true
,表示接受所有下載。 -
當使用 Page.GotoAsync()、Page.RouteAsync()、Page.WaitForURLAsync()、Page.RunAndWaitForRequestAsync() 或 Page.RunAndWaitForResponseAsync() 時,它會透過使用
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:
-
切換是否略過頁面的內容安全策略 (Content-Security-Policy)。預設為
false
。 -
ClientCertificates
IEnumerable?<ClientCertificates> (選用)加入於:1.46#-
Origin
string憑證有效的確切來源。來源包含
https
通訊協定、主機名稱和選用的連接埠。 -
CertPath
string? (選用)PEM 格式憑證檔案的路徑。
-
Cert
byte[]? (選用)PEM 格式憑證的直接值。
-
KeyPath
string? (選用)PEM 格式私密金鑰檔案的路徑。
-
Key
byte[]? (選用)PEM 格式私密金鑰的直接值。
-
PfxPath
string? (選用)PFX 或 PKCS12 編碼私密金鑰和憑證鏈的路徑。
-
Pfx
byte[]? (選用)PFX 或 PKCS12 編碼私密金鑰和憑證鏈的直接值。
-
Passphrase
string? (選用)私密金鑰 (PEM 或 PFX) 的密碼。
TLS 用戶端驗證允許伺服器要求用戶端憑證並驗證它。
詳細資訊
要使用的用戶端憑證陣列。每個憑證物件都必須同時具有
certPath
和keyPath
、單一pfxPath
,或其對應的直接值等效項 (cert
和key
,或pfx
)。或者,如果憑證已加密,則應提供passphrase
屬性。應提供origin
屬性,以精確符合憑證有效的請求來源。注意在 macOS 上使用 WebKit 時,存取
localhost
不會選取用戶端憑證。您可以透過將localhost
取代為local.playwright
來使其運作。 -
-
ColorScheme
enum ColorScheme { Light, Dark, NoPreference, Null }?
(選用)#模擬 prefers-colors-scheme 媒體功能,支援的值為
'light'
和'dark'
。如需更多詳細資訊,請參閱 Page.EmulateMediaAsync()。傳遞'null'
會將模擬重設為系統預設值。預設為'light'
。 -
DeviceScaleFactor
[float]? (選用)#指定裝置縮放比例 (可以視為 dpr)。預設為
1
。深入瞭解使用裝置縮放比例模擬裝置。 -
ExtraHTTPHeaders
IDictionary?<string, string> (選用)#包含要隨每個請求傳送的其他 HTTP 標頭的物件。預設為無。
-
ForcedColors
enum ForcedColors { Active, None, Null }?
(選用)#模擬
'forced-colors'
媒體功能,支援的值為'active'
、'none'
。如需更多詳細資訊,請參閱 Page.EmulateMediaAsync()。傳遞'null'
會將模擬重設為系統預設值。預設為'none'
。 -
Geolocation
Geolocation? (選用)#-
Latitude
[float]緯度介於 -90 和 90 之間。
-
Longitude
[float]經度介於 -180 和 180 之間。
-
Accuracy
[float]? (選用)非負數精確度值。預設為
0
。
-
-
指定視窗是否支援觸控事件。預設為 false。深入瞭解行動裝置模擬。
-
HttpCredentials
HttpCredentials? (選用)#-
Username
string -
Password
string -
Origin
string? (選用)限制在特定來源上傳送 http 認證 (scheme://host:port).
-
Send
enum HttpCredentialsSend { 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
請求標頭值以及數字和日期格式規則。預設為系統預設地區設定。在我們的模擬指南中深入瞭解模擬。 -
是否模擬網路離線。預設為
false
。深入瞭解網路模擬。 -
Permissions
IEnumerable?<string> (選用)#要授與此內容中所有頁面的權限清單。如需更多詳細資訊,請參閱 BrowserContext.GrantPermissionsAsync()。預設為無。
-
Proxy
Proxy? (選用)#-
Server
string要用於所有請求的 Proxy。支援 HTTP 和 SOCKS Proxy,例如
http://myproxy.com:3128
或socks5://myproxy.com:3128
。簡短格式myproxy.com:3128
會被視為 HTTP Proxy。 -
Bypass
string? (選用)選用的逗號分隔網域,以略過 Proxy,例如
".com, chromium.org, .domain.com"
。 -
Username
string? (選用)如果 HTTP Proxy 需要驗證,則為選用的使用者名稱。
-
Password
string? (選用)如果 HTTP Proxy 需要驗證,則為選用的密碼。
要與此內容搭配使用的網路 Proxy 設定。預設為無。
-
-
RecordHarContent
enum HarContentPolicy { Omit, Embed, Attach }?
(選用)#用於控制資源內容管理的選用設定。如果指定
omit
,則不會保存內容。如果指定attach
,則資源會保存為個別檔案,並且所有這些檔案都會與 HAR 檔案一起封存。預設為embed
,根據 HAR 規格內嵌儲存內容在 HAR 檔案中。 -
RecordHarMode
enum HarMode { Full, Minimal }?
(選用)#當設定為
minimal
時,僅記錄從 HAR 路由所需的資訊。這會省略大小、時間、頁面、Cookie、安全性和其他類型的 HAR 資訊,這些資訊在從 HAR 重新播放時不會使用。預設為full
。 -
RecordHarOmitContent
bool? (選用)#用於控制是否從 HAR 中省略請求內容的選用設定。預設為
false
。 -
啟用將所有頁面的 HAR 記錄到檔案系統上指定的 HAR 檔案中。如果未指定,則不會記錄 HAR。請務必呼叫 BrowserContext.CloseAsync() 以儲存 HAR。
-
RecordHarUrlFilter|RecordHarUrlFilterRegex
string? | Regex? (選用)# -
啟用將所有頁面的影片記錄到指定的目錄中。如果未指定,則不會記錄影片。請務必呼叫 BrowserContext.CloseAsync() 以儲存影片。
-
RecordVideoSize
RecordVideoSize? (選用)#記錄影片的尺寸。如果未指定,尺寸將等於縮小以符合 800x800 的
viewport
。如果未明確設定viewport
,則影片尺寸預設為 800x450。如有必要,每個頁面的實際圖片將縮小以符合指定的尺寸。 -
ReducedMotion
enum ReducedMotion { Reduce, NoPreference, Null }?
(選用)#模擬
'prefers-reduced-motion'
媒體功能,支援的值為'reduce'
、'no-preference'
。如需更多詳細資訊,請參閱 Page.EmulateMediaAsync()。傳遞'null'
會將模擬重設為系統預設值。預設為'no-preference'
。 -
ScreenSize
ScreenSize? (選用)#模擬透過
window.screen
在網頁內可用的穩定視窗螢幕尺寸。僅在設定 ViewportSize 時使用。 -
ServiceWorkers
enum ServiceWorkerPolicy { Allow, Block }?
(選用)#是否允許網站註冊 Service Worker。預設為
'allow'
。'allow'
: 可以註冊 Service Worker。'block'
: Playwright 將封鎖所有 Service Worker 的註冊。
-
使用指定的儲存狀態填入內容。此選項可用於使用透過 BrowserContext.StorageStateAsync() 取得的登入資訊初始化內容。
-
StorageStatePath
string? (選用)加入於:v1.9#使用指定的儲存狀態填入內容。此選項可用於使用透過 BrowserContext.StorageStateAsync() 取得的登入資訊初始化內容。儲存狀態已儲存檔案的路徑。
-
如果設定為 true,則為此內容啟用嚴格選取器模式。在嚴格選取器模式中,對選取器的所有操作 (表示單一目標 DOM 元素) 在多個元素符合選取器時都會擲回例外狀況。此選項不會影響任何 Locator API (Locator 一律是嚴格的)。預設為
false
。請參閱 Locator 以深入瞭解嚴格模式。 -
變更內容的時區。如需支援的時區 ID 清單,請參閱 ICU 的 metaZones.txt。預設為系統時區。
-
在此內容中使用的特定使用者代理程式。
-
ViewportSize
ViewportSize? (選用)#模擬每個頁面的一致視窗。預設為 1280x720 視窗。使用
ViewportSize.NoViewport
停用一致視窗模擬。深入瞭解視窗模擬。注意ViewportSize.NoViewport
值會選擇退出預設預設值,使視窗取決於作業系統定義的主機視窗大小。這會使測試的執行變成非決定性。
-
回傳
NewPageAsync
於 v1.9 之前加入在新瀏覽器內容中建立新頁面。關閉此頁面也會關閉內容。
這是一個便利的 API,僅適用於單頁案例和簡短程式碼片段。生產程式碼和測試架構應明確建立 Browser.NewContextAsync(),然後接著 BrowserContext.NewPageAsync(),以控制其確切生命週期。
用法
await Browser.NewPageAsync(options);
引數
options
BrowserNewPageOptions?
(選用)-
是否自動下載所有附件。預設為
true
,表示接受所有下載。 -
當使用 Page.GotoAsync()、Page.RouteAsync()、Page.WaitForURLAsync()、Page.RunAndWaitForRequestAsync() 或 Page.RunAndWaitForResponseAsync() 時,它會透過使用
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:
-
切換是否略過頁面的內容安全策略 (Content-Security-Policy)。預設為
false
。 -
ClientCertificates
IEnumerable?<ClientCertificates> (選用)加入於:1.46#-
Origin
string憑證有效的確切來源。來源包含
https
通訊協定、主機名稱和選用的連接埠。 -
CertPath
string? (選用)PEM 格式憑證檔案的路徑。
-
Cert
byte[]? (選用)PEM 格式憑證的直接值。
-
KeyPath
string? (選用)PEM 格式私密金鑰檔案的路徑。
-
Key
byte[]? (選用)PEM 格式私密金鑰的直接值。
-
PfxPath
string? (選用)PFX 或 PKCS12 編碼私密金鑰和憑證鏈的路徑。
-
Pfx
byte[]? (選用)PFX 或 PKCS12 編碼私密金鑰和憑證鏈的直接值。
-
Passphrase
string? (選用)私密金鑰 (PEM 或 PFX) 的密碼。
TLS 用戶端驗證允許伺服器要求用戶端憑證並驗證它。
詳細資訊
要使用的用戶端憑證陣列。每個憑證物件都必須同時具有
certPath
和keyPath
、單一pfxPath
,或其對應的直接值等效項 (cert
和key
,或pfx
)。或者,如果憑證已加密,則應提供passphrase
屬性。應提供origin
屬性,以精確符合憑證有效的請求來源。注意在 macOS 上使用 WebKit 時,存取
localhost
不會選取用戶端憑證。您可以透過將localhost
取代為local.playwright
來使其運作。 -
-
ColorScheme
enum ColorScheme { Light, Dark, NoPreference, Null }?
(選用)#模擬 prefers-colors-scheme 媒體功能,支援的值為
'light'
和'dark'
。如需更多詳細資訊,請參閱 Page.EmulateMediaAsync()。傳遞'null'
會將模擬重設為系統預設值。預設為'light'
。 -
DeviceScaleFactor
[float]? (選用)#指定裝置縮放比例 (可以視為 dpr)。預設為
1
。深入瞭解使用裝置縮放比例模擬裝置。 -
ExtraHTTPHeaders
IDictionary?<string, string> (選用)#包含要隨每個請求傳送的其他 HTTP 標頭的物件。預設為無。
-
ForcedColors
enum ForcedColors { Active, None, Null }?
(選用)#模擬
'forced-colors'
媒體功能,支援的值為'active'
、'none'
。如需更多詳細資訊,請參閱 Page.EmulateMediaAsync()。傳遞'null'
會將模擬重設為系統預設值。預設為'none'
。 -
Geolocation
Geolocation? (選用)#-
Latitude
[float]緯度介於 -90 和 90 之間。
-
Longitude
[float]經度介於 -180 和 180 之間。
-
Accuracy
[float]? (選用)非負數精確度值。預設為
0
。
-
-
指定視窗是否支援觸控事件。預設為 false。深入瞭解行動裝置模擬。
-
HttpCredentials
HttpCredentials? (選用)#-
Username
string -
Password
string -
Origin
string? (選用)限制在特定來源上傳送 http 認證 (scheme://host:port).
-
Send
enum HttpCredentialsSend { 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
請求標頭值以及數字和日期格式規則。預設為系統預設地區設定。在我們的模擬指南中深入瞭解模擬。 -
是否模擬網路離線。預設為
false
。深入瞭解網路模擬。 -
Permissions
IEnumerable?<string> (選用)#要授與此內容中所有頁面的權限清單。如需更多詳細資訊,請參閱 BrowserContext.GrantPermissionsAsync()。預設為無。
-
Proxy
Proxy? (選用)#-
Server
string要用於所有請求的 Proxy。支援 HTTP 和 SOCKS Proxy,例如
http://myproxy.com:3128
或socks5://myproxy.com:3128
。簡短格式myproxy.com:3128
會被視為 HTTP Proxy。 -
Bypass
string? (選用)選用的逗號分隔網域,以略過 Proxy,例如
".com, chromium.org, .domain.com"
。 -
Username
string? (選用)如果 HTTP Proxy 需要驗證,則為選用的使用者名稱。
-
Password
string? (選用)如果 HTTP Proxy 需要驗證,則為選用的密碼。
要與此內容搭配使用的網路 Proxy 設定。預設為無。
-
-
RecordHarContent
enum HarContentPolicy { Omit, Embed, Attach }?
(選用)#用於控制資源內容管理的選用設定。如果指定
omit
,則不會保存內容。如果指定attach
,則資源會保存為個別檔案,並且所有這些檔案都會與 HAR 檔案一起封存。預設為embed
,根據 HAR 規格內嵌儲存內容在 HAR 檔案中。 -
RecordHarMode
enum HarMode { Full, Minimal }?
(選用)#當設定為
minimal
時,僅記錄從 HAR 路由所需的資訊。這會省略大小、時間、頁面、Cookie、安全性和其他類型的 HAR 資訊,這些資訊在從 HAR 重新播放時不會使用。預設為full
。 -
RecordHarOmitContent
bool? (選用)#用於控制是否從 HAR 中省略請求內容的選用設定。預設為
false
。 -
啟用將所有頁面的 HAR 記錄到檔案系統上指定的 HAR 檔案中。如果未指定,則不會記錄 HAR。請務必呼叫 BrowserContext.CloseAsync() 以儲存 HAR。
-
RecordHarUrlFilter|RecordHarUrlFilterRegex
string? | Regex? (選用)# -
啟用將所有頁面的影片記錄到指定的目錄中。如果未指定,則不會記錄影片。請務必呼叫 BrowserContext.CloseAsync() 以儲存影片。
-
RecordVideoSize
RecordVideoSize? (選用)#記錄影片的尺寸。如果未指定,尺寸將等於縮小以符合 800x800 的
viewport
。如果未明確設定viewport
,則影片尺寸預設為 800x450。如有必要,每個頁面的實際圖片將縮小以符合指定的尺寸。 -
ReducedMotion
enum ReducedMotion { Reduce, NoPreference, Null }?
(選用)#模擬
'prefers-reduced-motion'
媒體功能,支援的值為'reduce'
、'no-preference'
。如需更多詳細資訊,請參閱 Page.EmulateMediaAsync()。傳遞'null'
會將模擬重設為系統預設值。預設為'no-preference'
。 -
ScreenSize
螢幕尺寸? (可選)#模擬網頁內透過
window.screen
可用的一致視窗螢幕尺寸。僅在設定 ViewportSize 時使用。 -
ServiceWorkers
enum ServiceWorkerPolicy { Allow, Block }?
(可選)#是否允許網站註冊 Service Worker。預設為
'allow'
。'allow'
: 可以註冊 Service Worker。'block'
: Playwright 將封鎖所有 Service Worker 的註冊。
-
使用指定的儲存狀態填入內容。此選項可用於使用透過 BrowserContext.StorageStateAsync() 取得的登入資訊初始化內容。
-
StorageStatePath
string? (選用)加入於:v1.9#使用指定的儲存狀態填入內容。此選項可用於使用透過 BrowserContext.StorageStateAsync() 取得的登入資訊初始化內容。儲存狀態已儲存檔案的路徑。
-
如果設定為 true,則為此內容啟用嚴格選取器模式。在嚴格選取器模式中,對選取器的所有操作 (表示單一目標 DOM 元素) 在多個元素符合選取器時都會擲回例外狀況。此選項不會影響任何 Locator API (Locator 一律是嚴格的)。預設為
false
。請參閱 Locator 以深入瞭解嚴格模式。 -
變更內容的時區。如需支援的時區 ID 清單,請參閱 ICU 的 metaZones.txt。預設為系統時區。
-
在此內容中使用的特定使用者代理程式。
-
ViewportSize
ViewportSize? (可選)#模擬每個頁面的一致視窗。預設為 1280x720 視窗。使用
ViewportSize.NoViewport
停用一致視窗模擬。深入瞭解視窗模擬。注意ViewportSize.NoViewport
值會選擇退出預設預設值,使視窗取決於作業系統定義的主機視窗大小。這會使測試的執行變成非決定性。
-
回傳
版本
於 v1.9 之前加入傳回瀏覽器版本。
用法
Browser.Version
回傳
事件
event Disconnected
於 v1.9 之前加入當瀏覽器與瀏覽器應用程式斷線時發出。這可能因為下列原因之一而發生
- 瀏覽器應用程式已關閉或崩潰。
- 已呼叫 Browser.CloseAsync() 方法。
用法
Browser.Disconnected += async (_, browser) => {};
事件資料