跳至主要内容

浏览器

浏览器通过 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.CloseAsync() **之前**,对之前使用 Browser.NewContextAsync() 明确创建的任何 BrowserContext 调用 BrowserContext.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? (可选)#

      切换是否绕过页面的内容安全策略。默认为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,或其相应的直接值等效项(certkey,或pfx)。如果证书已加密,则可以选择提供passphrase属性。应使用与请求来源完全匹配的值提供origin属性,该证书对此请求来源有效。

      注意

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

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

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

    • DeviceScaleFactor [float]? (可选)#

      指定设备缩放因子(可视为 dpr)。默认为1。详细了解 使用设备缩放因子模拟设备

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

      包含要与每个请求一起发送的其他 HTTP 标头的对象。默认为无。

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

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

    • Geolocation Geolocation? (可选)#

      • Latitude [浮点数]

        纬度介于 -90 和 90 之间。

      • Longitude [浮点数]

        经度介于 -180 和 180 之间。

      • Accuracy [浮点数]? (可选)

        非负精度值。默认为 0

    • HasTouch 布尔值? (可选)#

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

    • HttpCredentials HttpCredentials? (可选)#

      • Username 字符串

      • Password 字符串

      • Origin 字符串? (可选)

        限制在特定来源(方案://主机:端口)发送 HTTP 凭据).

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

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

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

    • IgnoreHTTPSErrors 布尔值? (可选)#

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

    • IsMobile 布尔值? (可选)#

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

    • JavaScriptEnabled 布尔值? (可选)#

      是否在上下文中启用 JavaScript。默认为 true。详细了解 禁用 JavaScript

    • Locale 字符串? (可选)#

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

    • Offline 布尔值? (可选)#

      是否模拟网络脱机。默认为 false。详细了解 网络模拟

    • Permissions IEnumerable?<字符串> (可选)#

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

    • Proxy Proxy? (可选)#

      • Server 字符串

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

      • Bypass 字符串? (可选)

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

      • Username 字符串? (可选)

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

      • Password 字符串? (可选)

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

      与此上下文一起使用的网络代理设置。默认为无。

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

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

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

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

    • RecordHarOmitContent 布尔值? (可选)#

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

    • RecordHarPath 字符串? (可选)#

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

    • RecordHarUrlFilter|RecordHarUrlFilterRegex 字符串? | 正则表达式? (可选)#

    • RecordVideoDir 字符串? (可选)#

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

    • RecordVideoSize RecordVideoSize? (可选)#

      • Width 整数

        视频帧宽度。

      • Height 整数

        视频帧高度。

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

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

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

    • ScreenSize ScreenSize? (可选)#

      • Width 整数

        页面宽度(以像素为单位)。

      • Height 整数

        页面高度(以像素为单位)。

      模拟通过 window.screen 在网页内部可用的固定窗口屏幕大小。仅在 ViewportSize 设置时使用。

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

      是否允许网站注册 Service Workers。默认为 'allow'

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

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

    • StorageStatePath 字符串? (可选)新增于:v1.9#

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

    • StrictSelectors 布尔值? (可选)#

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

    • TimezoneId string? (可选)#

      更改上下文的时区。请参阅 ICU 的 metaZones.txt 以获取受支持时区 ID 的列表。默认为系统时区。

    • UserAgent string? (可选)#

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

    • ViewportSize ViewportSize? (可选)#

      • Width 整数

        页面宽度(以像素为单位)。

      • Height 整数

        页面高度(以像素为单位)。

      为每个页面模拟一致的视口。默认为 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? (可选)#

      切换是否绕过页面的内容安全策略。默认为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,或其相应的直接值等效项(certkey,或pfx)。如果证书已加密,则可以选择提供passphrase属性。应使用与请求来源完全匹配的值提供origin属性,该证书对此请求来源有效。

      注意

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

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

      模拟'prefers-colors-scheme'媒体功能,支持的值为'light''dark''no-preference'。有关更多详细信息,请参阅 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 [浮点数]

        纬度介于 -90 和 90 之间。

      • Longitude [浮点数]

        经度介于 -180 和 180 之间。

      • Accuracy [浮点数]? (可选)

        非负精度值。默认为 0

    • HasTouch bool? (可选)#

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

    • HttpCredentials HttpCredentials? (可选)#

      • Username 字符串

      • Password 字符串

      • Origin 字符串? (可选)

        限制在特定来源(方案://主机:端口)发送 HTTP 凭据).

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

        此选项仅适用于从相应的 APIRequestContext 发送的请求,不影响从浏览器发送的请求。'always' - 每个 API 请求都将发送带有基本身份验证凭据的 Authorization 标头。'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 字符串

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

      • Bypass 字符串? (可选)

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

      • Username 字符串? (可选)

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

      • Password 字符串? (可选)

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

      与此上下文一起使用的网络代理设置。默认为无。

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

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

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

      设置为 minimal 时,仅记录 HAR 路由所需的信息。这将省略大小、时间、页面、Cookie、安全性和 HAR 中未在从 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 整数

        视频帧宽度。

      • Height 整数

        视频帧高度。

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

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

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

    • ScreenSize ScreenSize? (可选)#

      • Width 整数

        页面宽度(以像素为单位)。

      • Height 整数

        页面高度(以像素为单位)。

      通过 window.screen 模拟网页内部可用的持续窗口屏幕大小。仅在设置 ViewportSize 时使用。

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

      是否允许网站注册 Service Workers。默认为 'allow'

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

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

    • StorageStatePath 字符串? (可选)新增于:v1.9#

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

    • StrictSelectors bool? (可选)#

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

    • TimezoneId string? (可选)#

      更改上下文的时区。请参阅 ICU 的 metaZones.txt 以获取受支持时区 ID 的列表。默认为系统时区。

    • UserAgent string? (可选)#

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

    • ViewportSize ViewportSize? (可选)#

      • Width 整数

        页面宽度(以像素为单位)。

      • Height 整数

        页面高度(以像素为单位)。

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

      注意

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

返回值


Version

添加于 v1.9 之前 browser.Version

返回浏览器版本。

用法

Browser.Version

返回值


Events

event Disconnected

添加于 v1.9 之前 browser.event Disconnected

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

用法

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

事件数据