發行說明
版本 1.51
重點
-
indexed_db 的新選項,適用於 browser_context.storage_state(),允許儲存與還原 IndexedDB 內容。當您的應用程式使用 IndexedDB API 儲存身分驗證權杖 (如 Firebase Authentication) 時非常有用。
以下範例遵循身分驗證指南
# Save storage state into the file. Make sure to include IndexedDB.
storage = await context.storage_state(path="state.json", indexed_db=True)
# Create a new context with the saved storage state.
context = await browser.new_context(storage_state="state.json") -
visible 的新選項,適用於 locator.filter(),允許僅比對可見元素。
# Ignore invisible todo items.
todo_items = page.get_by_test_id("todo-item").filter(visible=True)
# Check there are exactly 3 visible ones.
await expect(todo_items).to_have_count(3) -
方法 page.emulate_media() 和 browser.new_context() 的新選項
contrast
,允許模擬prefers-contrast
媒體功能。 -
新選項 fail_on_status_code 讓透過 APIRequestContext 提出的所有提取要求,在回應代碼非 2xx 和 3xx 時擲回錯誤。
瀏覽器版本
- Chromium 134.0.6998.35
- Mozilla Firefox 135.0
- WebKit 18.4
此版本也已針對下列穩定通道進行測試
- Google Chrome 133
- Microsoft Edge 133
版本 1.50
Async Pytest 外掛程式
其他
- 新增方法 expect(locator).to_have_accessible_error_message(),以斷言 Locator 指向具有指定 aria errormessage 的元素。
UI 更新
- Codegen 中的新按鈕,用於選取元素以產生 aria 快照。
- 現在會在追蹤中與動作 API 呼叫一起顯示其他詳細資訊 (例如按下的按鍵)。
- 在追蹤中顯示
canvas
內容容易出錯。顯示現在預設為停用,可以透過Display canvas content
UI 設定啟用。 Call
和Network
面板現在顯示其他時間資訊。
重大變更
- 如果目標元素不是
<input>
、<select>
或其他一些可編輯元素,expect(locator).to_be_editable() 和 locator.is_editable() 現在會擲回錯誤。
瀏覽器版本
- Chromium 133.0.6943.16
- Mozilla Firefox 134.0
- WebKit 18.2
此版本也已針對下列穩定通道進行測試
- Google Chrome 132
- Microsoft Edge 132
版本 1.49
Aria 快照
新的斷言 expect(locator).to_match_aria_snapshot() 透過與預期的可存取性樹狀結構 (以 YAML 表示) 比較來驗證頁面結構。
page.goto("https://playwright.dev.org.tw")
expect(page.locator('body')).to_match_aria_snapshot('''
- banner:
- heading /Playwright enables reliable/ [level=1]
- link "Get started"
- link "Star microsoft/playwright on GitHub"
- main:
- img "Browsers (Chromium, Firefox, WebKit)"
- heading "Any browser • Any platform • One API"
''')
您可以使用 測試產生器 或呼叫 locator.aria_snapshot() 來產生此斷言。
在aria 快照指南中瞭解更多資訊。
追蹤群組
新方法 tracing.group() 允許您在追蹤檢視器中以視覺方式將動作分組。
# All actions between group and group_end
# will be shown in the trace viewer as a group.
page.context.tracing.group("Open Playwright.dev > API")
page.goto("https://playwright.dev.org.tw/")
page.get_by_role("link", name="API").click()
page.context.tracing.group_end()
重大變更:chrome
和 msedge
通道切換至新的無頭模式
如果您在 playwright.config.ts
中使用下列其中一個通道,此變更會影響您
chrome
、chrome-dev
、chrome-beta
或chrome-canary
msedge
、msedge-dev
、msedge-beta
或msedge-canary
更新至 Playwright v1.49 後,執行您的測試套件。如果仍然通過,則一切正常。如果沒有,您可能需要更新您的快照,並調整一些關於 PDF 檢視器和擴充功能的測試程式碼。請參閱 issue #33566 以取得更多詳細資訊。
試用新的 Chromium 無頭模式
您可以使用 'chromium'
通道選擇加入新的無頭模式。如同 官方 Chrome 文件所述
另一方面,新的無頭模式是真正的 Chrome 瀏覽器,因此更真實、更可靠,並提供更多功能。這使其更適合高精確度的端對端 Web 應用程式測試或瀏覽器擴充功能測試。
請參閱 issue #33566 以取得您可能遇到的可能中斷清單,以及關於 Chromium 無頭模式的更多詳細資訊。如果您在選擇加入後看到任何問題,請提交 issue。
pytest test_login.py --browser-channel chromium
其他
- Ubuntu 20.04 和 Debian 11 上的 WebKit 將不再有更新。我們建議將您的作業系統更新到較新版本。
- 快照內的
<canvas>
元素現在會繪製預覽。 - 不再支援 Python 3.8。
瀏覽器版本
- Chromium 131.0.6778.33
- Mozilla Firefox 132.0
- WebKit 18.2
此版本也已針對下列穩定通道進行測試
- Google Chrome 130
- Microsoft Edge 130
版本 1.48
WebSocket 路由
新方法 page.route_web_socket() 和 browser_context.route_web_socket() 允許攔截、修改和模擬頁面中啟動的 WebSocket 連線。以下是一個簡單的範例,透過回應 "request"
與 "response"
來模擬 WebSocket 通訊。
def message_handler(ws: WebSocketRoute, message: Union[str, bytes]):
if message == "request":
ws.send("response")
page.route_web_socket("/ws", lambda ws: ws.on_message(
lambda message: message_handler(ws, message)
))
請參閱 WebSocketRoute 以取得更多詳細資訊。
UI 更新
- HTML 報告中註解和測試位置的新「複製」按鈕。
- 路由方法呼叫 (如 route.fulfill()) 不再顯示在報告和追蹤檢視器中。您可以在網路標籤中查看哪些網路要求被路由。
- 網路標籤中要求的新「複製為 cURL」和「複製為 fetch」按鈕。
其他
- 新方法 page.request_gc() 可能有助於偵測記憶體洩漏。
- 由 APIRequestContext 提出的要求現在會在 HAR 中記錄詳細的計時和安全性資訊。
瀏覽器版本
- Chromium 130.0.6723.19
- Mozilla Firefox 130.0
- WebKit 18.0
此版本也已針對下列穩定通道進行測試
- Google Chrome 129
- Microsoft Edge 129
版本 1.47
網路標籤改進
追蹤檢視器中的網路標籤有幾個不錯的改進
- 依資產類型和 URL 篩選
- 更好地顯示查詢字串參數
- 字型資產預覽
其他
mcr.microsoft.com/playwright/python:v1.47.0
現在提供基於 Ubuntu 24.04 Noble 的 Playwright 映像。若要使用基於 22.04 jammy 的映像,請改用mcr.microsoft.com/playwright/python:v1.47.0-jammy
。- Playwright Docker 映像的
:latest
/:focal
/:jammy
標籤不再發佈。釘選到特定版本以獲得更好的穩定性和可重現性。 - TLS 用戶端憑證現在可以從記憶體傳遞,方法是將 client_certificates.cert 和 client_certificates.key 作為位元組而不是檔案路徑傳遞。
- no_wait_after 在 locator.select_option() 中已棄用。
- 我們已看到關於 WebKit 在 GitHub Actions
macos-13
上行為異常的報告。我們建議將 GitHub Actions 升級到macos-14
。
瀏覽器版本
- Chromium 129.0.6668.29
- Mozilla Firefox 130.0
- WebKit 18.0
此版本也已針對下列穩定通道進行測試
- Google Chrome 128
- Microsoft Edge 128
版本 1.46
TLS 用戶端憑證
Playwright 現在允許提供用戶端憑證,以便伺服器可以根據 TLS 用戶端驗證的規範驗證它們。
您可以將用戶端憑證作為 browser.new_context() 和 api_request.new_context() 的參數提供。以下程式碼片段為 https://example.com
設定用戶端憑證
context = browser.new_context(
client_certificates=[
{
"origin": "https://example.com",
"certPath": "client-certificates/cert.pem",
"keyPath": "client-certificates/key.pem",
}
],
)
追蹤檢視器更新
- 文字附件的內容現在以內嵌方式呈現在附件窗格中。
- 新設定可顯示/隱藏路由動作,如 route.continue_()。
- 要求方法和狀態顯示在網路詳細資訊標籤中。
- 新按鈕可將原始檔位置複製到剪貼簿。
- Metadata 窗格現在顯示
base_url
。
其他
- api_request_context.fetch() 中的新
maxRetries
選項,會在ECONNRESET
網路錯誤時重試。
瀏覽器版本
- Chromium 128.0.6613.18
- Mozilla Firefox 128.0
- WebKit 18.0
此版本也已針對下列穩定通道進行測試
- Google Chrome 127
- Microsoft Edge 127
版本 1.45
時鐘
利用新的 Clock API 允許在測試中操作和控制時間,以驗證與時間相關的行為。此 API 涵蓋許多常見情境,包括
- 使用預定義時間進行測試;
- 保持一致的時間和計時器;
- 監控閒置狀態;
- 手動逐步執行時間。
# Initialize clock with some time before the test time and let the page load
# naturally. `Date.now` will progress as the timers fire.
page.clock.install(time=datetime.datetime(2024, 2, 2, 8, 0, 0))
page.goto("https://127.0.0.1:3333")
# Pretend that the user closed the laptop lid and opened it again at 10am.
# Pause the time once reached that point.
page.clock.pause_at(datetime.datetime(2024, 2, 2, 10, 0, 0))
# Assert the page state.
expect(page.get_by_test_id("current-time")).to_have_text("2/2/2024, 10:00:00 AM")
# Close the laptop lid again and open it at 10:30am.
page.clock.fast_forward("30:00")
expect(page.get_by_test_id("current-time")).to_have_text("2/2/2024, 10:30:00 AM")
請參閱 時鐘指南 以取得更多詳細資訊。
其他
-
方法 locator.set_input_files() 現在支援為
<input type=file webkitdirectory>
元素上傳目錄。page.get_by_label("Upload directory").set_input_files('mydir')
-
多種方法 (如 locator.click() 或 locator.press()) 現在支援
ControlOrMeta
修飾鍵。此按鍵在 macOS 上對應到Meta
,在 Windows 和 Linux 上對應到Control
。# Press the common keyboard shortcut Control+S or Meta+S to trigger a "Save" operation.
page.keyboard.press("ControlOrMeta+S") -
api_request.new_context() 中的新屬性
httpCredentials.send
,允許始終傳送Authorization
標頭,或僅在回應401 Unauthorized
時傳送。 -
Playwright 現在支援 Ubuntu 24.04 上的 Chromium、Firefox 和 WebKit。
-
v1.45 是最後一個接收 macOS 12 Monterey WebKit 更新的版本。請更新 macOS 以繼續使用最新的 WebKit。
瀏覽器版本
- Chromium 127.0.6533.5
- Mozilla Firefox 127.0
- WebKit 17.4
此版本也已針對下列穩定通道進行測試
- Google Chrome 126
- Microsoft Edge 126
版本 1.44
新 API
可存取性斷言
-
expect(locator).to_have_accessible_name() 檢查元素是否具有指定的易讀名稱
locator = page.get_by_role("button")
expect(locator).to_have_accessible_name("Submit") -
expect(locator).to_have_accessible_description() 檢查元素是否具有指定的易讀描述
locator = page.get_by_role("button")
expect(locator).to_have_accessible_description("Upload a photo") -
expect(locator).to_have_role() 檢查元素是否具有指定的 ARIA 角色
locator = page.get_by_test_id("save-button")
expect(locator).to_have_role("button")
定位器處理常式
- 執行使用 page.add_locator_handler() 新增的處理常式後,Playwright 現在會等待直到觸發處理常式的覆蓋層不再可見。您可以使用新的
no_wait_after
選項選擇退出此行為。 - 您可以在 page.add_locator_handler() 中使用新的
times
選項來指定應執行處理常式的最大次數。 - page.add_locator_handler() 中的處理常式現在接受定位器作為引數。
- 新的 page.remove_locator_handler() 方法,用於移除先前新增的定位器處理常式。
locator = page.get_by_text("This interstitial covers the button")
page.add_locator_handler(locator, lambda overlay: overlay.locator("#close").click(), times=3, no_wait_after=True)
# Run your tests that can be interrupted by the overlay.
# ...
page.remove_locator_handler(locator)
其他選項
- expect(page).to_have_url() 現在支援
ignore_case
選項。
瀏覽器版本
- Chromium 125.0.6422.14
- Mozilla Firefox 125.0.1
- WebKit 17.4
此版本也已針對下列穩定通道進行測試
- Google Chrome 124
- Microsoft Edge 124
版本 1.43
新 API
-
方法 browser_context.clear_cookies() 現在支援篩選器,以僅移除某些 Cookie。
# Clear all cookies.
context.clear_cookies()
# New: clear cookies with a particular name.
context.clear_cookies(name="session-id")
# New: clear cookies for a particular domain.
context.clear_cookies(domain="my-origin.com") -
新方法 locator.content_frame 將 Locator 物件轉換為 FrameLocator。當您在某處取得 Locator 物件,稍後想要與框架內的內容互動時,這會很有用。
locator = page.locator("iframe[name='embedded']")
# ...
frame_locator = locator.content_frame
frame_locator.getByRole("button").click() -
新方法 frame_locator.owner 將 FrameLocator 物件轉換為 Locator。當您在某處取得 FrameLocator 物件,稍後想要與
iframe
元素互動時,這會很有用。frame_locator = page.frame_locator("iframe[name='embedded']")
# ...
locator = frame_locator.owner
expect(locator).to_be_visible() -
現在為 macOS-arm64 和 Linux-arm64 發佈 Conda 組建。
瀏覽器版本
- Chromium 124.0.6367.8
- Mozilla Firefox 124.0
- WebKit 17.4
此版本也已針對下列穩定通道進行測試
- Google Chrome 123
- Microsoft Edge 123
版本 1.42
新定位器處理常式
新方法 page.add_locator_handler() 註冊一個回呼,當指定的元素變為可見時會叫用該回呼,並且可能會封鎖 Playwright 動作。回呼可以移除覆蓋層。以下範例說明如何在 Cookie 對話方塊出現時關閉它。
# Setup the handler.
page.add_locator_handler(
page.get_by_role("heading", name="Hej! You are in control of your cookies."),
lambda: page.get_by_role("button", name="Accept all").click(),
)
# Write the test as usual.
page.goto("https://www.ikea.com/")
page.get_by_role("link", name="Collection of blue and white").click()
expect(page.get_by_role("heading", name="Light and easy")).to_be_visible()
新 API
- page.pdf() 接受兩個新選項 tagged 和 outline。
公告
- ⚠️ 不再支援 Ubuntu 18。
瀏覽器版本
- Chromium 123.0.6312.4
- Mozilla Firefox 123.0
- WebKit 17.4
此版本也已針對下列穩定通道進行測試
- Google Chrome 122
- Microsoft Edge 123
版本 1.41
新 API
- 新方法 page.unroute_all() 移除由 page.route() 和 page.route_from_har() 註冊的所有路由。選擇性地允許等待正在進行的路由完成,或忽略來自它們的任何錯誤。
- 新方法 browser_context.unroute_all() 移除由 browser_context.route() 和 browser_context.route_from_har() 註冊的所有路由。選擇性地允許等待正在進行的路由完成,或忽略來自它們的任何錯誤。
- page.screenshot() 中的新選項 style,以及 locator.screenshot() 中的 style,可在拍攝螢幕截圖之前將自訂 CSS 新增至頁面。
瀏覽器版本
- Chromium 121.0.6167.57
- Mozilla Firefox 121.0
- WebKit 17.4
此版本也已針對下列穩定通道進行測試
- Google Chrome 120
- Microsoft Edge 120
版本 1.40
測試產生器更新
產生斷言的新工具
- 「斷言可見性」工具產生 expect(locator).to_be_visible()。
- 「斷言值」工具產生 expect(locator).to_have_value()。
- 「斷言文字」工具產生 expect(locator).to_contain_text()。
以下是具有斷言的已產生測試範例
from playwright.sync_api import Page, expect
def test_example(page: Page) -> None:
page.goto("https://playwright.dev.org.tw/")
page.get_by_role("link", name="Get started").click()
expect(page.get_by_label("Breadcrumbs").get_by_role("list")).to_contain_text("Installation")
expect(page.get_by_label("Search")).to_be_visible()
page.get_by_label("Search").click()
page.get_by_placeholder("Search docs").fill("locator")
expect(page.get_by_placeholder("Search docs")).to_have_value("locator");
新 API
- page.close() 中的選項 reason、browser_context.close() 中的 reason,以及 browser.close() 中的 reason。關閉原因會針對所有被關閉中斷的操作回報。
- browser_type.launch_persistent_context() 中的選項 firefox_user_prefs。
其他變更
- 方法 download.path() 會針對失敗和取消的下載擲回錯誤。
瀏覽器版本
- Chromium 120.0.6099.28
- Mozilla Firefox 119.0
- WebKit 17.4
此版本也已針對下列穩定通道進行測試
- Google Chrome 119
- Microsoft Edge 119
版本 1.39
Evergreen 瀏覽器更新。
瀏覽器版本
- Chromium 119.0.6045.9
- Mozilla Firefox 118.0.1
- WebKit 17.4
此版本也已針對下列穩定通道進行測試
- Google Chrome 118
- Microsoft Edge 118
版本 1.38
追蹤檢視器更新
- 縮放時間範圍。
- 網路面板重新設計。
新 API
棄用
- 以下方法已棄用:page.type()、frame.type()、locator.type() 和 element_handle.type()。請改用速度更快的 locator.fill()。只有當頁面上有特殊的鍵盤處理,且您需要逐個按下按鍵時,才使用 locator.press_sequentially()。
瀏覽器版本
- Chromium 117.0.5938.62
- Mozilla Firefox 117.0
- WebKit 17.0
此版本也已針對下列穩定通道進行測試
- Google Chrome 116
- Microsoft Edge 116
版本 1.37
重點
- 新的 --full-page-screenshot 命令列旗標允許在失敗時拍攝完整頁面螢幕截圖。
- 現在可以透過使用 browser_context_args 標記來覆寫單一測試的內容選項。
pytest-playwright
現在也發佈在 Anaconda 上
📚 Debian 12 Bookworm 支援
Playwright 現在支援 x86_64 和 arm64 上適用於 Chromium、Firefox 和 WebKit 的 Debian 12 Bookworm。如果您遇到任何問題,請告訴我們!
Linux 支援看起來像這樣
Ubuntu 20.04 | Ubuntu 22.04 | Debian 11 | Debian 12 | |
---|---|---|---|---|
Chromium | ✅ | ✅ | ✅ | ✅ |
WebKit | ✅ | ✅ | ✅ | ✅ |
Firefox | ✅ | ✅ | ✅ | ✅ |
瀏覽器版本
- Chromium 116.0.5845.82
- Mozilla Firefox 115.0
- WebKit 17.0
此版本也已針對下列穩定通道進行測試
- Google Chrome 115
- Microsoft Edge 115
版本 1.36
🏝️ 夏季維護版本。
瀏覽器版本
- Chromium 115.0.5790.75
- Mozilla Firefox 115.0
- WebKit 17.0
此版本也已針對下列穩定通道進行測試
- Google Chrome 114
- Microsoft Edge 114
版本 1.35
重點
-
方法 page.screenshot() 和 locator.screenshot() 的新選項
mask_color
,可變更預設遮罩顏色。 -
新的
uninstall
CLI 命令,用於解除安裝瀏覽器二進位檔$ playwright uninstall # remove browsers installed by this installation
$ playwright uninstall --all # remove all ever-install Playwright browsers
瀏覽器版本
- Chromium 115.0.5790.13
- Mozilla Firefox 113.0
- WebKit 16.4
此版本也已針對下列穩定通道進行測試
- Google Chrome 114
- Microsoft Edge 114
版本 1.34
重點
-
新的 locator.and_() 可建立比對兩個定位器的定位器。
button = page.get_by_role("button").and_(page.get_by_title("Subscribe"))
-
新事件 browser_context.on("console") 和 browser_context.on("dialog") 可訂閱來自指定瀏覽器內容中任何頁面的任何對話方塊和主控台訊息。使用新方法 console_message.page 和 dialog.page 來精確指出事件來源。
瀏覽器版本
- Chromium 114.0.5735.26
- Mozilla Firefox 113.0
- WebKit 16.4
此版本也已針對下列穩定通道進行測試
- Google Chrome 113
- Microsoft Edge 113
版本 1.33
定位器更新
-
使用 locator.or_() 建立比對兩個定位器之一的定位器。考慮您想要按一下「新電子郵件」按鈕的情境,但有時會改為顯示安全性設定對話方塊。在這種情況下,您可以等待「新電子郵件」按鈕或對話方塊,並採取相應的動作
new_email = page.get_by_role("button", name="New email")
dialog = page.get_by_text("Confirm security settings")
expect(new_email.or_(dialog)).is_visible()
if (dialog.is_visible()):
page.get_by_role("button", name="Dismiss").click()
new_email.click() -
在 locator.filter() 中使用新選項 has_not 和 has_not_text,以尋找不符合特定條件的元素。
row_locator = page.locator("tr")
row_locator.filter(has_not_text="text in column 1").filter(
has_not=page.get_by_role("button", name="column 2 button")
).screenshot() -
使用新的 Web 優先斷言 expect(locator).to_be_attached(),以確保元素存在於頁面的 DOM 中。不要與確保元素同時附加和可見的 expect(locator).to_be_visible() 混淆。
新 API
- locator.or_()
- locator.filter() 中的新選項 has_not
- locator.filter() 中的新選項 has_not_text
- expect(locator).to_be_attached()
- route.fetch() 中的新選項 timeout
⚠️ 重大變更
mcr.microsoft.com/playwright/python:v1.33.0
現在提供基於 Ubuntu Jammy 的 Playwright 映像。若要使用基於 focal 的映像,請改用mcr.microsoft.com/playwright/python:v1.33.0-focal
。
瀏覽器版本
- Chromium 113.0.5672.53
- Mozilla Firefox 112.0
- WebKit 16.4
此版本也已針對下列穩定通道進行測試
- Google Chrome 112
- Microsoft Edge 112
版本 1.32
新 API
- 自訂 expect 訊息,請參閱測試斷言文件。
- page.route_from_har() 和 browser_context.route_from_har() 中的新選項 update_mode 和 update_content。
- 鏈結現有的定位器物件,請參閱定位器文件以取得詳細資訊。
- 方法 tracing.start_chunk() 中的新選項 name。
瀏覽器版本
- Chromium 112.0.5615.29
- Mozilla Firefox 111.0
- WebKit 16.4
此版本也已針對下列穩定通道進行測試
- Google Chrome 111
- Microsoft Edge 111
版本 1.31
新 API
-
新的斷言 expect(locator).to_be_in_viewport() 確保 locator 指向的元素根據 intersection observer API 與 viewport 相交。
from playwright.sync_api import expect
locator = page.get_by_role("button")
# Make sure at least some part of element intersects viewport.
expect(locator).to_be_in_viewport()
# Make sure element is fully outside of viewport.
expect(locator).not_to_be_in_viewport()
# Make sure that at least half of the element intersects viewport.
expect(locator).to_be_in_viewport(ratio=0.5)
其他雜項
- 追蹤檢視器中的 DOM 快照現在可以在獨立視窗中開啟。
- route.fetch() 方法的新選項 max_redirects。
- Playwright 現在支援 Debian 11 arm64。
- 官方 docker 映像檔 現在包含 Node 18 而不是 Node 16。
瀏覽器版本
- Chromium 111.0.5563.19
- Mozilla Firefox 109.0
- WebKit 16.4
此版本也已針對下列穩定通道進行測試
- Google Chrome 110
- Microsoft Edge 110
版本 1.30
瀏覽器版本
- Chromium 110.0.5481.38
- Mozilla Firefox 108.0.2
- WebKit 16.4
此版本也已針對下列穩定通道進行測試
- Google Chrome 109
- Microsoft Edge 109
版本 1.29
新 API
-
新方法 route.fetch() 和 route.fulfill() 的新選項
json
def handle_route(route: Route):
# Fetch original settings.
response = route.fetch()
# Force settings theme to a predefined value.
json = response.json()
json["theme"] = "Solorized"
# Fulfill with modified data.
route.fulfill(json=json)
page.route("**/api/settings", handle_route) -
新方法 locator.all() 用於迭代所有符合的元素
# Check all checkboxes!
checkboxes = page.get_by_role("checkbox")
for checkbox in checkboxes.all():
checkbox.check() -
locator.select_option() 現在可以透過 value 或 label 進行比對
<select multiple>
<option value="red">Red</option>
<option value="green">Green</option>
<option value="blue">Blue</option>
</select>element.select_option("Red")
其他雜項
- route.continue_() 方法中的選項
postData
現在支援 Serializable 值。
瀏覽器版本
- Chromium 109.0.5414.46
- Mozilla Firefox 107.0
- WebKit 16.4
此版本也已針對下列穩定通道進行測試
- Google Chrome 108
- Microsoft Edge 108
版本 1.28
Playwright 工具
- CodeGen 中的即時 Locator。 使用「探索」工具為頁面上的任何元素產生 locator。
新 API
瀏覽器版本
- Chromium 108.0.5359.29
- Mozilla Firefox 106.0
- WebKit 16.4
此版本也已針對下列穩定通道進行測試
- Google Chrome 107
- Microsoft Edge 107
版本 1.27
Locator
有了這些新的 API,編寫 locator 成為一種樂趣
- page.get_by_text() 可依文字內容定位。
- page.get_by_role() 可依 ARIA role、ARIA 屬性 和 可存取名稱 定位。
- page.get_by_label() 可依相關聯 label 的文字定位表單控制項。
- page.get_by_test_id() 可依據其
data-testid
屬性 (可以設定其他屬性) 定位元素。 - page.get_by_placeholder() 可依 placeholder 定位輸入框。
- page.get_by_alt_text() 可依元素的替代文字 (通常是圖片) 定位。
- page.get_by_title() 可依元素的 title 定位。
page.get_by_label("User Name").fill("John")
page.get_by_label("Password").fill("secret-password")
page.get_by_role("button", name="Sign in").click()
expect(page.get_by_text("Welcome, John!")).to_be_visible()
所有相同的方法也適用於 Locator、FrameLocator 和 Frame 類別。
其他重點
- 如 v1.25 中宣布,Ubuntu 18 將於 2022 年 12 月起停止支援。除此之外,從下一個 Playwright 版本開始,Ubuntu 18 上將不會有 WebKit 更新。
行為變更
-
具有空值的 expect(locator).to_have_attribute() 不再比對遺失的屬性。例如,當
button
沒有disabled
屬性時,以下程式碼片段將會成功。expect(page.get_by_role("button")).to_have_attribute("disabled", "")
瀏覽器版本
- Chromium 107.0.5304.18
- Mozilla Firefox 105.0.1
- WebKit 16.0
此版本也已針對下列穩定通道進行測試
- Google Chrome 106
- Microsoft Edge 106
版本 1.26
斷言
- expect(locator).to_be_enabled() 的新選項
enabled
。 - expect(locator).to_have_text() 現在會穿透開啟的陰影根。
- expect(locator).to_be_editable() 的新選項
editable
。 - expect(locator).to_be_visible() 的新選項
visible
。
其他重點
- api_request_context.get() 和其他方法的新選項
max_redirects
,用於限制重新導向計數。 - 現在支援 Python 3.11。
行為變更
許多 Playwright API 已經支援 wait_until: "domcontentloaded"
選項。例如
page.goto("https://playwright.dev.org.tw", wait_until="domcontentloaded")
在 1.26 之前,這會等待所有 iframe 觸發 DOMContentLoaded
事件。
為了與網路規範對齊,'domcontentloaded'
值僅等待目標框架觸發 'DOMContentLoaded'
事件。使用 wait_until="load"
等待所有 iframe。
瀏覽器版本
- Chromium 106.0.5249.30
- Mozilla Firefox 104.0
- WebKit 16.0
此版本也已針對下列穩定通道進行測試
- Google Chrome 105
- Microsoft Edge 105
版本 1.25
公告
- 🎁 我們現在推出 Ubuntu 22.04 Jammy Jellyfish docker 映像檔:
mcr.microsoft.com/playwright/python:v1.34.0-jammy
。 - 🪦 這是最後一個支援 macOS 10.15 的版本 (自 1.21 起已棄用)。
- ⚠️ Ubuntu 18 現在已被棄用,將於 2022 年 12 月起停止支援。
瀏覽器版本
- Chromium 105.0.5195.19
- Mozilla Firefox 103.0
- WebKit 16.0
此版本也已針對下列穩定通道進行測試
- Google Chrome 104
- Microsoft Edge 104
版本 1.24
🐂 Debian 11 Bullseye 支援
Playwright 現在在 x86_64 上支援 Debian 11 Bullseye,適用於 Chromium、Firefox 和 WebKit。如果您遇到任何問題,請告訴我們!
Linux 支援看起來像這樣
| | Ubuntu 20.04 | Ubuntu 22.04 | Debian 11 | :--- | :---: | :---: | :---: | :---: | | Chromium | ✅ | ✅ | ✅ | | WebKit | ✅ | ✅ | ✅ | | Firefox | ✅ | ✅ | ✅ |
新的入門文件
我們重寫了入門文件,使其更側重於端對端測試。請在 playwright.dev 上查看。
版本 1.23
網路重播
現在您可以將網路流量記錄到 HAR 檔案中,並在測試中重複使用此流量。
將網路記錄到 HAR 檔案
npx playwright open --save-har=github.har.zip https://github.com/microsoft
或者,您可以透過程式碼記錄 HAR
- 同步
- 非同步
context = browser.new_context(record_har_path="github.har.zip")
# ... do stuff ...
context.close()
context = await browser.new_context(record_har_path="github.har.zip")
# ... do stuff ...
await context.close()
使用新方法 page.route_from_har() 或 browser_context.route_from_har() 從 HAR 檔案提供符合的回應
- 同步
- 非同步
context.route_from_har("github.har.zip")
await context.route_from_har("github.har.zip")
請在 我們的文件 中閱讀更多資訊。
進階路由
您現在可以使用 route.fallback() 將路由延遲到其他處理常式。
考慮以下範例
- 同步
- 非同步
# Remove a header from all requests
def remove_header_handler(route: Route) -> None:
headers = route.request.all_headers()
if "if-none-match" in headers:
del headers["if-none-match"]
route.fallback(headers=headers)
page.route("**/*", remove_header_handler)
# Abort all images
def abort_images_handler(route: Route) -> None:
if route.request.resource_type == "image":
route.abort()
else:
route.fallback()
page.route("**/*", abort_images_handler)
# Remove a header from all requests
async def remove_header_handler(route: Route) -> None:
headers = await route.request.all_headers()
if "if-none-match" in headers:
del headers["if-none-match"]
await route.fallback(headers=headers)
await page.route("**/*", remove_header_handler)
# Abort all images
async def abort_images_handler(route: Route) -> None:
if route.request.resource_type == "image":
await route.abort()
else:
await route.fallback()
await page.route("**/*", abort_images_handler)
請注意,新方法 page.route_from_har() 和 browser_context.route_from_har() 也參與路由,並且可以延遲。
Web-First 斷言更新
- 新方法 expect(locator).to_have_values(),用於斷言
<select multiple>
元素的所有選取值。 - 方法 expect(locator).to_contain_text() 和 expect(locator).to_have_text() 現在接受
ignore_case
選項。
其他雜項
-
如果您的服務工作人員妨礙了您的操作,您現在可以使用新的內容選項
service_workers
輕鬆停用它- 同步
- 非同步
context = browser.new_context(service_workers="block")
page = context.new_page()context = await browser.new_context(service_workers="block")
page = await context.new_page() -
對
recordHar
內容選項使用.zip
路徑會自動壓縮產生的 HAR- 同步
- 非同步
context = browser.new_context(record_har_path="github.har.zip")
context = await browser.new_context(record_har_path="github.har.zip")
-
如果您打算手動編輯 HAR,請考慮使用
"minimal"
HAR 記錄模式,該模式僅記錄重播必不可少的資訊- 同步
- 非同步
context = browser.new_context(record_har_mode="minimal", record_har_path="har.har")
context = await browser.new_context(record_har_mode="minimal", record_har_path="har.har")
-
Playwright 現在在 Ubuntu 22 amd64 和 Ubuntu 22 arm64 上執行。
版本 1.22
重點
-
角色選取器,允許依其 ARIA 角色、ARIA 屬性 和 可存取名稱 選取元素。
# Click a button with accessible name "log in"
page.locator("role=button[name='log in']").click()請在 我們的文件 中閱讀更多資訊。
-
新的 locator.filter() API,用於篩選現有的 locator
buttons = page.locator("role=button")
# ...
submit_button = buttons.filter(has_text="Submit")
submit_button.click() -
Codegen 現在支援產生 Pytest 測試
版本 1.21
重點
-
新的角色選取器,允許依其 ARIA 角色、ARIA 屬性 和 可存取名稱 選取元素。
- 同步
- 非同步
# Click a button with accessible name "log in"
page.locator("role=button[name='log in']").click()# Click a button with accessible name "log in"
await page.locator("role=button[name='log in']").click()請在 我們的文件 中閱讀更多資訊。
-
page.screenshot() 中用於縮小螢幕截圖尺寸的新
scale
選項。 -
page.screenshot() 中用於控制文字游標的新
caret
選項。預設為"hide"
。
行為變更
mcr.microsoft.com/playwright
docker 映像檔不再包含 Python。請使用mcr.microsoft.com/playwright/python
作為預先安裝 Python 的 Playwright-ready docker 映像檔。- Playwright 現在透過 locator.set_input_files() API 支援大型檔案上傳 (數百 MB)。
瀏覽器版本
- Chromium 101.0.4951.26
- Mozilla Firefox 98.0.2
- WebKit 15.4
此版本也已針對下列穩定通道進行測試
- Google Chrome 100
- Microsoft Edge 100
版本 1.20
重點
- 方法 page.screenshot()、locator.screenshot() 和 element_handle.screenshot() 的新選項
- 選項
animations: "disabled"
將所有 CSS 動畫和轉場倒轉到一致的狀態 - 選項
mask: Locator[]
遮罩給定的元素,並以粉紅色#FF00FF
方框覆蓋它們。
- 選項
- 追蹤檢視器 現在顯示 API 測試請求。
- locator.highlight() 以視覺方式顯示元素,以便於除錯。
公告
- 我們現在推出指定的 Python docker 映像檔
mcr.microsoft.com/playwright/python
。如果您使用 Python,請切換到它。這是最後一個在我們的 javascriptmcr.microsoft.com/playwright
docker 映像檔中包含 Python 的版本。 - v1.20 是最後一個接收 macOS 10.15 Catalina WebKit 更新的版本。請更新 macOS 以繼續使用最新和最棒的 WebKit!
瀏覽器版本
- Chromium 101.0.4921.0
- Mozilla Firefox 97.0.1
- WebKit 15.4
此版本也已針對下列穩定通道進行測試
- Google Chrome 99
- Microsoft Edge 99
版本 1.19
重點
-
Locator 現在支援
has
選項,以確保它在內部包含另一個 locator- 同步
- 非同步
page.locator("article", has=page.locator(".highlight")).click()
await page.locator("article", has=page.locator(".highlight")).click()
請在 locator 文件 中閱讀更多資訊
-
新的 locator.page
-
page.screenshot() 和 locator.screenshot() 現在自動隱藏閃爍的游標
-
Playwright Codegen 現在產生 locator 和 frame locator
瀏覽器版本
- Chromium 100.0.4863.0
- Mozilla Firefox 96.0.1
- WebKit 15.4
此版本也已針對下列穩定通道進行測試
- Google Chrome 98
- Microsoft Edge 98
版本 1.18
API 測試
適用於 Python 1.18 的 Playwright 引入了新的 API 測試,讓您可以直接從 Python 將請求傳送到伺服器!現在您可以
- 測試您的伺服器 API
- 在測試中造訪網路應用程式之前,準備伺服器端狀態
- 在瀏覽器中執行某些動作後,驗證伺服器端後置條件
若要代表 Playwright Page 執行請求,請使用新的 page.request API
- 同步
- 非同步
# Do a GET request on behalf of page
res = page.request.get("http://example.com/foo.json")
# Do a GET request on behalf of page
res = await page.request.get("http://example.com/foo.json")
請在 我們的文件 中閱讀更多資訊。
Web-First 斷言
適用於 Python 1.18 的 Playwright 引入了 Web-First 斷言。
考慮以下範例
- 同步
- 非同步
from playwright.sync_api import Page, expect
def test_status_becomes_submitted(page: Page) -> None:
# ..
page.locator("#submit-button").click()
expect(page.locator(".status")).to_have_text("Submitted")
from playwright.async_api import Page, expect
async def test_status_becomes_submitted(page: Page) -> None:
# ..
await page.locator("#submit-button").click()
await expect(page.locator(".status")).to_have_text("Submitted")
Playwright 將重新測試具有選取器 .status
的節點,直到擷取的節點具有 "Submitted"
文字。它將重新擷取節點並重複檢查,直到滿足條件或達到逾時時間。您可以將此逾時時間作為選項傳遞。
請在 我們的文件 中閱讀更多資訊。
Locator 改善
-
現在可以選擇性地依據文字內容篩選每個 locator
- 同步
- 非同步
page.locator("li", has_text="my item").locator("button").click()
await page.locator("li", has_text="my item").locator("button").click()
請在 locator 文件 中閱讀更多資訊
新 API 和變更
accept_downloads
選項現在預設為True
。sources
選項,用於將來源嵌入追蹤中。
瀏覽器版本
- Chromium 99.0.4812.0
- Mozilla Firefox 95.0
- WebKit 15.4
此版本也已針對下列穩定通道進行測試
- Google Chrome 97
- Microsoft Edge 97
版本 1.17
Frame Locator
Playwright 1.17 引入了 frame locator - 頁面上 iframe 的 locator。Frame locator 擷取足以擷取 iframe
然後在該 iframe 中定位元素的邏輯。Frame locator 預設為嚴格模式,將等待 iframe
出現,並且可以用於 Web-First 斷言。
可以使用 page.frame_locator() 或 locator.frame_locator() 方法建立 Frame locator。
locator = page.frame_locator("my-frame").locator("text=Submit")
locator.click()
請在 我們的文件 中閱讀更多資訊。
追蹤檢視器更新
Playwright 追蹤檢視器現在線上可用,網址為 https://trace.playwright.dev!只需拖放您的 trace.zip
檔案即可檢查其內容。
注意:追蹤檔案不會上傳到任何地方;trace.playwright.dev 是一個 漸進式 Web 應用程式,可在本機處理追蹤。
- Playwright 測試追蹤現在預設包含來源 (可以使用追蹤選項關閉這些來源)
- 追蹤檢視器現在顯示測試名稱
- 具有瀏覽器詳細資訊的新追蹤中繼資料標籤
- 快照現在具有 URL 列
HTML 報告更新
- HTML 報告現在支援動態篩選
- 報告現在是單一靜態 HTML 檔案,可以透過電子郵件或作為 slack 附件傳送。
Ubuntu ARM64 支援 + 更多
-
Playwright 現在支援 Ubuntu 20.04 ARM64。您現在可以在 Apple M1 和 Raspberry Pi 上的 Docker 內部執行 Playwright 測試。
-
您現在可以使用 Playwright 在 Linux 上安裝穩定版本的 Edge
npx playwright install msedge
新 API
版本 1.16
🎭 Playwright 程式庫
locator.wait_for
等待 locator 解析為具有給定狀態的單一元素。預設為 state: 'visible'
。
在處理清單時特別方便
order_sent = page.locator("#order-sent")
order_sent.wait_for()
請在 locator.wait_for() 中閱讀更多資訊。
Arm64 的 Docker 支援
Playwright Docker 映像檔現在已針對 Arm64 發布,因此可以在 Apple Silicon 上使用。
請在 Docker 整合 中閱讀更多資訊。
🎭 Playwright 追蹤檢視器
- 使用
npx playwright show-trace
執行追蹤檢視器,並將追蹤檔案拖放到追蹤檢視器 PWA - 動作目標的視覺歸因更佳
請在 追蹤檢視器 中閱讀更多資訊。
瀏覽器版本
- Chromium 97.0.4666.0
- Mozilla Firefox 93.0
- WebKit 15.4
此版本的 Playwright 也針對以下穩定通道進行了測試
- Google Chrome 94
- Microsoft Edge 94
版本 1.15
🖱️ 滑鼠滾輪
透過使用 mouse.wheel(),您現在可以垂直或水平滾動。
📜 新的標頭 API
先前無法取得回應的多個標頭值。現在可以做到這一點,並且提供了其他輔助函式
- request.all_headers()
- request.headers_array()
- request.header_value()
- response.all_headers()
- response.headers_array()
- response.header_value()
- response.header_values()
🌈 強制色彩模擬
現在可以透過在 browser.new_context() 中傳遞或呼叫 page.emulate_media() 來模擬 forced-colors
CSS 媒體功能。
新 API
- page.route() 接受新的
times
選項,以指定應比對此路由的次數。 - 引入了 page.set_checked() 和 locator.set_checked(),以設定核取方塊的核取狀態。
- request.sizes() 傳回給定 http 請求的資源大小資訊。
- tracing.start_chunk() - 啟動新的追蹤區塊。
- tracing.stop_chunk() - 停止新的追蹤區塊。
瀏覽器版本
- Chromium 96.0.4641.0
- Mozilla Firefox 92.0
- WebKit 15.0
版本 1.14
⚡️ 新的「嚴格」模式
選取器不明確是自動化測試中的常見問題。「嚴格」模式確保您的選取器指向單一元素,否則會擲回錯誤。
將 strict=true
傳遞到您的動作呼叫中以選擇加入。
# This will throw if you have more than one button!
page.click("button", strict=True)
📍 新的 Locator API
Locator 代表頁面上元素 (或多個元素) 的檢視。它擷取足以在任何給定時刻擷取元素的邏輯。
Locator 和 ElementHandle 之間的差異在於後者指向特定元素,而 Locator 擷取如何擷取該元素的邏輯。
此外,locator 預設為「嚴格」模式!
locator = page.locator("button")
locator.click()
請在文件中了解更多資訊。
🧩 實驗性 React 和 Vue 選取器引擎
React 和 Vue 選取器允許依其元件名稱和/或屬性值選取元素。語法與 屬性選取器 非常相似,並支援所有屬性選取器運算子。
page.locator("_react=SubmitButton[enabled=true]").click()
page.locator("_vue=submit-button[enabled=true]").click()
請在 react 選取器文件 和 vue 選取器文件 中了解更多資訊。
✨ 新的 nth
和 visible
選取器引擎
# select the first button among all buttons
button.click("button >> nth=0")
# or if you are using locators, you can use first, nth() and last
page.locator("button").first.click()
# click a visible button
button.click("button >> visible=true")
瀏覽器版本
- Chromium 94.0.4595.0
- Mozilla Firefox 91.0
- WebKit 15.0
版本 1.13
Playwright
- 🖖 程式化的拖放支援,透過 page.drag_and_drop() API。
- 🔎 增強的 HAR,具有請求和回應的本文大小。透過 browser.new_context() 中的
recordHar
選項使用。
工具
- Playwright 追蹤檢視器現在顯示參數、傳回值和
console.log()
呼叫。
全新和修訂的指南
瀏覽器版本
- Chromium 93.0.4576.0
- Mozilla Firefox 90.0
- WebKit 14.2
全新 Playwright API
browser.new_context()
和browser.new_page()
中的全新baseURL
選項response.security_details()
和response.server_addr()
page.drag_and_drop()
和frame.drag_and_drop()
download.cancel()
page.input_value()
、frame.input_value()
和element_handle.input_value()
page.fill()
、frame.fill()
和element_handle.fill()
中的全新force
選項page.select_option()
、frame.select_option()
和element_handle.select_option()
中的全新force
選項
版本 1.12
🧟♂️ 隆重介紹 Playwright Trace 查看器
Playwright Trace 查看器 是一款全新的 GUI 工具,可協助您在腳本執行後探索錄製的 Playwright 追蹤。Playwright 追蹤讓您可以檢查
- 每個 Playwright 動作前後的頁面 DOM
- 每個 Playwright 動作前後的頁面渲染
- 腳本執行期間的瀏覽器網路
追蹤是使用全新的 browser_context.tracing
API 錄製的
browser = chromium.launch()
context = browser.new_context()
# Start tracing before creating / navigating a page.
context.tracing.start(screenshots=True, snapshots=True)
page.goto("https://playwright.dev.org.tw")
# Stop tracing and export it into a zip archive.
context.tracing.stop(path = "trace.zip")
追蹤稍後使用 Playwright CLI 檢查
playwright show-trace trace.zip
這將開啟以下 GUI
👉 在 追蹤查看器文件 中閱讀更多資訊。
瀏覽器版本
- Chromium 93.0.4530.0
- Mozilla Firefox 89.0
- WebKit 14.2
此版本的 Playwright 也針對以下穩定通道進行了測試
- Google Chrome 91
- Microsoft Edge 91
新 API
page.emulate_media()
、browser_type.launch_persistent_context()
、browser.new_context()
和browser.new_page()
中的reducedMotion
選項browser_context.on("request")
browser_context.on("requestfailed")
browser_context.on("requestfinished")
browser_context.on("response")
browser_type.launch()
和browser_type.launch_persistent_context()
中的tracesDir
選項- 全新
browser_context.tracing
API 命名空間 - 全新
download.page
方法
版本 1.11
🎥 全新影片:Playwright:適用於現代 Web 的全新測試自動化框架 (投影片)
- 我們談論了 Playwright
- 展示了幕後的工程工作
- 使用新功能進行了現場演示 ✨
- 特別感謝 applitools 主辦本次活動並邀請我們!
瀏覽器版本
- Chromium 92.0.4498.0
- Mozilla Firefox 89.0b6
- WebKit 14.2
新 API
- 在
page.expect_request()
等方法中支援 async predicates - 全新模擬裝置:Galaxy S8、Galaxy S9+、Galaxy Tab S4、Pixel 3、Pixel 4
- 新方法
page.wait_for_url()
以等待導覽至 URLvideo.delete()
和video.save_as()
以管理螢幕錄製
- 新選項
browser.new_context()
方法中的screen
選項,用於模擬window.screen
尺寸page.check()
和page.uncheck()
方法中的position
選項page.check()
、page.uncheck()
、page.click()
、page.dblclick()
、page.hover()
和page.tap()
中的trial
選項,用於試執行動作
版本 1.10
- Playwright for Java v1.10 現在穩定了!
- 使用全新頻道 API,針對 Google Chrome 和 Microsoft Edge 穩定通道執行 Playwright。
- Chromium 螢幕截圖在 Mac 和 Windows 上速度很快。
捆綁的瀏覽器版本
- Chromium 90.0.4430.0
- Mozilla Firefox 87.0b10
- WebKit 14.2
此版本的 Playwright 也針對以下穩定通道進行了測試
- Google Chrome 89
- Microsoft Edge 89
新 API
browser_type.launch()
現在接受全新的'channel'
選項。在我們的文件中閱讀更多資訊。
版本 1.9
- Playwright Inspector 工具 是一款全新的 GUI 工具,用於編寫和偵錯您的測試。
- Playwright 腳本的逐行偵錯,具有播放、暫停和逐步執行功能。
- 透過錄製使用者動作來編寫新腳本。
- 透過將滑鼠懸停在元素上,為您的腳本產生元素選取器。
- 設定
PWDEBUG=1
環境變數以啟動 Inspector 工具
- 使用標頭模式中的
page.pause()
暫停腳本執行。暫停頁面會啟動 Playwright Inspector 工具 以進行偵錯。 - CSS 選取器全新 has-text 偽類別。
:has-text("example")
比對任何在內部某處(可能在子元素或後代元素中)包含"example"
的元素。請參閱更多範例。 - 除非設定了
dialog
事件的接聽器,否則頁面對話方塊現在會在執行期間自動關閉。深入瞭解這方面資訊。 - Playwright for Python 現在穩定了,具有慣用的蛇紋命名法 API 和預先建置的 Docker 映像,可在 CI/CD 中執行測試。
瀏覽器版本
- Chromium 90.0.4421.0
- Mozilla Firefox 86.0b10
- WebKit 14.1
新 API
版本 1.8
-
使用
:left-of()
、:right-of()
、:above()
和:below()
根據版面配置選取元素。 -
Playwright 現在包含命令列介面,即之前的 playwright-cli。
playwright --help
-
page.select_option()
現在會等待選項出現。 -
用於判斷提示元素狀態的新方法,例如
page.is_editable()
。
新 API
element_handle.is_checked()
.element_handle.is_disabled()
.element_handle.is_editable()
.element_handle.is_enabled()
.element_handle.is_hidden()
.element_handle.is_visible()
.page.is_checked()
.page.is_disabled()
.page.is_editable()
.page.is_enabled()
.page.is_hidden()
.page.is_visible()
.element_handle.wait_for_element_state()
中的新選項'editable'
。
瀏覽器版本
- Chromium 90.0.4392.0
- Mozilla Firefox 85.0b5
- WebKit 14.1
版本 1.7
- 全新 Java SDK:Playwright for Java 現在與 JavaScript、Python 和 .NET 繫結 並駕齊驅。
- 瀏覽器儲存 API:全新的便利 API,可儲存和載入瀏覽器儲存狀態(Cookie、本機儲存),以簡化具有驗證的自動化案例。
- 全新 CSS 選取器:我們聽取了您對更彈性選取器的意見反應,並徹底修改了選取器實作。Playwright 1.7 引入了 全新 CSS 擴充功能,並且即將推出更多功能。
- 全新網站:playwright.dev 的文件網站已更新,現在使用 Docusaurus 建置。
- 支援 Apple Silicon:適用於 WebKit 和 Chromium 的 Playwright 瀏覽器二進位檔現在是為 Apple Silicon 建置的。
新 API
browser_context.storage_state()
取得目前狀態以供日後重複使用。browser.new_context()
和browser.new_page()
中的storageState
選項,用於設定瀏覽器內容狀態。
瀏覽器版本
- Chromium 89.0.4344.0
- Mozilla Firefox 84.0b9
- WebKit 14.1