跳到主要内容

Browser

通过 browser_type.launch() 创建一个浏览器(Browser)。以下是使用 Browser 创建 Page 的示例:

from playwright.sync_api import sync_playwright, Playwright

def run(playwright: Playwright):
firefox = playwright.firefox
browser = firefox.launch()
page = browser.new_page()
page.goto("https://example.com")
browser.close()

with sync_playwright() as playwright:
run(playwright)

方法

close

v1.9 之前添加 browser.close

如果该浏览器是通过 browser_type.launch() 获取的,则会关闭浏览器及其所有页面(如果有打开的页面)。

如果该浏览器是通过连接方式获取的,则会清除属于该浏览器的所有已创建上下文,并断开与浏览器服务器的连接。

备注

这类似于强制退出浏览器。要优雅地关闭页面并确保能收到页面关闭事件,请在调用 browser.close() 之前,对你通过 browser.new_context() 显式创建的所有 BrowserContext 实例调用 browser_context.close()

Browser 对象本身会被视为已销毁,不能再被使用。

用法

browser.close()
browser.close(**kwargs)

参数

  • reason str (可选) v1.40 新增#

    关闭浏览器时报告给被中断操作的原因。

返回值


new_browser_cdp_session

v1.11 新增 browser.new_browser_cdp_session
备注

CDP 会话仅支持 Chromium 内核的浏览器。

返回新创建的浏览器会话。

用法

browser.new_browser_cdp_session()

返回值


new_context

v1.9 之前添加 browser.new_context

创建一个新的浏览器上下文。它不会与其他浏览器上下文共享 cookies/缓存。

备注

如果直接使用此方法创建 BrowserContext,最佳实践是在代码使用完 BrowserContext 后,并且在调用 browser.close() 之前,显式调用 browser_context.close() 关闭返回的上下文。这样可以确保 context 被优雅地关闭,所有的产物(如 HAR 和视频)都能被完整地刷新和保存。

用法

browser = playwright.firefox.launch() # 或 "chromium" 或 "webkit"。
# 创建一个新的无痕浏览器上下文。
context = browser.new_context()
# 在全新的上下文中创建一个新页面。
page = context.new_page()
page.goto("https://example.com")

# 优雅地关闭所有内容
context.close()
browser.close()

参数

  • accept_downloads bool (可选)#

    是否自动下载所有附件。默认为 true,即所有下载都会被接受。

  • base_url str (可选)#

    当使用 page.goto()page.route()page.wait_for_url()page.expect_request()page.expect_response() 时,会使用 URL() 构造函数来拼接对应的 URL。默认未设置。示例:

    • baseURL: http://localhost:3000,跳转到 /bar.html,结果为 http://localhost:3000/bar.html
    • baseURL: http://localhost:3000/foo/,跳转到 ./bar.html,结果为 http://localhost:3000/foo/bar.html
    • baseURL: http://localhost:3000/foo(无斜杠),跳转到 ./bar.html,结果为 http://localhost:3000/bar.html
  • bypass_csp bool (可选)#

    是否绕过页面的 Content-Security-Policy。默认为 false

  • client_certificates List[Dict] (可选) 1.46 版本新增#

    • origin str

      证书有效的精确 origin。origin 包含 https 协议、主机名和可选端口。

    • certPath Union[str, pathlib.Path] (可选)

      证书 PEM 格式文件的路径。

    • cert bytes (可选)

      证书 PEM 格式的直接值。

    • keyPath Union[str, pathlib.Path] (可选)

      私钥 PEM 格式文件的路径。

    • key bytes (可选)

      私钥 PEM 格式的直接值。

    • pfxPath Union[str, pathlib.Path] (可选)

      PFX 或 PKCS12 编码的私钥和证书链文件路径。

    • pfx bytes (可选)

      PFX 或 PKCS12 编码的私钥和证书链的直接值。

    • passphrase str (可选)

      私钥(PEM 或 PFX)的密码。

    TLS 客户端认证允许服务器请求客户端证书并进行验证。

    详细说明

    要使用的客户端证书数组。每个证书对象必须同时包含 certPathkeyPath,或仅包含一个 pfxPath,或者使用它们对应的直接值(certkey,或 pfx)。如果证书已加密,可以选择性地提供 passphrase 属性。如果证书只对特定 origin 有效,origin 属性需要与请求的 origin 完全匹配。

    备注

    在 macOS 上使用 WebKit 时,访问 localhost 不会自动使用客户端证书。你可以将 localhost 替换为 local.playwright 以解决此问题。

  • color_scheme "light" | "dark" | "no-preference" | "null" (可选)#

    模拟 prefers-colors-scheme 媒体特性,支持的值有 'light''dark'。详见 page.emulate_media()。传入 'null' 可重置为系统默认。默认值为 'light'

  • contrast "no-preference" | "more" | "null" (可选)#

    模拟 'prefers-contrast' 媒体特性,支持的值有 'no-preference''more'。详见 page.emulate_media()。传入 'null' 可重置为系统默认。默认值为 'no-preference'

  • device_scale_factor float (可选)#

    指定设备像素比(可理解为 dpr)。默认值为 1。了解更多关于设备像素比模拟

  • extra_http_headers Dict[str, str] (可选)#

    包含每个请求要发送的额外 HTTP 头的对象。默认无。

  • forced_colors "active" | "none" | "null" (可选)#

    模拟 'forced-colors' 媒体特性,支持的值有 'active''none'。详见 page.emulate_media()。传入 'null' 可重置为系统默认。默认值为 'none'

  • geolocation Dict (可选)#

    • latitude float

      纬度,范围为 -90 到 90。

    • longitude float

      经度,范围为 -180 到 180。

    • accuracy float (可选)

      非负精度值。默认值为 0

  • has_touch bool (可选)#

    指定视口是否支持触摸事件。默认值为 false。了解更多关于移动端模拟

  • http_credentials Dict (可选)#

    • username str

    • password str

    • origin str (可选)

      限定仅在特定 origin(scheme://host:port)发送 http 凭据。

    • send "unauthorized" | "always" (可选)

      该选项仅适用于通过对应 APIRequestContext 发送的请求,不影响浏览器发出的请求。'always' - 每个 API 请求都会携带带有基本认证凭据的 Authorization 头。'unauthorized' - 仅在收到带有 WWW-Authenticate 头的 401(未授权)响应时才发送凭据。默认值为 'unauthorized'

    HTTP 认证凭据。如果未指定 origin,则用户名和密码会在收到未授权响应时发送给任意服务器。

  • ignore_https_errors bool (可选)#

    发送网络请求时是否忽略 HTTPS 错误。默认值为 false

  • is_mobile bool (可选)#

    是否考虑 meta viewport 标签并启用触摸事件。isMobile 是设备的一部分,通常无需手动设置。默认值为 false,Firefox 不支持。了解更多关于移动端模拟

  • java_script_enabled bool (可选)#

    是否在上下文中启用 JavaScript。默认值为 true。了解更多关于禁用 JavaScript

  • locale str (可选)#

    指定用户区域设置,例如 en-GBde-DE 等。区域设置会影响 navigator.language 的值、Accept-Language 请求头以及数字和日期格式规则。默认使用系统区域设置。了解更多关于模拟指南

  • no_viewport bool (可选)#

    不强制固定视口,允许在有界面模式下调整窗口大小。

  • offline bool (可选)#

    是否模拟网络离线。默认值为 false。了解更多关于网络模拟

  • permissions List[str] (可选)#

    要授予该上下文所有页面的权限列表。详见 browser_context.grant_permissions()。默认无。

  • proxy Dict (可选)#

    • server str

      所有请求使用的代理。支持 HTTP 和 SOCKS 代理,例如 http://myproxy.com:3128socks5://myproxy.com:3128。简写 myproxy.com:3128 视为 HTTP 代理。

    • bypass str (可选)

      可选,逗号分隔的域名列表,指定哪些域名不走代理,例如 ".com, chromium.org, .domain.com"

    • username str (可选)

      如果 HTTP 代理需要认证,使用的用户名。

    • password str (可选)

      如果 HTTP 代理需要认证,使用的密码。

    该上下文使用的网络代理设置。默认无。

  • record_har_content "omit" | "embed" | "attach" (可选)#

    控制资源内容管理的可选设置。如果指定为 omit,则不会保存内容。如果指定为 attach,资源会作为单独文件保存,并与 HAR 文件一起归档。默认值为 embed,即内容内嵌在 HAR 文件中,符合 HAR 规范。

  • record_har_mode "full" | "minimal" (可选)#

    设置为 minimal 时,仅记录 HAR 回放所需的最小信息,不包含大小、时序、页面、Cookie、安全等信息。默认值为 full

  • record_har_omit_content bool (可选)#

    控制是否在 HAR 中省略请求内容的可选设置。默认值为 false

  • record_har_path Union[str, pathlib.Path] (可选)#

    为所有页面启用 HAR 录制,并将其保存到指定的 HAR 文件。如果未指定,则不录制 HAR。请确保调用 browser_context.close() 以保存 HAR 文件。

  • record_har_url_filter str | Pattern (可选)#

  • record_video_dir Union[str, pathlib.Path] (可选)#

    为所有页面启用视频录制,并保存到指定目录。如果未指定,则不录制视频。请确保调用 browser_context.close() 以保存视频。

  • record_video_size Dict (可选)#

    • width int

      视频帧宽度。

    • height int

      视频帧高度。

    录制视频的尺寸。如果未指定,则大小等于 viewport,并缩放至不超过 800x800。如果未显式配置 viewport,则视频大小默认为 800x450。每个页面的实际画面会根据需要缩放以适应指定尺寸。

  • reduced_motion "reduce" | "no-preference" | "null" (可选)#

    模拟 'prefers-reduced-motion' 媒体特性,支持的值有 'reduce''no-preference'。详见 page.emulate_media()。传入 'null' 可重置为系统默认。默认值为 'no-preference'

  • screen Dict (可选)#

    • width int

      页面宽度(像素)。

    • height int

      页面高度(像素)。

    模拟网页内通过 window.screen 可用的窗口屏幕尺寸。仅在设置了 viewport 时生效。

  • service_workers "allow" | "block" (可选)#

    是否允许站点注册 Service Worker。默认值为 'allow'

    • 'allow'Service Worker 可以注册。
    • 'block':Playwright 会阻止所有 Service Worker 的注册。
  • storage_state Union[str, pathlib.Path] | Dict (可选)#

    • cookies List[Dict]

      • name str

      • value str

      • domain str

        域名和路径为必填项。若要让 Cookie 适用于所有子域名,需在域名前加点,如 ".example.com"

      • path str

        域名和路径为必填项

      • expires float

        Unix 时间戳(秒)。

      • httpOnly bool

      • secure bool

      • sameSite "Strict" | "Lax" | "None"

        sameSite 标志

      要为上下文设置的 Cookie

    • origins List[Dict]

      • origin str

      • localStorage List[Dict]

        要为上下文设置的 localStorage

      了解更多关于存储状态与认证

      使用给定的存储状态初始化上下文。此选项可用于通过 browser_context.storage_state() 获取的已登录信息来初始化上下文。

    • strict_selectors bool (可选)#

      如果设置为 true,则为该上下文启用严格选择器模式。在严格选择器模式下,所有要求唯一 DOM 元素的选择器操作,如果有多个元素匹配该选择器,则会抛出异常。此选项不会影响任何 Locator API(Locator 始终是严格的)。默认值为 false。详见 Locator 了解严格模式。

    • timezone_id str (可选)#

      更改上下文的时区。可参考 ICU 的 metaZones.txt 获取支持的时区 ID 列表。默认使用系统时区。

    • user_agent str (可选)#

      指定该上下文使用的 user agent。

    • viewport NoneType | Dict (可选)#

      • width int

        页面宽度(像素)。

      • height int

        页面高度(像素)。

      为每个页面设置一致的视口。默认视口为 1280x720。no_viewport 可禁用固定视口。了解更多关于视口模拟

    返回值


new_page

v1.9 之前添加 browser.new_page

在新的浏览器上下文中创建一个新页面。关闭该页面也会关闭对应的上下文。

这是一个便捷 API,仅建议用于单页面场景和简短代码片段。生产环境代码和测试框架应显式创建 browser.new_context(),然后通过 browser_context.new_page() 控制其生命周期。

用法

browser.new_page()
browser.new_page(**kwargs)

参数

  • accept_downloads bool (可选)#

    是否自动下载所有附件。默认为 true,即所有下载都会被接受。

  • base_url str (可选)#

    当使用 page.goto()page.route()page.wait_for_url()page.expect_request()page.expect_response() 时,会使用 URL() 构造函数来拼接对应的 URL。默认未设置。示例:

    • baseURL: http://localhost:3000,跳转到 /bar.html,结果为 http://localhost:3000/bar.html
    • baseURL: http://localhost:3000/foo/,跳转到 ./bar.html,结果为 http://localhost:3000/foo/bar.html
    • baseURL: http://localhost:3000/foo(无斜杠),跳转到 ./bar.html,结果为 http://localhost:3000/bar.html
  • bypass_csp bool (可选)#

    是否绕过页面的 Content-Security-Policy。默认为 false

  • client_certificates List[Dict] (可选) 1.46 版本新增#

    • origin str

      证书有效的精确 origin。origin 包含 https 协议、主机名和可选端口。

    • certPath Union[str, pathlib.Path] (可选)

      证书 PEM 格式文件的路径。

    • cert bytes (可选)

      证书 PEM 格式的直接值。

    • keyPath Union[str, pathlib.Path] (可选)

      私钥 PEM 格式文件的路径。

    • key bytes (可选)

      私钥 PEM 格式的直接值。

    • pfxPath Union[str, pathlib.Path] (可选)

      PFX 或 PKCS12 编码的私钥和证书链文件路径。

    • pfx bytes (可选)

      PFX 或 PKCS12 编码的私钥和证书链的直接值。

    • passphrase str (可选)

      私钥(PEM 或 PFX)的密码。

    TLS 客户端认证允许服务器请求客户端证书并进行验证。

    详细说明

    要使用的客户端证书数组。每个证书对象必须同时包含 certPathkeyPath,或仅包含一个 pfxPath,或者使用它们对应的直接值(certkey,或 pfx)。如果证书已加密,可以选择性地提供 passphrase 属性。如果证书只对特定 origin 有效,origin 属性需要与请求的 origin 完全匹配。

    备注

    在 macOS 上使用 WebKit 时,访问 localhost 不会自动使用客户端证书。你可以将 localhost 替换为 local.playwright 以解决此问题。

  • color_scheme "light" | "dark" | "no-preference" | "null" (可选)#

    模拟 prefers-colors-scheme 媒体特性,支持的值有 'light''dark'。详见 page.emulate_media()。传入 'null' 可重置为系统默认。默认值为 'light'

  • contrast "no-preference" | "more" | "null" (可选)#

    模拟 'prefers-contrast' 媒体特性,支持的值有 'no-preference''more'。详见 page.emulate_media()。传入 'null' 可重置为系统默认。默认值为 'no-preference'

  • device_scale_factor float (可选)#

    指定设备像素比(可理解为 dpr)。默认值为 1。了解更多关于设备像素比模拟

  • extra_http_headers Dict[str, str] (可选)#

    包含每个请求要发送的额外 HTTP 头的对象。默认无。

  • forced_colors "active" | "none" | "null" (可选)#

    模拟 'forced-colors' 媒体特性,支持的值有 'active''none'。详见 page.emulate_media()。传入 'null' 可重置为系统默认。默认值为 'none'

  • geolocation Dict (可选)#

    • latitude float

      纬度,范围为 -90 到 90。

    • longitude float

      经度,范围为 -180 到 180。

    • accuracy float (可选)

      非负精度值。默认值为 0

  • has_touch bool (可选)#

    指定视口是否支持触摸事件。默认值为 false。了解更多关于移动端模拟

  • http_credentials Dict (可选)#

    • username str

    • password str

    • origin str (可选)

      限定仅在特定 origin(scheme://host:port)发送 http 凭据。

    • send "unauthorized" | "always" (可选)

      该选项仅适用于通过对应 APIRequestContext 发送的请求,不影响浏览器发出的请求。'always' - 每个 API 请求都会携带带有基本认证凭据的 Authorization 头。'unauthorized' - 仅在收到带有 WWW-Authenticate 头的 401(未授权)响应时才发送凭据。默认值为 'unauthorized'

    HTTP 认证凭据。如果未指定 origin,则用户名和密码会在收到未授权响应时发送给任意服务器。

  • ignore_https_errors bool (可选)#

    发送网络请求时是否忽略 HTTPS 错误。默认值为 false

  • is_mobile bool (可选)#

    是否考虑 meta viewport 标签并启用触摸事件。isMobile 是设备的一部分,通常无需手动设置。默认值为 false,Firefox 不支持。了解更多关于移动端模拟

  • java_script_enabled bool (可选)#

    是否在上下文中启用 JavaScript。默认值为 true。了解更多关于禁用 JavaScript

  • locale str (可选)#

    指定用户区域设置,例如 en-GBde-DE 等。区域设置会影响 navigator.language 的值、Accept-Language 请求头以及数字和日期格式规则。默认使用系统区域设置。了解更多关于模拟指南

  • no_viewport bool (可选)#

    不强制固定视口,允许在有界面模式下调整窗口大小。

  • offline bool (可选)#

    是否模拟网络离线。默认值为 false。了解更多关于网络模拟

  • permissions List[str] (可选)#

    要授予该上下文所有页面的权限列表。详见 browser_context.grant_permissions()。默认无。

  • proxy Dict (可选)#

    • server str

      所有请求使用的代理。支持 HTTP 和 SOCKS 代理,例如 http://myproxy.com:3128socks5://myproxy.com:3128。简写 myproxy.com:3128 视为 HTTP 代理。

    • bypass str (可选)

      可选,逗号分隔的域名列表,指定哪些域名不走代理,例如 ".com, chromium.org, .domain.com"

    • username str (可选)

      如果 HTTP 代理需要认证,使用的用户名。

    • password str (可选)

      如果 HTTP 代理需要认证,使用的密码。

    该上下文使用的网络代理设置。默认无。

  • record_har_content "omit" | "embed" | "attach" (可选)#

    控制资源内容管理的可选设置。如果指定为 omit,则不会保存内容。如果指定为 attach,资源会作为单独文件保存,并与 HAR 文件一起归档。默认值为 embed,即内容内嵌在 HAR 文件中,符合 HAR 规范。

  • record_har_mode "full" | "minimal" (可选)#

    设置为 minimal 时,仅记录 HAR 回放所需的最小信息,不包含大小、时序、页面、Cookie、安全等信息。默认值为 full

  • record_har_omit_content bool (可选)#

    控制是否在 HAR 中省略请求内容的可选设置。默认值为 false

  • record_har_path Union[str, pathlib.Path] (可选)#

    为所有页面启用 HAR 录制,并将其保存到指定的 HAR 文件。如果未指定,则不录制 HAR。请确保调用 browser_context.close() 以保存 HAR 文件。

  • record_har_url_filter str | Pattern (可选)#

  • record_video_dir Union[str, pathlib.Path] (可选)#

    为所有页面启用视频录制,并保存到指定目录。如果未指定,则不录制视频。请确保调用 browser_context.close() 以保存视频。

  • record_video_size Dict (可选)#

    • width int

      视频帧宽度。

    • height int

      视频帧高度。

    录制视频的尺寸。如果未指定,则大小等于 viewport,并缩放至不超过 800x800。如果未显式配置 viewport,则视频大小默认为 800x450。每个页面的实际画面会根据需要缩放以适应指定尺寸。

  • reduced_motion "reduce" | "no-preference" | "null" (可选)#

    模拟 'prefers-reduced-motion' 媒体特性,支持的值有 'reduce''no-preference'。详见 page.emulate_media()。传入 'null' 可重置为系统默认。默认值为 'no-preference'

  • screen Dict (可选)#

    • width int

      页面宽度(像素)。

    • height int

      页面高度(像素)。

    模拟网页内通过 window.screen 可用的窗口屏幕尺寸。仅在设置了 viewport 时生效。

  • service_workers "allow" | "block" (可选)#

    是否允许站点注册 Service Worker。默认值为 'allow'

    • 'allow'Service Worker 可以注册。
    • 'block':Playwright 会阻止所有 Service Worker 的注册。
  • storage_state Union[str, pathlib.Path] | Dict (可选)#

    • cookies List[Dict]

      • name str

      • value str

      • domain str

        域名和路径为必填项。若要让 Cookie 适用于所有子域名,需在域名前加点,如 ".example.com"

      • path str

        域名和路径为必填项

      • expires float

        Unix 时间戳(秒)。

      • httpOnly bool

      • secure bool

      • sameSite "Strict" | "Lax" | "None"

        sameSite 标志

      要为上下文设置的 Cookie

    • origins List[Dict]

      • origin str

      • localStorage List[Dict]

        要为上下文设置的 localStorage

    了解更多关于存储状态与认证

    使用给定的存储状态初始化上下文。此选项可用于通过 browser_context.storage_state() 获取的已登录信息来初始化上下文。

  • strict_selectors bool (可选)#

    如果设置为 true,则为该上下文启用严格选择器模式。在严格选择器模式下,所有要求唯一 DOM 元素的选择器操作,如果有多个元素匹配该选择器,则会抛出异常。此选项不会影响任何 Locator API(Locator 始终是严格的)。默认值为 false。详见 Locator 了解严格模式。

  • timezone_id str (可选)#

    更改上下文的时区。可参考 ICU 的 metaZones.txt 获取支持的时区 ID 列表。默认使用系统时区。

  • user_agent str (可选)#

    指定该上下文使用的 user agent。

  • viewport NoneType | Dict (可选)#

    • width int

      页面宽度(像素)。

    • height int

      页面高度(像素)。

    为每个页面设置一致的视口。默认视口为 1280x720。no_viewport 可禁用固定视口。了解更多关于视口模拟

返回值

了解更多关于存储状态与认证

使用给定的存储状态初始化上下文。此选项可用于通过 browser_context.storage_state() 获取的已登录信息来初始化上下文。

  • strict_selectors bool (可选)#

    如果设置为 true,则为该上下文启用严格选择器模式。在严格选择器模式下,所有要求唯一 DOM 元素的选择器操作,如果有多个元素匹配该选择器,则会抛出异常。此选项不会影响任何 Locator API(Locator 始终是严格的)。默认值为 false。详见 Locator 了解严格模式。

  • timezone_id str (可选)#

    更改上下文的时区。可参考 ICU 的 metaZones.txt 获取支持的时区 ID 列表。默认使用系统时区。

  • user_agent str (可选)#

    指定该上下文使用的 user agent。

  • viewport NoneType | Dict (可选)#

    • width int

      页面宽度(像素)。

    • height int

      页面高度(像素)。

    为每个页面设置一致的视口。默认视口为 1280x720。no_viewport 可禁用固定视口。了解更多关于视口模拟

返回值


start_tracing

v1.11 新增 browser.start_tracing
备注

该 API 控制 Chromium Tracing,这是一个 Chromium 专用的底层调试工具。用于控制 Playwright Tracing 的 API 见此处

你可以使用 browser.start_tracing()browser.stop_tracing() 创建一个可在 Chrome DevTools 性能面板中打开的追踪文件。

用法

browser.start_tracing(page, path="trace.json")
page.goto("https://www.google.com")
browser.stop_tracing()

参数

  • page Page (可选)#

    可选,如果指定,则追踪会包含该页面的截图。

  • categories List[str] (可选)#

    指定自定义的追踪类别,替换默认值。

  • path Union[str, pathlib.Path] (可选)#

    指定追踪文件的保存路径。

  • screenshots bool (可选)#

    是否在追踪中捕获截图。

返回值


stop_tracing

v1.11 新增 browser.stop_tracing
备注

该 API 控制 Chromium Tracing,这是一个 Chromium 专用的底层调试工具。用于控制 Playwright Tracing 的 API 见此处

返回包含追踪数据的缓冲区。

用法

browser.stop_tracing()

返回值


属性

browser_type

v1.23 新增 browser.browser_type

获取该浏览器所属的浏览器类型(chromium、firefox 或 webkit)。

用法

browser.browser_type

返回值


contexts

v1.9 之前添加 browser.contexts

返回所有已打开的浏览器上下文的数组。在新创建的浏览器中,这将返回 0 个上下文。

用法

browser = pw.webkit.launch()
print(len(browser.contexts)) # 输出 `0`
context = browser.new_context()
print(len(browser.contexts)) # 输出 `1`

返回值


is_connected

v1.9 之前添加 browser.is_connected

指示浏览器是否已连接。

用法

browser.is_connected()

返回值


version

v1.9 之前添加 browser.version

返回浏览器的版本号。

用法

browser.version

返回值


事件

on("disconnected")

v1.9 之前添加 browser.on("disconnected")

当 Browser 与浏览器应用断开连接时触发。可能发生的原因包括:

用法

browser.on("disconnected", handler)

事件数据