发布说明
版本 1.27
定位器
有了这些新的 API,编写定位器将成为一种乐趣:
- page.get_by_text(text, **kwargs) 通过文本内容定位。
- page.get_by_role(role, **kwargs) 通过 ARIA role、ARIA attributes 和 accessible name 定位。
- page.get_by_label(text, **kwargs) 通过关联标签的文本定位表单控件。
- page.get_by_test_id(test_id) 根据
data-testid属性(可以配置其他属性)定位元素。 - page.get_by_placeholder(text, **kwargs) 通过占位符定位输入框。
- page.get_by_alt_text(text, **kwargs) 通过替代文本定位元素,通常是图像。
- page.get_by_title(text, **kwargs) 通过标题定位元素。
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(name, value, **kwargs) 使用空值不再匹配缺失的属性。例如,当
button没有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(**kwargs) 的新选项
enabled。 - expect(locator).to_have_text(expected, **kwargs) 现在可以穿透打开的 shadow roots。
- expect(locator).to_be_editable(**kwargs) 的新选项
editable。 - expect(locator).to_be_visible(**kwargs) 的新选项
visible。
其他亮点
- api_request_context.get(url, **kwargs) 和其他方法的新选项
max_redirects以限制重定向计数。 - 现在支持 Python 3.11。
行为变更
许多 Playwright API 已经支持 wait_until: "domcontentloaded" 选项。例如:
page.goto("https://playwright.dev", wait_until="domcontentloaded")
在 1.26 之前,这将等待所有 iframe 触发 DOMContentLoaded 事件。
为了与 Web 规范保持一致,'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.28.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 18.04 | 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(har, **kwargs) 或 browser_context.route_from_har(har, **kwargs) 从 HAR 文件提供匹配的响应:
context.route_from_har("github.har.zip")
await context.route_from_har("github.har.zip")
在 我们的文档 中阅读更多内容。
高级路由
您现在可以使用 route.fallback(**kwargs) 将路由推迟到其他处理程序。
考虑以下示例:
# 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(har, **kwargs) 和 browser_context.route_from_har(har, **kwargs) 也参与路由,并且可以被推迟。
Web-First 断言更新
- 新方法 expect(locator).to_have_values(values, **kwargs) 断言
<select multiple>元素的所有选定值。 - 方法 expect(locator).to_contain_text(expected, **kwargs) 和 expect(locator).to_have_text(expected, **kwargs) 现在接受
ignore_case选项。
其他
如果有 service worker 妨碍您,您现在可以使用新的上下文选项
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
亮点
Role selectors 允许通过 ARIA role、ARIA attributes 和 accessible name 选择元素。
# Click a button with accessible name "log in"
page.locator("role=button[name='log in']").click()在 我们的文档 中阅读更多内容。
新的 locator.filter(**kwargs) API 用于过滤现有的 locator。
buttons = page.locator("role=button")
# ...
submit_button = buttons.filter(has_text="Submit")
submit_button.click()Codegen 现在支持生成 Pytest 测试

版本 1.21
亮点
新的 role selectors 允许通过 ARIA role、ARIA attributes 和 accessible name 选择元素。
# 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(**kwargs) 中的新
scale选项用于更小尺寸的截图。page.screenshot(**kwargs) 中的新
caret选项用于控制文本插入符号。默认为"hide"。
行为变更
mcr.microsoft.com/playwrightdocker 镜像不再包含 Python。请使用mcr.microsoft.com/playwright/python作为预装了 Python 的 Playwright-ready docker 镜像。- Playwright 现在通过 locator.set_input_files(files, **kwargs) 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(**kwargs)、locator.screenshot(**kwargs) 和 element_handle.screenshot(**kwargs) 的新选项:
- 选项
animations: "disabled"将所有 CSS 动画和过渡回退到一致状态 - 选项
mask: Locator[]遮罩给定元素,用粉红色#FF00FF框覆盖它们。
- 选项
- Trace Viewer 现在显示 API 测试请求。
- locator.highlight() 直观地显示元素以便于调试。
公告
- 我们现在发布指定的 Python docker 镜像
mcr.microsoft.com/playwright/python。如果您使用 Python,请切换到它。这是最后一个在我们的 javascriptmcr.microsoft.com/playwrightdocker 镜像中包含 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(**kwargs) 和 locator.screenshot(**kwargs) 现在自动隐藏闪烁的插入符号
Playwright Codegen 现在生成 locators 和 frame locators
浏览器版本
- Chromium 100.0.4863.0
- Mozilla Firefox 96.0.1
- WebKit 15.4
此版本还针对以下稳定频道进行了测试:
- Google Chrome 98
- Microsoft Edge 98
版本 1.18
API 测试
Playwright for Python 1.18 引入了新的 API 测试,让您可以直接从 Python 向服务器发送请求!现在您可以:
- 测试您的服务器 API
- 在访问测试中的 Web 应用程序之前准备服务器端状态
- 在浏览器中运行某些操作后验证服务器端后置条件
要代表 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 断言
Playwright for Python 1.18 引入了 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选项将源代码嵌入到 traces 中。
浏览器版本
- Chromium 99.0.4812.0
- Mozilla Firefox 95.0
- WebKit 15.4
此版本还针对以下稳定频道进行了测试:
- Google Chrome 97
- Microsoft Edge 97
版本 1.17
Frame Locators
Playwright 1.17 引入了 frame locators - 页面上 iframe 的定位器。Frame locators 捕获足以检索 iframe 然后在该 iframe 中定位元素的逻辑。Frame locators 默认是严格的,将等待 iframe 出现,并且可以在 Web-First 断言中使用。

Frame locators 可以使用 page.frame_locator(selector) 或 locator.frame_locator(selector) 方法创建。
locator = page.frame_locator("my-frame").locator("text=Submit")
locator.click()
在 我们的文档 中阅读更多内容。
Trace Viewer 更新
Playwright Trace Viewer 现在可在 https://trace.playwright.dev 在线使用!只需拖放您的 trace.zip 文件即可检查其内容。
注意:trace 文件不会上传到任何地方;trace.playwright.dev 是一个 渐进式 Web 应用程序,在本地处理 traces。
- Playwright Test traces 现在默认包含源代码(可以通过 tracing 选项关闭)
- Trace Viewer 现在显示测试名称
- 带有浏览器详细信息的新 trace 元数据选项卡
- 快照现在有 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(**kwargs) 的信息。
Docker 支持 Arm64
Playwright Docker 镜像现在已针对 Arm64 发布,因此可以在 Apple Silicon 上使用。
阅读更多关于 Docker 集成 的信息。
🎭 Playwright Trace Viewer
- 使用
npx playwright show-trace运行 trace viewer 并将 trace 文件拖放到 trace viewer PWA - 更好的操作目标视觉归因
阅读更多关于 Trace Viewer 的信息。
浏览器版本
- Chromium 97.0.4666.0
- Mozilla Firefox 93.0
- WebKit 15.4
此版本的 Playwright 还针对以下稳定频道进行了测试:
- Google Chrome 94
- Microsoft Edge 94
版本 1.15
🖱️ 鼠标滚轮
通过使用 Page.mouse.wheel,您现在可以垂直或水平滚动。
📜 新的 Headers API
以前无法获取响应的多个标头值。现在这是可能的,并且提供了额外的辅助函数:
- Request.all_headers()
- Request.headers_array()
- Request.header_value(name: str)
- Response.all_headers()
- Response.headers_array()
- Response.header_value(name: str)
- Response.header_values(name: str)
🌈 强制颜色模拟
现在可以通过在 上下文选项 中传递它或调用 Page.emulate_media() 来模拟 forced-colors CSS 媒体功能。
新 API
- Page.route() 接受新的
times选项以指定此路由应匹配多少次。 - 引入了 Page.set_checked(selector: str, checked: bool) 和 Locator.set_checked(selector: str, checked: bool) 来设置复选框的选中状态。
- Request.sizes() 返回给定 http 请求的资源大小信息。
- BrowserContext.tracing.start_chunk() - 开始一个新的 trace 块。
- BrowserContext.tracing.stop_chunk() - 停止一个新的 trace 块。
浏览器版本
- Chromium 96.0.4641.0
- Mozilla Firefox 92.0
- WebKit 15.0
版本 1.14
⚡️ 新的 "strict" 模式
选择器歧义是自动化测试中的常见问题。"strict" 模式 确保您的选择器指向单个元素,否则会抛出异常。
将 strict=true 传递到您的操作调用中以选择加入。
# This will throw if you have more than one button!
page.click("button", strict=True)
📍 新的 Locators API
Locator 表示页面上元素及其视图。它捕获足以在任何给定时刻检索元素的逻辑。
Locator 和 ElementHandle 之间的区别在于,后者指向特定元素,而 Locator 捕获如何检索该元素的逻辑。
此外,locators 默认是 "strict" 的!
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(source, target, **kwargs) API 支持 🖖 编程拖放。
- 🔎 增强的 HAR 包含请求和响应的主体大小。通过 browser.new_context(**kwargs) 中的
recordHar选项使用。
工具
- Playwright Trace Viewer 现在显示参数、返回值和
console.log()调用。
新的和改进的指南
浏览器版本
- Chromium 93.0.4576.0
- Mozilla Firefox 90.0
- WebKit 14.2
新 Playwright API
- browser.new_context(**kwargs) 和 browser.new_page(**kwargs) 中的新
baseURL选项 - response.security_details() 和 response.server_addr()
- page.drag_and_drop(source, target, **kwargs) 和 frame.drag_and_drop(source, target, **kwargs)
- download.cancel()
- page.input_value(selector, **kwargs)、frame.input_value(selector, **kwargs) 和 element_handle.input_value(**kwargs)
- page.fill(selector, value, **kwargs)、frame.fill(selector, value, **kwargs) 和 element_handle.fill(value, **kwargs) 中的新
force选项 - page.select_option(selector, **kwargs)、frame.select_option(selector, **kwargs) 和 element_handle.select_option(**kwargs) 中的新
force选项
版本 1.12
🧟♂️ 介绍 Playwright Trace Viewer
Playwright Trace Viewer 是一个新的 GUI 工具,可帮助在脚本运行后探索记录的 Playwright trace。Playwright trace 让您可以检查:
- 每个 Playwright 操作前后的页面 DOM
- 每个 Playwright 操作前后的页面渲染
- 脚本执行期间的浏览器网络
使用新的 browser_context.tracing API 记录 Traces:
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")
# Stop tracing and export it into a zip archive.
context.tracing.stop(path = "trace.zip")
稍后使用 Playwright CLI 检查 Traces:
playwright show-trace trace.zip
这将打开以下 GUI:

👉 在 trace viewer 文档 中阅读更多内容。
浏览器版本
- Chromium 93.0.4530.0
- Mozilla Firefox 89.0
- WebKit 14.2
此版本的 Playwright 还针对以下稳定频道进行了测试:
- Google Chrome 91
- Microsoft Edge 91
新 API
- page.emulate_media(**kwargs)、browser_type.launch_persistent_context(user_data_dir, **kwargs)、browser.new_context(**kwargs) 和 browser.new_page(**kwargs) 中的
reducedMotion选项 - browser_context.on("request")
- browser_context.on("requestfailed")
- browser_context.on("requestfinished")
- browser_context.on("response")
- browser_type.launch(**kwargs) 和 browser_type.launch_persistent_context(user_data_dir, **kwargs) 中的
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(url_or_predicate, **kwargs) 等方法中支持 异步谓词
- 新的 模拟设备:Galaxy S8, Galaxy S9+, Galaxy Tab S4, Pixel 3, Pixel 4
- 新方法:
- page.wait_for_url(url, **kwargs) 等待导航到 URL
- video.delete() 和 video.save_as(path) 管理屏幕录制
- 新选项:
- browser.new_context(**kwargs) 方法中的
screen选项以模拟window.screen尺寸 - page.check(selector, **kwargs) 和 page.uncheck(selector, **kwargs) 方法中的
position选项 - page.check(selector, **kwargs)、page.uncheck(selector, **kwargs)、page.click(selector, **kwargs)、page.dblclick(selector, **kwargs)、page.hover(selector, **kwargs) 和 page.tap(selector, **kwargs) 中的
trial选项以试运行操作
- browser.new_context(**kwargs) 方法中的
版本 1.10
- Playwright for Java v1.10 现已稳定!
- 使用 新 channels 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
browserType.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 现已稳定,具有惯用的 snake case 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 --helppage.select_option(selector, **kwargs) 现在等待选项出现。
用于 断言元素状态 的新方法,如 page.is_editable(selector, **kwargs)。
新 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(selector, **kwargs).
- page.is_disabled(selector, **kwargs).
- page.is_editable(selector, **kwargs).
- page.is_enabled(selector, **kwargs).
- page.is_hidden(selector, **kwargs).
- page.is_visible(selector, **kwargs).
- element_handle.wait_for_element_state(state, **kwargs) 中的新选项
'editable'。
浏览器版本
- Chromium 90.0.4392.0
- Mozilla Firefox 85.0b5
- WebKit 14.1
版本 1.7
- 新 Java SDK:Playwright for Java 现在与 JavaScript、Python 和 .NET bindings 相当。
- 浏览器存储 API:新的便捷 API 用于保存和加载浏览器存储状态(cookie、本地存储),以简化带身份验证的自动化场景。
- 新 CSS 选择器:我们听到了您关于更灵活选择器的反馈,并改进了选择器实现。Playwright 1.7 引入了 新 CSS 扩展,更多内容即将推出。
- 新网站:playwright.dev 上的文档网站已更新,现在使用 Docusaurus 构建。
- 支持 Apple Silicon:WebKit 和 Chromium 的 Playwright 浏览器二进制文件现在针对 Apple Silicon 构建。
新 API
- browser_context.storage_state(**kwargs) 获取当前状态以供以后重用。
- browser.new_context(**kwargs) 和 browser.new_page(**kwargs) 中的
storageState选项以设置浏览器上下文状态。
浏览器版本
- Chromium 89.0.4344.0
- Mozilla Firefox 84.0b9
- WebKit 14.1