跳至主要内容

浏览器

浏览器是通过browser_type.launch()创建的。以下是一个使用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)

方法

关闭

Added before v1.9 browser.close

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

如果此浏览器已连接,将清除属于该浏览器的所有已创建上下文,并断开与浏览器服务器的连接。

note

这类似于强制退出浏览器。要优雅地关闭页面并确保收到页面关闭事件,请在任何通过browser.new_context()显式创建的BrowserContext实例上调用browser_context.close()然后再调用browser.close()

Browser对象本身被视为已释放,无法再使用。

用法

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

参数

  • reason str (可选) 添加于: v1.40#

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

返回


new_browser_cdp_session

Added in: v1.11 browser.new_browser_cdp_session
note

CDP会话仅在基于Chromium的浏览器上受支持。

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

用法

browser.new_browser_cdp_session()

返回


new_context

Added before v1.9 browser.new_context

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

note

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

用法

browser = playwright.firefox.launch() # or "chromium" or "webkit".
# create a new incognito browser context.
context = browser.new_context()
# create a new page in a pristine context.
page = context.new_page()
page.goto("https://example.com")

# gracefully close up everything
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来构建相应的URL。默认情况下未设置。示例:

    • baseURL: http://localhost:3000 and navigating to /bar.html results in http://localhost:3000/bar.html
    • baseURL: http://localhost:3000/foo/ and navigating to ./bar.html results in http://localhost:3000/foo/bar.html
    • baseURL: http://localhost:3000/foo (without trailing slash) and navigating to ./bar.html results in http://localhost:3000/bar.html
  • bypass_csp bool (可选)#

    切换绕过页面的内容安全策略。默认为 false

  • client_certificates List[Dict] (可选) 添加于: 1.46#

    • origin str

      证书有效的精确来源。来源包括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属性应提供与证书适用的请求来源完全匹配的值。

    note

    在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。了解更多关于emulating devices with device scale factor的信息。

  • 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 (可选)

      限制在特定来源(scheme://host:port)上发送http凭据。

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

      此选项仅适用于从对应APIRequestContext发送的请求,不会影响从浏览器发送的请求。'always' - 每个API请求都会附带包含基本认证凭据的Authorization头部。'unauthorized - 仅当收到带有WWW-Authenticate头部的401(未授权)响应时才发送凭据。默认为'unauthorized'

    HTTP认证的凭据。如果未指定来源,则在收到未经授权的响应时,用户名和密码将被发送到任何服务器。

  • ignore_https_errors bool (可选)#

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

  • is_mobile bool (可选)#

    是否考虑meta viewport标签并启用触摸事件。isMobile是设备的一部分,因此实际上不需要手动设置它。默认为false,并且在Firefox中不受支持。了解更多关于mobile emulation的信息。

  • 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] (optional)#

    授予此上下文中所有页面的权限列表。详情请参阅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路由所需的信息。这将省略大小、时间、页面、cookies、安全和其他类型的HAR信息,这些信息在从HAR回放时不会被使用。默认为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 workers。默认为'allow'

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

    • cookies 列表[字典]
      • name str

      • value str

      • domain str

        域名和路径是必需的。如果希望cookie也适用于所有子域名,请在域名前加上点号,例如:".example.com"

      • path str

        域名和路径是必需的

      • expires float

        Unix时间戳(秒)。

      • httpOnly bool

      • secure bool

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

        sameSite标志

      Cookies to set for context
    • origins 列表[字典]
      • origin str

      • localStorage List[Dict]

        为上下文设置的localStorage

    了解更多关于storage state and auth的信息。

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

  • strict_selectors bool (可选)#

    如果设置为true,为此上下文启用严格选择器模式。在严格选择器模式下,所有暗示单个目标DOM元素的选择器操作在匹配到多个元素时将抛出异常。此选项不影响任何Locator API(Locator始终是严格的)。默认为false。有关严格模式的更多信息,请参阅Locator

  • timezone_id str (可选)#

    更改上下文的时区。支持的时区ID列表请参见ICU's metaZones.txt。默认为系统时区。

  • user_agent str (可选)#

    在此上下文中使用的特定用户代理。

  • viewport NoneType | Dict (可选)#

    • width int

      页面宽度,单位为像素。

    • height int

      页面高度,单位为像素。

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

返回


new_page

Added before 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来构建相应的URL。默认情况下未设置。示例:

    • baseURL: http://localhost:3000 and navigating to /bar.html results in http://localhost:3000/bar.html
    • baseURL: http://localhost:3000/foo/ and navigating to ./bar.html results in http://localhost:3000/foo/bar.html
    • baseURL: http://localhost:3000/foo (without trailing slash) and navigating to ./bar.html results in http://localhost:3000/bar.html
  • bypass_csp bool (可选)#

    切换绕过页面的内容安全策略。默认为 false

  • client_certificates List[Dict] (可选) 添加于: 1.46#

    • origin str

      证书有效的精确来源。来源包括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属性应提供与证书适用的请求来源完全匹配的值。

    note

    在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。了解更多关于emulating devices with device scale factor的信息。

  • 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 (可选)

      限制在特定来源(scheme://host:port)上发送http凭据。

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

      此选项仅适用于从对应APIRequestContext发送的请求,不会影响从浏览器发送的请求。'always' - 每个API请求都会附带包含基本认证凭据的Authorization头部。'unauthorized - 仅当收到带有WWW-Authenticate头部的401(未授权)响应时才发送凭据。默认为'unauthorized'

    HTTP认证的凭据。如果未指定来源,则在收到未经授权的响应时,用户名和密码将被发送到任何服务器。

  • ignore_https_errors bool (可选)#

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

  • is_mobile bool (可选)#

    是否考虑meta viewport标签并启用触摸事件。isMobile是设备的一部分,因此实际上不需要手动设置它。默认为false,并且在Firefox中不受支持。了解更多关于mobile emulation的信息。

  • 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] (optional)#

    授予此上下文中所有页面的权限列表。详情请参阅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路由所需的信息。这将省略大小、时间、页面、cookies、安全和其他类型的HAR信息,这些信息在从HAR回放时不会被使用。默认为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 workers。默认为'allow'

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

    • cookies 列表[字典]
      • name str

      • value str

      • domain str

        域名和路径是必需的。要使cookie也适用于所有子域名,请在域名前加上点号,例如:".example.com"

      • path str

        域名和路径是必需的

      • expires float

        Unix时间戳(秒)。

      • httpOnly bool

      • secure bool

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

        sameSite标志

      Cookies to set for context
    • origins 列表[字典]
      • origin str

      • localStorage List[Dict]

        为上下文设置的localStorage

    了解更多关于storage state and auth的信息。

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

  • strict_selectors bool (可选)#

    如果设置为true,为此上下文启用严格选择器模式。在严格选择器模式下,所有暗示单个目标DOM元素的选择器操作在匹配到多个元素时将抛出异常。此选项不影响任何Locator API(Locator始终是严格的)。默认为false。有关严格模式的更多信息,请参阅Locator

  • timezone_id str (可选)#

    更改上下文的时区。支持的时区ID列表请参见ICU's metaZones.txt。默认为系统时区。

  • user_agent str (可选)#

    在此上下文中使用的特定用户代理。

  • viewport NoneType | Dict (可选)#

    • width int

      页面宽度,单位为像素。

    • height int

      页面高度,单位为像素。

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

返回


开始追踪

Added in: v1.11 browser.start_tracing
note

该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 (可选)#

    在跟踪中捕获屏幕截图。

返回


停止追踪

Added in: v1.11 browser.stop_tracing
note

该API控制Chromium Tracing,这是一个底层的Chromium专用调试工具。控制Playwright Tracing的API可以在这里找到。

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

用法

browser.stop_tracing()

返回


属性

browser_type

Added in: v1.23 browser.browser_type

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

用法

browser.browser_type

返回


上下文

Added before v1.9 browser.contexts

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

用法

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

返回


is_connected

Added before v1.9 browser.is_connected

表示浏览器已连接。

用法

browser.is_connected()

返回


版本

Added before v1.9 browser.version

返回浏览器版本。

用法

browser.version

返回


事件

on("disconnected")

Added before v1.9 browser.on("disconnected")

当浏览器与浏览器应用程序断开连接时触发。可能由以下原因之一导致:

  • 浏览器应用程序已关闭或崩溃。
  • 调用了browser.close()方法。

用法

browser.on("disconnected", handler)

事件数据