跳到主要内容

Browser

浏览器通过 BrowserType.LaunchAsync() 创建。使用 Browser 创建 Page 的示例

using Microsoft.Playwright;

using var playwright = await Playwright.CreateAsync();
var firefox = playwright.Firefox;
var browser = await firefox.LaunchAsync(new() { Headless = false });
var page = await browser.NewPageAsync();
await page.GotoAsync("https://www.bing.com");
await browser.CloseAsync();

方法

BrowserType

添加于: v1.23 browser.BrowserType

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

用法

Browser.BrowserType

返回


CloseAsync

早于 v1.9 添加 browser.CloseAsync

如果此浏览器是使用 BrowserType.LaunchAsync() 获取的,则关闭浏览器及其所有页面(如果已打开任何页面)。

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

注意

这类似于强制退出浏览器。要优雅地关闭页面并确保您收到页面关闭事件,请在您之前使用 Browser.NewContextAsync() 显式创建的任何 BrowserContext 实例上调用 BrowserContext.CloseAsync()然后再调用 Browser.CloseAsync()

Browser 对象本身被认为是已释放,不能再使用。

用法

await Browser.CloseAsync(options);

参数

  • options BrowserCloseOptions? (可选)
    • Reason string? (可选)添加于: v1.40#

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

返回


上下文

早于 v1.9 添加 browser.Contexts

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

用法

using var playwright = await Playwright.CreateAsync();
var browser = await playwright.Webkit.LaunchAsync();
System.Console.WriteLine(browser.Contexts.Count); // prints "0"
var context = await browser.NewContextAsync();
System.Console.WriteLine(browser.Contexts.Count); // prints "1"

返回


IsConnected

早于 v1.9 添加 browser.IsConnected

指示浏览器是否已连接。

用法

Browser.IsConnected

返回


NewBrowserCDPSessionAsync

添加于: v1.11 browser.NewBrowserCDPSessionAsync
注意

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

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

用法

await Browser.NewBrowserCDPSessionAsync();

返回


NewContextAsync

早于 v1.9 添加 browser.NewContextAsync

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

注意

如果直接使用此方法创建 BrowserContext,最佳实践是在您的代码完成 BrowserContext 的操作后,并在调用 Browser.CloseAsync() 之前,通过 BrowserContext.CloseAsync() 显式关闭返回的上下文。这将确保 context 优雅地关闭,并且任何工件(如 HAR 和视频)都完全刷新并保存。

用法

using var playwright = await Playwright.CreateAsync();
var browser = await playwright.Firefox.LaunchAsync();
// Create a new incognito browser context.
var context = await browser.NewContextAsync();
// Create a new page in a pristine context.
var page = await context.NewPageAsync(); ;
await page.GotoAsync("https://www.bing.com");

// Gracefully close up everything
await context.CloseAsync();
await browser.CloseAsync();

参数

  • options BrowserNewContextOptions? (可选)
    • AcceptDownloads bool? (可选)#

      是否自动下载所有附件。默认为 true,表示接受所有下载。

    • BaseURL string? (可选)#

      当使用 Page.GotoAsync(), Page.RouteAsync(), Page.WaitForURLAsync(), Page.RunAndWaitForRequestAsync(), 或 Page.RunAndWaitForResponseAsync() 时,它通过使用 URL() 构造函数来构建相应的 URL,从而考虑基本 URL。默认情况下未设置。示例

      • baseURL: https://127.0.0.1:3000 并且导航到 /bar.html 结果为 https://127.0.0.1:3000/bar.html
      • baseURL: https://127.0.0.1:3000/foo/ 并且导航到 ./bar.html 结果为 https://127.0.0.1:3000/foo/bar.html
      • baseURL: https://127.0.0.1:3000/foo (没有尾部斜杠) 并且导航到 ./bar.html 结果为 https://127.0.0.1:3000/bar.html
    • BypassCSP bool? (可选)#

      切换绕过页面的内容安全策略 (Content-Security-Policy)。默认为 false

    • ClientCertificates IEnumerable?<ClientCertificates> (可选)添加于: 1.46#

      • Origin string

        证书对其有效的确切来源。来源包括 https 协议、主机名和可选的端口。

      • CertPath string? (可选)

        PEM 格式证书文件的路径。

      • Cert byte[]? (可选)

        PEM 格式证书的直接值。

      • KeyPath string? (可选)

        PEM 格式私钥文件的路径。

      • Key byte[]? (可选)

        PEM 格式私钥的直接值。

      • PfxPath string? (可选)

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

      • Pfx byte[]? (可选)

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

      • Passphrase string? (可选)

        私钥(PEM 或 PFX)的密码。

      TLS 客户端身份验证允许服务器请求客户端证书并验证它。

      详情

      要使用的客户端证书数组。每个证书对象必须具有 certPathkeyPath、单个 pfxPath 或其对应的直接值等效项(certkeypfx)。如果证书已加密,则应选择性地提供 passphrase 属性。 origin 属性应与证书有效的请求来源完全匹配提供。

      注意

      在 macOS 上使用 WebKit 时,访问 localhost 将不会选择客户端证书。您可以通过将 localhost 替换为 local.playwright 使其工作。

    • ColorScheme enum ColorScheme { Light, Dark, NoPreference, Null }? (可选)#

      模拟 prefers-colors-scheme 媒体功能,支持的值为 'light''dark'。有关更多详细信息,请参阅 Page.EmulateMediaAsync()。传递 'null' 会将模拟重置为系统默认值。默认为 'light'

    • DeviceScaleFactor [float]? (可选)#

      指定设备缩放比例因子(可以认为是 dpr)。默认为 1。了解更多关于 使用设备缩放比例因子模拟设备

    • ExtraHTTPHeaders IDictionary?<string, string> (可选)#

      一个对象,其中包含要随每个请求一起发送的附加 HTTP 标头。默认为无。

    • ForcedColors enum ForcedColors { Active, None, Null }? (可选)#

      模拟 'forced-colors' 媒体功能,支持的值为 'active', 'none'。有关更多详细信息,请参阅 Page.EmulateMediaAsync()。传递 'null' 会将模拟重置为系统默认值。默认为 'none'

    • Geolocation Geolocation? (可选)#

      • Latitude [float]

        纬度,介于 -90 和 90 之间。

      • Longitude [float]

        经度,介于 -180 和 180 之间。

      • Accuracy [float]? (可选)

        非负精度值。默认为 0

    • HasTouch bool? (可选)#

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

    • HttpCredentials HttpCredentials? (可选)#

      • Username string

      • Password string

      • Origin string? (可选)

        限制在特定来源(scheme://host:port).

      • Send enum HttpCredentialsSend { Unauthorized, Always }? (可选)

        此选项仅适用于从对应的 APIRequestContext 发送的请求,并且不影响从浏览器发送的请求。 'always' - 带有基本身份验证凭据的 Authorization 标头将随每个 API 请求一起发送。 'unauthorized - 凭据仅在收到带有 WWW-Authenticate 标头的 401(未授权)响应时发送。默认为 'unauthorized'

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

    • IgnoreHTTPSErrors bool? (可选)#

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

    • IsMobile bool? (可选)#

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

    • JavaScriptEnabled bool? (可选)#

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

    • Locale string? (可选)#

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

    • Offline bool? (可选)#

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

    • Permissions IEnumerable?<string> (可选)#

      要授予此上下文中所有页面的权限列表。有关更多详细信息,请参阅 BrowserContext.GrantPermissionsAsync()。默认为无。

    • Proxy Proxy? (可选)#

      • Server string

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

      • Bypass string? (可选)

        可选的逗号分隔的域以绕过代理,例如 ".com, chromium.org, .domain.com"

      • Username string? (可选)

        如果 HTTP 代理需要身份验证,则使用的可选用户名。

      • Password string? (可选)

        如果 HTTP 代理需要身份验证,则使用的可选密码。

      用于此上下文的网络代理设置。默认为无。

    • RecordHarContent enum HarContentPolicy { Omit, Embed, Attach }? (可选)#

      用于控制资源内容管理的可选设置。如果指定 omit,则不会持久保存内容。如果指定 attach,则资源将作为单独的文件持久保存,并且所有这些文件都将与 HAR 文件一起存档。默认为 embed,根据 HAR 规范,该设置将内容内联存储在 HAR 文件中。

    • RecordHarMode enum HarMode { Full, Minimal }? (可选)#

      当设置为 minimal 时,仅记录从 HAR 路由所需的信息。这省略了在从 HAR 重放时未使用的尺寸、时间、页面、Cookie、安全性和其他类型的 HAR 信息。默认为 full

    • RecordHarOmitContent bool? (可选)#

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

    • RecordHarPath string? (可选)#

      启用将所有页面的 HAR 记录到文件系统上指定的 HAR 文件中。如果未指定,则不记录 HAR。请确保调用 BrowserContext.CloseAsync() 以保存 HAR。

    • RecordHarUrlFilter|RecordHarUrlFilterRegex string? | Regex? (可选)#

    • RecordVideoDir string? (可选)#

      启用将所有页面的视频记录到指定目录中。如果未指定,则不记录视频。请确保调用 BrowserContext.CloseAsync() 以保存视频。

    • RecordVideoSize RecordVideoSize? (可选)#

      • Width int

        视频帧宽度。

      • Height int

        视频帧高度。

      记录视频的尺寸。如果未指定,则大小将等于 viewport 缩小以适应 800x800。如果未显式配置 viewport,则视频大小默认为 800x450。如有必要,每个页面的实际图片将被缩小以适应指定的大小。

    • ReducedMotion enum ReducedMotion { Reduce, NoPreference, Null }? (可选)#

      模拟 'prefers-reduced-motion' 媒体功能,支持的值为 'reduce', 'no-preference'。有关更多详细信息,请参阅 Page.EmulateMediaAsync()。传递 'null' 会将模拟重置为系统默认值。默认为 'no-preference'

    • ScreenSize ScreenSize? (可选)#

      • Width int

        页面宽度(像素)。

      • Height int

        页面高度(像素)。

      模拟通过 window.screen 在网页内部可用的一致窗口屏幕尺寸。仅当设置了 ViewportSize 时才使用。

    • ServiceWorkers enum ServiceWorkerPolicy { Allow, Block }? (可选)#

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

      • 'allow': 可以注册 Service Worker
      • 'block': Playwright 将阻止 Service Worker 的所有注册。
    • StorageState string? (可选)#

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

    • StorageStatePath string? (可选)添加于: v1.9#

      使用给定的存储状态填充上下文。此选项可用于使用通过 BrowserContext.StorageStateAsync() 获取的登录信息初始化上下文。保存的存储状态文件的路径。

    • StrictSelectors bool? (可选)#

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

    • TimezoneId string? (可选)#

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

    • UserAgent string? (可选)#

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

    • ViewportSize ViewportSize? (可选)#

      • Width int

        页面宽度(像素)。

      • Height int

        页面高度(像素)。

      为每个页面模拟一致的视口。默认为 1280x720 视口。使用 ViewportSize.NoViewport 禁用一致的视口模拟。了解更多关于 视口模拟

      注意

      ViewportSize.NoViewport 值选择退出默认预设,使视口依赖于操作系统定义的主机窗口大小。这使得测试的执行具有不确定性。

返回


NewPageAsync

早于 v1.9 添加 browser.NewPageAsync

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

这是一个便捷的 API,仅应用于单页场景和简短的代码片段。生产代码和测试框架应显式创建 Browser.NewContextAsync(),然后是 BrowserContext.NewPageAsync(),以控制其确切的生命周期。

用法

await Browser.NewPageAsync(options);

参数

  • options BrowserNewPageOptions? (可选)
    • AcceptDownloads bool? (可选)#

      是否自动下载所有附件。默认为 true,表示接受所有下载。

    • BaseURL string? (可选)#

      当使用 Page.GotoAsync(), Page.RouteAsync(), Page.WaitForURLAsync(), Page.RunAndWaitForRequestAsync(), 或 Page.RunAndWaitForResponseAsync() 时,它通过使用 URL() 构造函数来构建相应的 URL,从而考虑基本 URL。默认情况下未设置。示例

      • baseURL: https://127.0.0.1:3000 并且导航到 /bar.html 结果为 https://127.0.0.1:3000/bar.html
      • baseURL: https://127.0.0.1:3000/foo/ 并且导航到 ./bar.html 结果为 https://127.0.0.1:3000/foo/bar.html
      • baseURL: https://127.0.0.1:3000/foo (没有尾部斜杠) 并且导航到 ./bar.html 结果为 https://127.0.0.1:3000/bar.html
    • BypassCSP bool? (可选)#

      切换绕过页面的内容安全策略 (Content-Security-Policy)。默认为 false

    • ClientCertificates IEnumerable?<ClientCertificates> (可选)添加于: 1.46#

      • Origin string

        证书对其有效的确切来源。来源包括 https 协议、主机名和可选的端口。

      • CertPath string? (可选)

        PEM 格式证书文件的路径。

      • Cert byte[]? (可选)

        PEM 格式证书的直接值。

      • KeyPath string? (可选)

        PEM 格式私钥文件的路径。

      • Key byte[]? (可选)

        PEM 格式私钥的直接值。

      • PfxPath string? (可选)

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

      • Pfx byte[]? (可选)

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

      • Passphrase string? (可选)

        私钥(PEM 或 PFX)的密码。

      TLS 客户端身份验证允许服务器请求客户端证书并验证它。

      详情

      要使用的客户端证书数组。每个证书对象必须具有 certPathkeyPath、单个 pfxPath 或其对应的直接值等效项(certkeypfx)。如果证书已加密,则应选择性地提供 passphrase 属性。 origin 属性应与证书有效的请求来源完全匹配提供。

      注意

      在 macOS 上使用 WebKit 时,访问 localhost 将不会选择客户端证书。您可以通过将 localhost 替换为 local.playwright 使其工作。

    • ColorScheme enum ColorScheme { Light, Dark, NoPreference, Null }? (可选)#

      模拟 prefers-colors-scheme 媒体功能,支持的值为 'light''dark'。有关更多详细信息,请参阅 Page.EmulateMediaAsync()。传递 'null' 会将模拟重置为系统默认值。默认为 'light'

    • DeviceScaleFactor [float]? (可选)#

      指定设备缩放比例因子(可以认为是 dpr)。默认为 1。了解更多关于 使用设备缩放比例因子模拟设备

    • ExtraHTTPHeaders IDictionary?<string, string> (可选)#

      一个对象,其中包含要随每个请求一起发送的附加 HTTP 标头。默认为无。

    • ForcedColors enum ForcedColors { Active, None, Null }? (可选)#

      模拟 'forced-colors' 媒体功能,支持的值为 'active', 'none'。有关更多详细信息,请参阅 Page.EmulateMediaAsync()。传递 'null' 会将模拟重置为系统默认值。默认为 'none'

    • Geolocation Geolocation? (可选)#

      • Latitude [float]

        纬度,介于 -90 和 90 之间。

      • Longitude [float]

        经度,介于 -180 和 180 之间。

      • Accuracy [float]? (可选)

        非负精度值。默认为 0

    • HasTouch bool? (可选)#

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

    • HttpCredentials HttpCredentials? (可选)#

      • Username string

      • Password string

      • Origin string? (可选)

        限制在特定来源(scheme://host:port).

      • Send enum HttpCredentialsSend { Unauthorized, Always }? (可选)

        此选项仅适用于从对应的 APIRequestContext 发送的请求,并且不影响从浏览器发送的请求。 'always' - 带有基本身份验证凭据的 Authorization 标头将随每个 API 请求一起发送。 'unauthorized - 凭据仅在收到带有 WWW-Authenticate 标头的 401(未授权)响应时发送。默认为 'unauthorized'

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

    • IgnoreHTTPSErrors bool? (可选)#

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

    • IsMobile bool? (可选)#

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

    • JavaScriptEnabled bool? (可选)#

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

    • Locale string? (可选)#

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

    • Offline bool? (可选)#

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

    • Permissions IEnumerable?<string> (可选)#

      要授予此上下文中所有页面的权限列表。有关更多详细信息,请参阅 BrowserContext.GrantPermissionsAsync()。默认为无。

    • Proxy Proxy? (可选)#

      • Server string

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

      • Bypass string? (可选)

        可选的逗号分隔的域以绕过代理,例如 ".com, chromium.org, .domain.com"

      • Username string? (可选)

        如果 HTTP 代理需要身份验证,则使用的可选用户名。

      • Password string? (可选)

        如果 HTTP 代理需要身份验证,则使用的可选密码。

      用于此上下文的网络代理设置。默认为无。

    • RecordHarContent enum HarContentPolicy { Omit, Embed, Attach }? (可选)#

      用于控制资源内容管理的可选设置。如果指定 omit,则不会持久保存内容。如果指定 attach,则资源将作为单独的文件持久保存,并且所有这些文件都将与 HAR 文件一起存档。默认为 embed,根据 HAR 规范,该设置将内容内联存储在 HAR 文件中。

    • RecordHarMode enum HarMode { Full, Minimal }? (可选)#

      当设置为 minimal 时,仅记录从 HAR 路由所需的信息。这省略了在从 HAR 重放时未使用的尺寸、时间、页面、Cookie、安全性和其他类型的 HAR 信息。默认为 full

    • RecordHarOmitContent bool? (可选)#

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

    • RecordHarPath string? (可选)#

      启用将所有页面的 HAR 记录到文件系统上指定的 HAR 文件中。如果未指定,则不记录 HAR。请确保调用 BrowserContext.CloseAsync() 以保存 HAR。

    • RecordHarUrlFilter|RecordHarUrlFilterRegex string? | Regex? (可选)#

    • RecordVideoDir string? (可选)#

      启用将所有页面的视频记录到指定目录中。如果未指定,则不记录视频。请确保调用 BrowserContext.CloseAsync() 以保存视频。

    • RecordVideoSize RecordVideoSize? (可选)#

      • Width int

        视频帧宽度。

      • Height int

        视频帧高度。

      记录视频的尺寸。如果未指定,则大小将等于 viewport 缩小以适应 800x800。如果未显式配置 viewport,则视频大小默认为 800x450。如有必要,每个页面的实际图片将被缩小以适应指定的大小。

    • ReducedMotion enum ReducedMotion { Reduce, NoPreference, Null }? (可选)#

      模拟 'prefers-reduced-motion' 媒体功能,支持的值为 'reduce', 'no-preference'。有关更多详细信息,请参阅 Page.EmulateMediaAsync()。传递 'null' 会将模拟重置为系统默认值。默认为 'no-preference'

    • ScreenSize ScreenSize? (可选)#

      • Width int

        页面宽度(像素)。

      • Height int

        页面高度(像素)。

      模拟网页内通过 window.screen 可用的统一窗口屏幕尺寸。仅当设置了 ViewportSize 时才使用。

    • ServiceWorkers enum ServiceWorkerPolicy { Allow, Block }? (可选)#

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

      • 'allow': 可以注册 Service Worker
      • 'block': Playwright 将阻止 Service Worker 的所有注册。
    • StorageState string? (可选)#

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

    • StorageStatePath string? (可选)添加于: v1.9#

      使用给定的存储状态填充上下文。此选项可用于使用通过 BrowserContext.StorageStateAsync() 获取的登录信息初始化上下文。保存的存储状态文件的路径。

    • StrictSelectors bool? (可选)#

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

    • TimezoneId string? (可选)#

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

    • UserAgent string? (可选)#

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

    • ViewportSize ViewportSize? (可选)#

      • Width int

        页面宽度(像素)。

      • Height int

        页面高度(像素)。

      为每个页面模拟一致的视口。默认为 1280x720 视口。使用 ViewportSize.NoViewport 禁用一致的视口模拟。了解更多关于 视口模拟

      注意

      ViewportSize.NoViewport 值选择退出默认预设,使视口依赖于操作系统定义的主机窗口大小。这使得测试的执行具有不确定性。

返回


版本

早于 v1.9 添加 browser.Version

返回浏览器版本。

用法

Browser.Version

返回


事件

event Disconnected

早于 v1.9 添加 browser.event Disconnected

当浏览器与浏览器应用程序断开连接时发出。 这可能是由于以下原因之一造成的:

用法

Browser.Disconnected += async (_, browser) => {};

事件数据