跳到主要內容

瀏覽器上下文

瀏覽器上下文提供了一種操作多個獨立瀏覽器會話的方法。

如果一個頁面開啟另一個頁面,例如使用 window.open 呼叫,則彈出視窗將屬於父頁面的瀏覽器上下文中。

Playwright 允許使用 browser.newContext() 方法建立隔離的非持久性瀏覽器上下文。非持久性瀏覽器上下文不會將任何瀏覽資料寫入磁碟。

// Create a new incognito browser context
const context = await browser.newContext();
// Create a new page inside context.
const page = await context.newPage();
await page.goto('https://example.com');
// Dispose context once it's no longer needed.
await context.close();

方法

addCookies

在 v1.9 之前新增 browserContext.addCookies

將 Cookie 新增到此瀏覽器上下文中。此上下文中的所有頁面都將安裝這些 Cookie。Cookie 可以透過 browserContext.cookies() 取得。

用法

await browserContext.addCookies([cookieObject1, cookieObject2]);

參數

  • cookies Array<Object>#
    • name string

    • value string

    • url string (選填)

      url 或 domain / path 為必填。選填。

    • domain string (選填)

      若要讓 Cookie 也適用於所有子網域,請在網域前加上一個點,例如:「.example.com」。url 或 domain / path 為必填。選填。

    • path string (選填)

      url 或 domain / path 為必填 選填。

    • expires number (選填)

      Unix 時間,以秒為單位。選填。

    • httpOnly boolean (選填)

      選填。

    • secure boolean (選填)

      選填。

    • sameSite "Strict" | "Lax" | "None" (選填)

      選填。

回傳


addInitScript

在 v1.9 之前新增 browserContext.addInitScript

新增一個腳本,該腳本將在以下其中一種情況下評估

  • 每當在瀏覽器上下文中建立或導航頁面時。
  • 每當在瀏覽器上下文中的任何頁面中附加或導航子框架時。在這種情況下,腳本會在新附加框架的上下文中評估。

腳本在文件建立後但在其任何腳本執行之前評估。這對於修改 JavaScript 環境很有用,例如,用於 seed Math.random

用法

在頁面載入之前覆寫 Math.random 的範例

// preload.js
Math.random = () => 42;
// In your playwright script, assuming the preload.js file is in same directory.
await browserContext.addInitScript({
path: 'preload.js'
});
注意

透過 browserContext.addInitScript()page.addInitScript() 安裝的多個腳本的評估順序未定義。

參數

  • script function | string | Object#

    • path string (選填)

      JavaScript 檔案的路徑。如果 path 是相對路徑,則會相對於目前的工作目錄解析。選填。

    • content string (選填)

      原始腳本內容。選填。

    要在瀏覽器上下文中所有頁面中評估的腳本。

  • arg Serializable (選填)#

    要傳遞給 script 的選填參數 (僅在傳遞函數時支援)。

回傳


backgroundPages

在 v1.11 中新增 browserContext.backgroundPages
注意

背景頁面僅在基於 Chromium 的瀏覽器上受支援。

上下文中所有現有的背景頁面。

用法

browserContext.backgroundPages();

回傳


browser

在 v1.9 之前新增 browserContext.browser

回傳上下文的瀏覽器實例。如果它是作為持久性上下文啟動的,則會回傳 null。

用法

browserContext.browser();

回傳


clearCookies

在 v1.9 之前新增 browserContext.clearCookies

從上下文中移除 Cookie。接受選填篩選器。

用法

await context.clearCookies();
await context.clearCookies({ name: 'session-id' });
await context.clearCookies({ domain: 'my-origin.com' });
await context.clearCookies({ domain: /.*my-origin\.com/ });
await context.clearCookies({ path: '/api/v1' });
await context.clearCookies({ name: 'session-id', domain: 'my-origin.com' });

參數

  • options Object (選填)
    • domain string | RegExp (選填)在 v1.43 中新增#

      僅移除具有指定網域的 Cookie。

    • name string | RegExp (選填)在 v1.43 中新增#

      僅移除具有指定名稱的 Cookie。

    • path string | RegExp (選填)在 v1.43 中新增#

      僅移除具有指定路徑的 Cookie。

回傳


clearPermissions

在 v1.9 之前新增 browserContext.clearPermissions

清除瀏覽器上下文的所有權限覆寫。

用法

const context = await browser.newContext();
await context.grantPermissions(['clipboard-read']);
// do stuff ..
context.clearPermissions();

回傳


close

在 v1.9 之前新增 browserContext.close

關閉瀏覽器上下文。屬於瀏覽器上下文的所有頁面都將被關閉。

注意

預設瀏覽器上下文無法關閉。

用法

await browserContext.close();
await browserContext.close(options);

參數

  • options Object (選填)
    • reason string (選填)在 v1.40 中新增#

      要報告給因上下文關閉而中斷的操作的原因。

回傳


cookies

在 v1.9 之前新增 browserContext.cookies

如果未指定任何 URL,此方法會回傳所有 Cookie。如果指定了 URL,則只會回傳影響這些 URL 的 Cookie。

用法

await browserContext.cookies();
await browserContext.cookies(urls);

參數

回傳


exposeBinding

在 v1.9 之前新增 browserContext.exposeBinding

此方法在上下文中每個頁面的每個框架的 window 物件上新增一個名為 name 的函數。呼叫時,此函數會執行 callback 並回傳一個 Promise,該 Promise 會解析為 callback 的回傳值。如果 callback 回傳一個 Promise,則會等待它完成。

callback 函數的第一個參數包含有關呼叫者的資訊:{ browserContext: BrowserContext, page: Page, frame: Frame }

有關僅限頁面的版本,請參閱 page.exposeBinding()

用法

將頁面 URL 公開給上下文中所有頁面的所有框架的範例

const { webkit } = require('playwright');  // Or 'chromium' or 'firefox'.

(async () => {
const browser = await webkit.launch({ headless: false });
const context = await browser.newContext();
await context.exposeBinding('pageURL', ({ page }) => page.url());
const page = await context.newPage();
await page.setContent(`
<script>
async function onClick() {
document.querySelector('div').textContent = await window.pageURL();
}
</script>
<button onclick="onClick()">Click me</button>
<div></div>
`);
await page.getByRole('button').click();
})();

參數

  • name string#

    window 物件上的函數名稱。

  • callback function#

    將在 Playwright 的上下文中呼叫的回調函數。

  • options Object (選填)

    • handle boolean (選填)#

      已棄用

      此選項將在未來移除。

      是否將參數作為句柄傳遞,而不是按值傳遞。當傳遞句柄時,僅支援一個參數。當按值傳遞時,支援多個參數。

回傳


exposeFunction

在 v1.9 之前新增 browserContext.exposeFunction

此方法在上下文中每個頁面的每個框架的 window 物件上新增一個名為 name 的函數。呼叫時,此函數會執行 callback 並回傳一個 Promise,該 Promise 會解析為 callback 的回傳值。

如果 callback 回傳一個 Promise,則會等待它完成。

有關僅限頁面的版本,請參閱 page.exposeFunction()

用法

sha256 函數新增到上下文中所有頁面的範例

const { webkit } = require('playwright');  // Or 'chromium' or 'firefox'.
const crypto = require('crypto');

(async () => {
const browser = await webkit.launch({ headless: false });
const context = await browser.newContext();
await context.exposeFunction('sha256', text =>
crypto.createHash('sha256').update(text).digest('hex'),
);
const page = await context.newPage();
await page.setContent(`
<script>
async function onClick() {
document.querySelector('div').textContent = await window.sha256('PLAYWRIGHT');
}
</script>
<button onclick="onClick()">Click me</button>
<div></div>
`);
await page.getByRole('button').click();
})();

參數

  • name string#

    window 物件上的函數名稱。

  • callback function#

    將在 Playwright 的上下文中呼叫的回調函數。

回傳


grantPermissions

在 v1.9 之前新增 browserContext.grantPermissions

授予瀏覽器上下文指定的權限。如果指定了來源,則僅授予對應的權限給定的來源。

用法

await browserContext.grantPermissions(permissions);
await browserContext.grantPermissions(permissions, options);

參數

  • permissions Array<string>#

    要授予的權限清單。

    危險

    不同瀏覽器之間,甚至同一瀏覽器的不同版本之間,支援的權限有所不同。任何權限都可能在更新後停止運作。

    以下是一些可能受某些瀏覽器支援的權限

    • 'accelerometer' (加速度計)
    • 'ambient-light-sensor' (環境光感測器)
    • 'background-sync' (背景同步)
    • 'camera' (相機)
    • 'clipboard-read' (剪貼簿讀取)
    • 'clipboard-write' (剪貼簿寫入)
    • 'geolocation' (地理位置)
    • 'gyroscope' (陀螺儀)
    • 'magnetometer' (磁力計)
    • 'microphone' (麥克風)
    • 'midi-sysex' (系統專屬 MIDI)
    • 'midi' (MIDI)
    • 'notifications' (通知)
    • 'payment-handler' (付款處理常式)
    • 'storage-access' (儲存空間存取)
  • options Object (選填)

回傳


newCDPSession

在 v1.11 中新增 browserContext.newCDPSession
注意

CDP 會話僅在基於 Chromium 的瀏覽器上受支援。

回傳新建立的會話。

用法

await browserContext.newCDPSession(page);

參數

  • page Page | Frame#

    要為其建立新會話的目標。為了向後相容性,此參數命名為 page,但它可以是 PageFrame 類型。

回傳


newPage

在 v1.9 之前新增 browserContext.newPage

在瀏覽器上下文中建立新頁面。

用法

await browserContext.newPage();

回傳


pages

在 v1.9 之前新增 browserContext.pages

回傳上下文中所有開啟的頁面。

用法

browserContext.pages();

回傳


removeAllListeners

在 v1.47 中新增 browserContext.removeAllListeners

移除給定類型的所有監聽器 (如果未給定類型,則移除所有已註冊的監聽器)。允許等待異步監聽器完成或忽略來自這些監聽器的後續錯誤。

用法

await browserContext.removeAllListeners();
await browserContext.removeAllListeners(type, options);

參數

  • type string (選填)#
  • options Object (選填)
    • behavior "wait" | "ignoreErrors" | "default" (選填)#

      指定是否等待已在運行的監聽器,以及如果它們拋出錯誤時該怎麼做

      • 'default' - 不等待目前的監聽器呼叫 (如果有的話) 完成,如果監聽器拋出錯誤,可能會導致未處理的錯誤
      • 'wait' - 等待目前的監聽器呼叫 (如果有的話) 完成
      • 'ignoreErrors' - 不等待目前的監聽器呼叫 (如果有的話) 完成,移除後監聽器拋出的所有錯誤都會被靜默捕獲

回傳


route

在 v1.9 之前新增 browserContext.route

路由功能提供了修改瀏覽器上下文中任何頁面發出的網路請求的功能。一旦啟用路由,每個符合 URL 模式的請求都會停滯,除非它被繼續、實現或中止。

注意

browserContext.route() 不會攔截 Service Worker 攔截的請求。請參閱 問題。我們建議在使用請求攔截時停用 Service Worker,方法是將 serviceWorkers 設定為 'block'

用法

一個中止所有圖片請求的簡單處理常式的範例

const context = await browser.newContext();
await context.route('**/*.{png,jpg,jpeg}', route => route.abort());
const page = await context.newPage();
await page.goto('https://example.com');
await browser.close();

或使用 regex 模式的相同程式碼片段

const context = await browser.newContext();
await context.route(/(\.png$)|(\.jpg$)/, route => route.abort());
const page = await context.newPage();
await page.goto('https://example.com');
await browser.close();

可以檢查請求以決定路由操作。例如,模擬所有包含一些 post 資料的請求,並將所有其他請求保持原樣

await context.route('/api/**', async route => {
if (route.request().postData().includes('my-string'))
await route.fulfill({ body: 'mocked-data' });
else
await route.continue();
});

當請求同時符合頁面路由 (page.route() 設定) 和瀏覽器上下文路由時,頁面路由優先於瀏覽器上下文路由。

若要移除具有其處理常式的路由,您可以使用 browserContext.unroute()

注意

啟用路由會停用 http 快取。

參數

回傳


routeFromHAR

在 v1.23 中新增 browserContext.routeFromHAR

如果指定,則在此上下文中發出的網路請求將從 HAR 檔案提供。閱讀更多關於 從 HAR 重新播放

Playwright 不會從 HAR 檔案提供 Service Worker 攔截的請求。請參閱 問題。我們建議在使用請求攔截時停用 Service Worker,方法是將 serviceWorkers 設定為 'block'

用法

await browserContext.routeFromHAR(har);
await browserContext.routeFromHAR(har, options);

參數

  • har string#

    具有預先錄製的網路資料的 HAR 檔案的路徑。如果 path 是相對路徑,則會相對於目前的工作目錄解析。

  • options Object (選填)

    • notFound "abort" | "fallback" (選填)#

      • 如果設定為 'abort',則 HAR 檔案中找不到的任何請求都將被中止。
      • 如果設定為 'fallback',則會退回到處理常式鏈中的下一個路由處理常式。

      預設為中止。

    • update boolean (選填)#

      如果指定,則使用實際的網路資訊更新給定的 HAR,而不是從檔案提供服務。當呼叫 browserContext.close() 時,該檔案會寫入磁碟。

    • updateContent "embed" | "attach" (選填)在 v1.32 中新增#

      用於控制資源內容管理的選填設定。如果指定 attach,則資源會以個別檔案或 ZIP 封存中的條目形式持久保存。如果指定 embed,則內容會內嵌儲存在 HAR 檔案中。

    • updateMode "full" | "minimal" (選填)在 v1.32 中新增#

      當設定為 minimal 時,僅記錄從 HAR 路由所需的資訊。這會省略大小、時間、頁面、Cookie、安全性以及其他在從 HAR 重新播放時未使用的 HAR 資訊。預設為 minimal

    • url string | RegExp (選填)#

      一個 glob 模式、正則表達式或謂詞,用於比對請求 URL。只有 URL 符合模式的請求才會從 HAR 檔案提供。如果未指定,則所有請求都會從 HAR 檔案提供。

回傳


routeWebSocket

在 v1.48 中新增 browserContext.routeWebSocket

此方法允許修改瀏覽器上下文中任何頁面建立的 websocket 連線。

請注意,只有在此方法被呼叫之後建立的 WebSocket 才會被路由。建議在建立任何頁面之前呼叫此方法。

用法

以下是一個簡單處理常式的範例,用於封鎖某些 websocket 訊息。請參閱 WebSocketRoute 以取得更多詳細資訊和範例。

await context.routeWebSocket('/ws', async ws => {
ws.routeSend(message => {
if (message === 'to-be-blocked')
return;
ws.send(message);
});
await ws.connect();
});

參數

回傳


serviceWorkers

在 v1.11 中新增 browserContext.serviceWorkers
注意

Service Worker 僅在基於 Chromium 的瀏覽器上受到支援。

環境中所有現有的 Service Worker。

用法

browserContext.serviceWorkers();

回傳


setDefaultNavigationTimeout

在 v1.9 之前新增 browserContext.setDefaultNavigationTimeout

此設定將變更以下方法和相關捷徑的預設最大導航時間

用法

browserContext.setDefaultNavigationTimeout(timeout);

參數

  • timeout number#

    最大導航時間,以毫秒為單位


setDefaultTimeout

在 v1.9 之前新增 browserContext.setDefaultTimeout

此設定將變更所有接受 timeout 選項的方法的預設最大時間。

用法

browserContext.setDefaultTimeout(timeout);

參數

  • timeout number#

    最大時間,以毫秒為單位。傳遞 0 以停用逾時。


setExtraHTTPHeaders

在 v1.9 之前新增 browserContext.setExtraHTTPHeaders

額外的 HTTP 標頭將隨著環境中任何頁面發起的每個請求一起傳送。這些標頭會與使用 page.setExtraHTTPHeaders() 設定的頁面特定額外 HTTP 標頭合併。如果頁面覆寫了特定的標頭,則會使用頁面特定的標頭值,而不是瀏覽器環境標頭值。

注意

browserContext.setExtraHTTPHeaders() 不保證傳出請求中標頭的順序。

用法

await browserContext.setExtraHTTPHeaders(headers);

參數

  • headers Object<string, string>#

    一個物件,其中包含要隨著每個請求傳送的額外 HTTP 標頭。所有標頭值都必須是字串。

回傳


setGeolocation

在 v1.9 之前新增 browserContext.setGeolocation

設定環境的地理位置。傳遞 nullundefined 會模擬位置不可用。

用法

await browserContext.setGeolocation({ latitude: 59.95, longitude: 30.31667 });
注意

考慮使用 browserContext.grantPermissions() 來授予瀏覽器環境頁面讀取其地理位置的權限。

參數

  • geolocation null | Object#
    • latitude number

      緯度,介於 -90 和 90 之間。

    • longitude number

      經度,介於 -180 和 180 之間。

    • accuracy number (選用)

      非負數精確度值。預設為 0

回傳


setOffline

在 v1.9 之前新增 browserContext.setOffline

用法

await browserContext.setOffline(offline);

參數

  • offline boolean#

    是否模擬瀏覽器環境的網路離線狀態。

回傳


storageState

在 v1.9 之前新增 browserContext.storageState

傳回此瀏覽器環境的儲存狀態,包含目前的 Cookie 和本地儲存快照。

用法

await browserContext.storageState();
await browserContext.storageState(options);

參數

  • options Object (選填)
    • path string (選用)#

      儲存儲存狀態的檔案路徑。如果 path 是相對路徑,則會相對於目前的工作目錄解析。如果未提供路徑,仍然會傳回儲存狀態,但不會儲存到磁碟。

回傳


unroute

在 v1.9 之前新增 browserContext.unroute

移除使用 browserContext.route() 建立的路由。當未指定 handler 時,會移除 url 的所有路由。

用法

await browserContext.unroute(url);
await browserContext.unroute(url, handler);

參數

回傳


unrouteAll

新增於:v1.41 browserContext.unrouteAll

移除所有使用 browserContext.route()browserContext.routeFromHAR() 建立的路由。

用法

await browserContext.unrouteAll();
await browserContext.unrouteAll(options);

參數

  • options Object (選填)
    • behavior "wait" | "ignoreErrors" | "default" (選用)#

      指定是否等待已在執行的處理常式,以及如果它們拋出錯誤時該怎麼做

      • 'default' - 不等待目前的處理常式呼叫(如果有的話)完成,如果未路由的處理常式拋出錯誤,可能會導致未處理的錯誤
      • 'wait' - 等待目前的處理常式呼叫(如果有的話)完成
      • 'ignoreErrors' - 不等待目前的處理常式呼叫(如果有的話)完成,取消路由後處理常式拋出的所有錯誤都會被靜默捕獲

回傳


waitForEvent

在 v1.9 之前新增 browserContext.waitForEvent

等待事件觸發,並將其值傳遞到述詞函式中。當述詞傳回真值時傳回。如果環境在事件觸發之前關閉,將拋出錯誤。傳回事件資料值。

用法

const pagePromise = context.waitForEvent('page');
await page.getByRole('button').click();
const page = await pagePromise;

參數

  • event string#

    事件名稱,與傳遞到 browserContext.on(event) 的名稱相同。

  • optionsOrPredicate function | Object (選用)#

    • predicate function

      接收事件資料,並在等待應解析時解析為真值。

    • timeout number (選用)

      最大等待時間,以毫秒為單位。預設為 0 - 無逾時。預設值可以透過組態中的 actionTimeout 選項或使用 browserContext.setDefaultTimeout() 方法來變更。

    述詞或選項物件。選用。

  • options Object (選填)

    • predicate function (選用)#

      接收事件資料,並在等待應解析時解析為真值。

回傳


屬性

clock

新增於:v1.45 browserContext.clock

Playwright 具有模擬時鐘和時間流逝的能力。

用法

browserContext.clock

類型


request

新增於:v1.16 browserContext.request

與此環境關聯的 API 測試輔助工具。使用此 API 發出的請求將使用環境 Cookie。

用法

browserContext.request

類型


tracing

新增於:v1.12 browserContext.tracing

用法

browserContext.tracing

類型


事件

on('backgroundpage')

在 v1.11 中新增 browserContext.on('backgroundpage')
注意

僅適用於 Chromium 瀏覽器的持續性環境。

當在環境中建立新的背景頁面時發出。

const backgroundPage = await context.waitForEvent('backgroundpage');

用法

browserContext.on('backgroundpage', data => {});

事件資料


on('close')

在 v1.9 之前新增 browserContext.on('close')

當瀏覽器環境關閉時發出。這可能是由於以下原因之一造成的

  • 瀏覽器環境已關閉。
  • 瀏覽器應用程式已關閉或崩潰。
  • 呼叫了 browser.close() 方法。

用法

browserContext.on('close', data => {});

事件資料


on('console')

新增於:v1.34 browserContext.on('console')

當頁面內的 JavaScript 呼叫其中一個 console API 方法時發出,例如 console.logconsole.dir

傳遞到 console.log 和頁面的引數可在 ConsoleMessage 事件處理常式引數上取得。

用法

context.on('console', async msg => {
const values = [];
for (const arg of msg.args())
values.push(await arg.jsonValue());
console.log(...values);
});
await page.evaluate(() => console.log('hello', 5, { foo: 'bar' }));

事件資料


on('dialog')

新增於:v1.34 browserContext.on('dialog')

當 JavaScript 對話框出現時發出,例如 alertpromptconfirmbeforeunload。監聽器必須 dialog.accept()dialog.dismiss() 對話框 - 否則頁面將會 凍結 等待對話框,而點擊等動作將永遠不會完成。

用法

context.on('dialog', dialog => {
dialog.accept();
});
注意

當沒有 page.on('dialog')browserContext.on('dialog') 監聽器存在時,所有對話框都會自動關閉。

事件資料


on('page')

在 v1.9 之前新增 browserContext.on('page')

當在 BrowserContext 中建立新頁面時發出此事件。頁面可能仍在載入中。此事件也將針對彈出頁面觸發。另請參閱 page.on('popup') 以接收與特定頁面相關的彈出視窗事件。

頁面可用的最早時刻是它導航到初始 URL 時。例如,當使用 window.open('http://example.com') 開啟彈出視窗時,當對 "http://example.com" 的網路請求完成且其回應已開始在彈出視窗中載入時,此事件將會觸發。如果您想要路由/監聽此網路請求,請分別使用 browserContext.route()browserContext.on('request'),而不是 Page 上的類似方法。

const newPagePromise = context.waitForEvent('page');
await page.getByText('open new page').click();
const newPage = await newPagePromise;
console.log(await newPage.evaluate('location.href'));
注意

使用 page.waitForLoadState() 等待頁面達到特定狀態(在大多數情況下您不需要它)。

用法

browserContext.on('page', data => {});

事件資料


on('request')

新增於:v1.12 browserContext.on('request')

當從透過此環境建立的任何頁面發出請求時發出。 request 物件是唯讀的。若要僅監聽來自特定頁面的請求,請使用 page.on('request')

若要攔截和變更請求,請參閱 browserContext.route()page.route()

用法

browserContext.on('request', data => {});

事件資料


on('requestfailed')

新增於:v1.12 browserContext.on('requestfailed')

當請求失敗時發出,例如逾時。若要僅監聽來自特定頁面的失敗請求,請使用 page.on('requestfailed')

注意

HTTP 錯誤回應 (例如 404 或 503) 從 HTTP 角度來看仍然是成功的回應,因此請求將在 browserContext.on('requestfinished') 事件中完成,而不是在 browserContext.on('requestfailed') 中完成。

用法

browserContext.on('requestfailed', data => {});

事件資料


on('requestfinished')

新增於:v1.12 browserContext.on('requestfinished')

當請求在下載回應主體後成功完成時發出。對於成功的回應,事件順序為 requestresponserequestfinished。若要監聽來自特定頁面的成功請求,請使用 page.on('requestfinished')

用法

browserContext.on('requestfinished', data => {});

事件資料


on('response')

新增於:v1.12 browserContext.on('response')

當收到請求的 response 狀態和標頭時發出。對於成功的回應,事件順序為 requestresponserequestfinished。若要監聽來自特定頁面的回應事件,請使用 page.on('response')

用法

browserContext.on('response', data => {});

事件資料


on('serviceworker')

在 v1.11 中新增 browserContext.on('serviceworker')
注意

Service Worker 僅在基於 Chromium 的瀏覽器上受到支援。

當在環境中建立新的 Service Worker 時發出。

用法

browserContext.on('serviceworker', data => {});

事件資料


on('weberror')

新增於:v1.38 browserContext.on('weberror')

當此環境中任何頁面中發生未處理的例外狀況時發出。若要監聽來自特定頁面的錯誤,請改用 page.on('pageerror')

用法

browserContext.on('weberror', data => {});

事件資料


已棄用

setHTTPCredentials

在 v1.9 之前新增 browserContext.setHTTPCredentials
已棄用

瀏覽器可能會在成功驗證後快取憑證。請改為建立新的瀏覽器環境。

用法

await browserContext.setHTTPCredentials(httpCredentials);

參數

回傳