瀏覽器
瀏覽器是透過 BrowserType.launch() 建立。 使用 瀏覽器 建立 Page 的範例
import com.microsoft.playwright.*;
public class Example {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
BrowserType firefox = playwright.firefox();
Browser browser = firefox.launch();
Page page = browser.newPage();
page.navigate("https://example.com");
browser.close();
}
}
}
方法
browserType
加入於: v1.23取得瀏覽器所屬的瀏覽器類型 (chromium, firefox 或 webkit)。
用法
Browser.browserType();
回傳
close
加入於 v1.9 之前如果此瀏覽器是使用 BrowserType.launch() 取得,則關閉瀏覽器及其所有頁面 (如果有的話)。
如果此瀏覽器是連線到的,則清除屬於此瀏覽器的所有已建立的內容,並與瀏覽器伺服器斷線。
這與強制結束瀏覽器類似。 若要優雅地關閉頁面並確保您收到頁面關閉事件,請在您先前使用 Browser.newContext() 明確建立的任何 BrowserContext 實例上呼叫 BrowserContext.close(),然後再呼叫 Browser.close()。
Browser 物件本身被視為已處置,無法再使用。
用法
Browser.close();
Browser.close(options);
引數
回傳
contexts
加入於 v1.9 之前回傳所有開啟的瀏覽器內容的陣列。 在新建立的瀏覽器中,這將回傳零個瀏覽器內容。
用法
Browser browser = pw.webkit().launch();
System.out.println(browser.contexts().size()); // prints "0"
BrowserContext context = browser.newContext();
System.out.println(browser.contexts().size()); // prints "1"
回傳
isConnected
加入於 v1.9 之前指示瀏覽器是否已連線。
用法
Browser.isConnected();
回傳
newBrowserCDPSession
加入於: v1.11CDP 工作階段僅在基於 Chromium 的瀏覽器上受支援。
回傳新建立的瀏覽器工作階段。
用法
Browser.newBrowserCDPSession();
回傳
newContext
加入於 v1.9 之前建立新的瀏覽器內容。 它不會與其他瀏覽器內容共用 Cookie/快取。
如果直接使用此方法建立 BrowserContext,最佳實務是在您的程式碼完成 BrowserContext 之後,以及在呼叫 Browser.close() 之前,透過 BrowserContext.close() 明確關閉回傳的內容。 這將確保 context
優雅地關閉,並且任何產生的檔案 (例如 HAR 和影片) 都會完全刷新並儲存。
用法
Browser browser = playwright.firefox().launch(); // Or 'chromium' or 'webkit'.
// Create a new incognito browser context.
BrowserContext context = browser.newContext();
// Create a new page in a pristine context.
Page page = context.newPage();
page.navigate("https://example.com");
// Graceful close up everything
context.close();
browser.close();
引數
options
Browser.NewContextOptions
(選用)-
setAcceptDownloads
boolean (選用)#是否自動下載所有附件。 預設為
true
,表示接受所有下載。 -
當使用 Page.navigate()、Page.route()、Page.waitForURL()、Page.waitForRequest() 或 Page.waitForResponse() 時,它會使用
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
。 -
setClientCertificates
List<ClientCertificates> (選用)加入於: 1.46#-
setOrigin
String憑證有效的確切來源。 來源包含
https
通訊協定、主機名稱以及選用的連接埠。 -
setCertPath
Path (選用)PEM 格式憑證檔案的路徑。
-
setCert
byte[] (選用)PEM 格式憑證的直接值。
-
setKeyPath
Path (選用)PEM 格式私密金鑰檔案的路徑。
-
setKey
byte[] (選用)PEM 格式私密金鑰的直接值。
-
setPfxPath
Path (選用)PFX 或 PKCS12 編碼的私密金鑰和憑證鏈檔案的路徑。
-
setPfx
byte[] (選用)PFX 或 PKCS12 編碼的私密金鑰和憑證鏈的直接值。
-
setPassphrase
String (選用)私密金鑰 (PEM 或 PFX) 的密碼。
TLS 用戶端驗證允許伺服器要求用戶端憑證並驗證它。
詳細資訊
要使用的用戶端憑證陣列。 每個憑證物件都必須同時具有
certPath
和keyPath
、單一pfxPath
或其對應的直接值等效項 (cert
和key
或pfx
)。 如果憑證已加密,則應選擇性地提供passphrase
屬性。origin
屬性應與憑證有效的要求來源完全符合。注意在 macOS 上使用 WebKit 時,存取
localhost
不會挑選用戶端憑證。 您可以將localhost
替換為local.playwright
,使其運作。 -
-
setColorScheme
null |enum ColorScheme { LIGHT, DARK, NO_PREFERENCE }
(選用)#模擬 prefers-colors-scheme 媒體功能,支援的值為
'light'
和'dark'
。 請參閱 Page.emulateMedia() 以取得更多詳細資訊。 傳遞null
會將模擬重設為系統預設值。 預設為'light'
。 -
setDeviceScaleFactor
double (選用)#指定裝置縮放比例 (可以視為 dpr)。 預設為
1
。 深入瞭解 模擬具有裝置縮放比例的裝置。 -
setExtraHTTPHeaders
Map<String, String> (選用)#包含要隨每個要求傳送的其他 HTTP 標頭的物件。 預設為無。
-
setForcedColors
null |enum ForcedColors { ACTIVE, NONE }
(選用)#模擬
'forced-colors'
媒體功能,支援的值為'active'
、'none'
。 請參閱 Page.emulateMedia() 以取得更多詳細資訊。 傳遞null
會將模擬重設為系統預設值。 預設為'none'
。 -
setGeolocation
Geolocation (選用)# -
指定視窗是否支援觸控事件。 預設為 false。 深入瞭解 行動裝置模擬。
-
setHttpCredentials
HttpCredentials (選用)#-
setUsername
String -
setPassword
String -
setOrigin
String (選用)限制在特定來源上傳送 http 認證 (scheme://host:port).
-
setSend
enum HttpCredentialsSend { UNAUTHORIZED, ALWAYS }
(選用)此選項僅適用於從對應的 APIRequestContext 傳送的要求,並且不影響從瀏覽器傳送的要求。
'always'
- 具有基本驗證認證的Authorization
標頭將與每個 API 要求一起傳送。'unauthorized
- 僅當收到具有WWW-Authenticate
標頭的 401 (未授權) 回應時,才會傳送認證。 預設為'unauthorized'
。
HTTP 驗證的認證。 如果未指定來源,則使用者名稱和密碼會在未經授權的回應時傳送至任何伺服器。
-
-
setIgnoreHTTPSErrors
boolean (選用)#在傳送網路要求時是否忽略 HTTPS 錯誤。 預設為
false
。 -
是否考量
meta viewport
標籤並啟用觸控事件。 isMobile 是裝置的一部分,因此您實際上不需要手動設定它。 預設為false
,且在 Firefox 中不受支援。 深入瞭解 行動裝置模擬。 -
setJavaScriptEnabled
boolean (選用)#是否要在內容中啟用 JavaScript。 預設為
true
。 深入瞭解 停用 JavaScript。 -
指定使用者地區設定,例如
en-GB
、de-DE
等。地區設定將影響navigator.language
值、Accept-Language
要求標頭值以及數字和日期格式規則。 預設為系統預設地區設定。 深入瞭解我們的 模擬指南中的模擬。 -
是否模擬網路離線。 預設為
false
。 深入瞭解 網路模擬。 -
setPermissions
List<String> (選用)#要授與此內容中所有頁面的權限清單。 請參閱 BrowserContext.grantPermissions() 以取得更多詳細資訊。 預設為無。
-
setProxy
Proxy (選用)#-
setServer
String要用於所有要求的 Proxy。 支援 HTTP 和 SOCKS Proxy,例如
http://myproxy.com:3128
或socks5://myproxy.com:3128
。 簡短格式myproxy.com:3128
被視為 HTTP Proxy。 -
setBypass
String (選用)選用的逗號分隔網域以繞過 Proxy,例如
".com, chromium.org, .domain.com"
。 -
setUsername
String (選用)如果 HTTP Proxy 需要驗證,則為選用的使用者名稱。
-
setPassword
String (選用)如果 HTTP Proxy 需要驗證,則為選用的密碼。
要與此內容搭配使用的網路 Proxy 設定。 預設為無。
-
-
setRecordHarContent
enum HarContentPolicy { OMIT, EMBED, ATTACH }
(選用)#用於控制資源內容管理的選用設定。 如果指定
omit
,則不會保存內容。 如果指定attach
,則資源會保存為個別檔案,並且所有這些檔案都會與 HAR 檔案一起封存。 預設為embed
,這會根據 HAR 規格將內容內嵌儲存在 HAR 檔案中。 -
setRecordHarMode
enum HarMode { FULL, MINIMAL }
(選用)#設定為
minimal
時,僅記錄從 HAR 路由所需的資訊。 這會省略大小、計時、頁面、Cookie、安全性和其他類型的 HAR 資訊,這些資訊在從 HAR 重新播放時不會使用。 預設為full
。 -
setRecordHarOmitContent
boolean (選用)#用於控制是否從 HAR 中省略要求內容的選用設定。 預設為
false
。 -
啟用將所有頁面的 HAR 記錄到檔案系統上指定的 HAR 檔案中。 如果未指定,則不會記錄 HAR。 請務必呼叫 BrowserContext.close() 以儲存 HAR。
-
啟用將所有頁面的影片記錄到指定的目錄中。 如果未指定,則不會記錄影片。 請務必呼叫 BrowserContext.close() 以儲存影片。
-
setRecordVideoSize
RecordVideoSize (選用)#記錄影片的尺寸。 如果未指定,則大小將等於縮小以符合 800x800 的
viewport
。 如果未明確設定viewport
,則影片大小預設為 800x450。 如有必要,每個頁面的實際圖片都會縮小以符合指定的大小。 -
setReducedMotion
null |enum ReducedMotion { REDUCE, NO_PREFERENCE }
(選用)#模擬
'prefers-reduced-motion'
媒體功能,支援的值為'reduce'
、'no-preference'
。 請參閱 Page.emulateMedia() 以取得更多詳細資訊。 傳遞null
會將模擬重設為系統預設值。 預設為'no-preference'
。 -
setScreenSize
ScreenSize (選用)#模擬透過
window.screen
在網頁內可用的視窗螢幕大小一致。 僅當設定 setViewportSize 時使用。 -
setServiceWorkers
enum ServiceWorkerPolicy { ALLOW, BLOCK }
(選用)#是否允許網站註冊 Service Worker。 預設為
'allow'
。'allow'
: 可以註冊 Service Worker。'block'
: Playwright 將封鎖所有 Service Worker 的註冊。
-
使用給定的儲存狀態填入內容。 此選項可用於使用透過 BrowserContext.storageState() 取得的已登入資訊初始化內容。
-
setStorageStatePath
Path (選用)加入於: v1.9#使用給定的儲存狀態填入內容。 此選項可用於使用透過 BrowserContext.storageState() 取得的已登入資訊初始化內容。 儲存狀態檔案的路徑。
-
setStrictSelectors
boolean (選用)#如果設定為 true,則為此內容啟用嚴格選取器模式。 在嚴格選取器模式下,對選取器執行所有暗示單一目標 DOM 元素的作業,當有多個元素符合選取器時,將會擲回例外。 此選項不會影響任何 Locator API (Locator 永遠是嚴格的)。 預設為
false
。 請參閱 Locator 以深入瞭解嚴格模式。 -
變更內容的時區。 請參閱 ICU 的 metaZones.txt 以取得支援的時區 ID 清單。 預設為系統時區。
-
在此內容中使用的特定使用者代理程式。
-
setViewportSize
null | ViewportSize (選用)#為每個頁面模擬一致的視窗。 預設為 1280x720 視窗。 使用
null
停用一致的視窗模擬。 深入瞭解 視窗模擬。注意null
值會選擇退出預設預設值,使視窗取決於作業系統定義的主機視窗大小。 這會使測試的執行具有不確定性。
-
回傳
newPage
加入於 v1.9 之前在新瀏覽器內容中建立新頁面。 關閉此頁面也會關閉內容。
這是一個方便的 API,僅應用於單頁情境和簡短程式碼片段。 生產程式碼和測試架構應明確建立 Browser.newContext(),然後建立 BrowserContext.newPage(),以控制其確切的生命週期。
用法
Browser.newPage();
Browser.newPage(options);
引數
options
Browser.NewPageOptions
(選填)-
setAcceptDownloads
boolean (選填)#是否自動下載所有附件。 預設為
true
,表示接受所有下載。 -
當使用 Page.navigate()、Page.route()、Page.waitForURL()、Page.waitForRequest() 或 Page.waitForResponse() 時,它會使用
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
。 -
setClientCertificates
List<ClientCertificates> (選用)加入於: 1.46#-
setOrigin
String憑證有效的確切來源。 來源包含
https
通訊協定、主機名稱以及選用的連接埠。 -
setCertPath
Path (選用)PEM 格式憑證檔案的路徑。
-
setCert
byte[] (選用)PEM 格式憑證的直接值。
-
setKeyPath
Path (選用)PEM 格式私密金鑰檔案的路徑。
-
setKey
byte[] (選用)PEM 格式私密金鑰的直接值。
-
setPfxPath
Path (選用)PFX 或 PKCS12 編碼的私密金鑰和憑證鏈檔案的路徑。
-
setPfx
byte[] (選用)PFX 或 PKCS12 編碼的私密金鑰和憑證鏈的直接值。
-
setPassphrase
String (選用)私密金鑰 (PEM 或 PFX) 的密碼。
TLS 用戶端驗證允許伺服器要求用戶端憑證並驗證它。
詳細資訊
要使用的用戶端憑證陣列。 每個憑證物件都必須同時具有
certPath
和keyPath
、單一pfxPath
或其對應的直接值等效項 (cert
和key
或pfx
)。 如果憑證已加密,則應選擇性地提供passphrase
屬性。origin
屬性應與憑證有效的要求來源完全符合。注意在 macOS 上使用 WebKit 時,存取
localhost
不會挑選用戶端憑證。 您可以將localhost
替換為local.playwright
,使其運作。 -
-
setColorScheme
null |enum ColorScheme { LIGHT, DARK, NO_PREFERENCE }
(選填)#模擬 prefers-colors-scheme 媒體功能,支援的值為
'light'
和'dark'
。 請參閱 Page.emulateMedia() 以取得更多詳細資訊。 傳遞null
會將模擬重設為系統預設值。 預設為'light'
。 -
setDeviceScaleFactor
double (選填)#指定裝置縮放比例 (可以視為 dpr)。 預設為
1
。 深入瞭解 模擬具有裝置縮放比例的裝置。 -
setExtraHTTPHeaders
Map<String, String> (選填)#包含要隨每個要求傳送的其他 HTTP 標頭的物件。 預設為無。
-
setForcedColors
null |enum ForcedColors { ACTIVE, NONE }
(選填)#模擬
'forced-colors'
媒體功能,支援的值為'active'
、'none'
。 請參閱 Page.emulateMedia() 以取得更多詳細資訊。 傳遞null
會將模擬重設為系統預設值。 預設為'none'
。 -
setGeolocation
Geolocation (選填)# -
指定視窗是否支援觸控事件。 預設為 false。 深入瞭解 行動裝置模擬。
-
setHttpCredentials
HttpCredentials (選填)#-
setUsername
String -
setPassword
String -
setOrigin
String (選用)限制在特定來源上傳送 http 認證 (scheme://host:port).
-
setSend
enum HttpCredentialsSend { UNAUTHORIZED, ALWAYS }
(選用)此選項僅適用於從對應的 APIRequestContext 傳送的要求,並且不影響從瀏覽器傳送的要求。
'always'
- 具有基本驗證認證的Authorization
標頭將與每個 API 要求一起傳送。'unauthorized
- 僅當收到具有WWW-Authenticate
標頭的 401 (未授權) 回應時,才會傳送認證。 預設為'unauthorized'
。
HTTP 驗證的認證。 如果未指定來源,則使用者名稱和密碼會在未經授權的回應時傳送至任何伺服器。
-
-
setIgnoreHTTPSErrors
boolean (選填)#在傳送網路要求時是否忽略 HTTPS 錯誤。 預設為
false
。 -
是否考量
meta viewport
標籤並啟用觸控事件。 isMobile 是裝置的一部分,因此您實際上不需要手動設定它。 預設為false
,且在 Firefox 中不受支援。 深入瞭解 行動裝置模擬。 -
setJavaScriptEnabled
boolean (選填)#是否要在內容中啟用 JavaScript。 預設為
true
。 深入瞭解 停用 JavaScript。 -
指定使用者地區設定,例如
en-GB
、de-DE
等。地區設定將影響navigator.language
值、Accept-Language
要求標頭值以及數字和日期格式規則。 預設為系統預設地區設定。 深入瞭解我們的 模擬指南中的模擬。 -
是否模擬網路離線。 預設為
false
。 深入瞭解 網路模擬。 -
setPermissions
List<String> (選填)#要授與此內容中所有頁面的權限清單。 請參閱 BrowserContext.grantPermissions() 以取得更多詳細資訊。 預設為無。
-
setProxy
Proxy (選填)#-
setServer
String要用於所有要求的 Proxy。 支援 HTTP 和 SOCKS Proxy,例如
http://myproxy.com:3128
或socks5://myproxy.com:3128
。 簡短格式myproxy.com:3128
被視為 HTTP Proxy。 -
setBypass
String (選用)選用的逗號分隔網域以繞過 Proxy,例如
".com, chromium.org, .domain.com"
。 -
setUsername
String (選用)如果 HTTP Proxy 需要驗證,則為選用的使用者名稱。
-
setPassword
String (選用)如果 HTTP Proxy 需要驗證,則為選用的密碼。
要與此內容搭配使用的網路 Proxy 設定。 預設為無。
-
-
setRecordHarContent
enum HarContentPolicy { OMIT, EMBED, ATTACH }
(選填)#用於控制資源內容管理的選用設定。 如果指定
omit
,則不會保存內容。 如果指定attach
,則資源會保存為個別檔案,並且所有這些檔案都會與 HAR 檔案一起封存。 預設為embed
,這會根據 HAR 規格將內容內嵌儲存在 HAR 檔案中。 -
setRecordHarMode
enum HarMode { FULL, MINIMAL }
(選填)#設定為
minimal
時,僅記錄從 HAR 路由所需的資訊。 這會省略大小、計時、頁面、Cookie、安全性和其他類型的 HAR 資訊,這些資訊在從 HAR 重新播放時不會使用。 預設為full
。 -
setRecordHarOmitContent
boolean (選填)#用於控制是否從 HAR 中省略要求內容的選用設定。 預設為
false
。 -
啟用將所有頁面的 HAR 記錄到檔案系統上指定的 HAR 檔案中。 如果未指定,則不會記錄 HAR。 請務必呼叫 BrowserContext.close() 以儲存 HAR。
-
啟用將所有頁面的影片記錄到指定的目錄中。 如果未指定,則不會記錄影片。 請務必呼叫 BrowserContext.close() 以儲存影片。
-
setRecordVideoSize
RecordVideoSize (選填)#記錄影片的尺寸。 如果未指定,則大小將等於縮小以符合 800x800 的
viewport
。 如果未明確設定viewport
,則影片大小預設為 800x450。 如有必要,每個頁面的實際圖片都會縮小以符合指定的大小。 -
setReducedMotion
null |enum ReducedMotion { REDUCE, NO_PREFERENCE }
(選填)#模擬
'prefers-reduced-motion'
媒體功能,支援的值為'reduce'
、'no-preference'
。 請參閱 Page.emulateMedia() 以取得更多詳細資訊。 傳遞null
會將模擬重設為系統預設值。 預設為'no-preference'
。 -
setScreenSize
ScreenSize (選填)#模擬網頁內可用的視窗螢幕尺寸,透過
window.screen
。 僅在設定 setViewportSize 時使用。 -
setServiceWorkers
enum ServiceWorkerPolicy { ALLOW, BLOCK }
(選填)#是否允許網站註冊 Service Worker。 預設為
'allow'
。'allow'
: 可以註冊 Service Worker。'block'
: Playwright 將封鎖所有 Service Worker 的註冊。
-
使用給定的儲存狀態填入內容。 此選項可用於使用透過 BrowserContext.storageState() 取得的已登入資訊初始化內容。
-
setStorageStatePath
Path (選用)加入於: v1.9#使用給定的儲存狀態填入內容。 此選項可用於使用透過 BrowserContext.storageState() 取得的已登入資訊初始化內容。 儲存狀態檔案的路徑。
-
setStrictSelectors
boolean (選填)#如果設定為 true,則為此內容啟用嚴格選取器模式。 在嚴格選取器模式下,對選取器執行所有暗示單一目標 DOM 元素的作業,當有多個元素符合選取器時,將會擲回例外。 此選項不會影響任何 Locator API (Locator 永遠是嚴格的)。 預設為
false
。 請參閱 Locator 以深入瞭解嚴格模式。 -
變更內容的時區。 請參閱 ICU 的 metaZones.txt 以取得支援的時區 ID 清單。 預設為系統時區。
-
在此內容中使用的特定使用者代理程式。
-
setViewportSize
null | ViewportSize (選填)#為每個頁面模擬一致的視窗。 預設為 1280x720 視窗。 使用
null
停用一致的視窗模擬。 深入瞭解 視窗模擬。注意null
值會選擇退出預設預設值,使視窗取決於作業系統定義的主機視窗大小。 這會使測試的執行具有不確定性。
-
回傳
startTracing
加入於: v1.11此 API 控制 Chromium 追蹤,這是一個低階的 Chromium 專用除錯工具。 控制 Playwright 追蹤的 API 可以在 這裡 找到。
您可以使用 Browser.startTracing() 和 Browser.stopTracing() 來建立追蹤檔案,該檔案可以在 Chrome DevTools 效能面板中開啟。
用法
browser.startTracing(page, new Browser.StartTracingOptions()
.setPath(Paths.get("trace.json")));
page.navigate("https://www.google.com");
browser.stopTracing();
引數
-
選填,如果指定,追蹤會包含指定頁面的螢幕截圖。
-
options
Browser.StartTracingOptions
(選填)
回傳
stopTracing
加入於: v1.11此 API 控制 Chromium 追蹤,這是一個低階的 Chromium 專用除錯工具。 控制 Playwright 追蹤的 API 可以在 這裡 找到。
傳回包含追蹤資料的緩衝區。
用法
Browser.stopTracing();
回傳
version
加入於 v1.9 之前傳回瀏覽器版本。
用法
Browser.version();
回傳
Events
onDisconnected(handler)
加入於 v1.9 之前當瀏覽器與瀏覽器應用程式斷線時發出。 這可能是由於以下原因之一而發生
- 瀏覽器應用程式已關閉或崩潰。
- 呼叫了 Browser.close() 方法。
用法
Browser.onDisconnected(handler)
事件資料