BrowserType
BrowserType предоставляет методы для запуска конкретного экземпляра браузера или подключения к уже существующему. Ниже приведен типичный пример использования Playwright для автоматизации:
using Microsoft.Playwright;
using System.Threading.Tasks;
class BrowserTypeExamples
{
public static async Task Run()
{
using var playwright = await Playwright.CreateAsync();
var chromium = playwright.Chromium;
var browser = await chromium.LaunchAsync();
var page = await browser.NewPageAsync();
await page.GotoAsync("https://www.bing.com");
// другие действия
await browser.CloseAsync();
}
}
Методы
ConnectAsync
Добавлено до версии v1.9Этот метод подключает Playwright к существующему экземпляру браузера, созданному через BrowserType.launchServer в Node.js.
Основная и минорная версии экземпляра Playwright, который подключается, должны совпадать с версией Playwright, которая запускает браузер (1.2.3 → совместимо с 1.2.x).
Использование
await BrowserType.ConnectAsync(wsEndpoint, options);
Аргументы
-
wsEndpointstring Добавлено в: v1.10#Веб-сокетный эндпоинт браузера Playwright для подключения. Вы получаете этот эндпоинт через
BrowserServer.wsEndpoint. -
optionsBrowserTypeConnectOptions?(опционально)-
ExposeNetworkstring? (опционально) Добавлено в: v1.37#Эта опция открывает сеть, доступную на подключающемся клиенте, для браузера, к которому подключаются. Состоит из списка правил, разделенных запятыми.
Доступные правила:
- Шаблон имени хоста, например:
example.com,*.org:99,x.*.y.com,*foo.org. - IP-адрес, например:
127.0.0.1,0.0.0.0:99,[::1],[0:0::1]:99. <loopback>, который соответствует локальным интерфейсам loopback:localhost,*.localhost,127.0.0.1,[::1].
Некоторые распространенные примеры:
"*"для открытия всей сети."<loopback>"для открытия сети localhost."*.test.internal-domain,*.staging.internal-domain,<loopback>"для открытия тестовых/стейджинговых развертываний и localhost.
- Шаблон имени хоста, например:
-
HeadersIDictionary?<string, string> (опционально) Добавлено в: v1.11#Дополнительные HTTP-заголовки, которые будут отправлены с запросом на подключение веб-сокета. Опционально.
-
SlowMo[float]? (опционально) Добавлено в: v1.10#Замедляет операции Playwright на указанное количество миллисекунд. Полезно, чтобы увидеть, что происходит. По умолчанию 0.
-
Timeout[float]? (опционально) Добавлено в: v1.10#Максимальное время в миллисекундах для ожидания установления соединения. По умолчанию
0(без таймаута).
-
Возвращает
ConnectOverCDPAsync
Добавлено в: v1.9Этот метод подключает Playwright к существующему экземпляру браузера с использованием протокола Chrome DevTools.
Контекст браузера по умолчанию доступен через Browser.Contexts.
Подключение через протокол Chrome DevTools поддерживается только для браузеров на основе Chromium.
Это подключение значительно менее точное, чем подключение по протоколу Playwright через BrowserType.ConnectAsync(). Если у вас возникают проблемы или вы пытаетесь использовать расширенные функции, вероятно, вам следует использовать BrowserType.ConnectAsync().
Использование
var browser = await playwright.Chromium.ConnectOverCDPAsync("http://localhost:9222");
var defaultContext = browser.Contexts[0];
var page = defaultContext.Pages[0];
Аргументы
-
endpointURLstring Добавлено в: v1.11#Веб-сокетный эндпоинт CDP или http URL для подключения. Например,
http://localhost:9222/илиws://127.0.0.1:9222/devtools/browser/387adf4c-243f-4051-a181-46798f4a46f4. -
optionsBrowserTypeConnectOverCDPOptions?(опционально)-
HeadersIDictionary?<string, string> (опционально) Добавлено в: v1.11#Дополнительные HTTP-заголовки, которые будут отправлены с запросом на подключение. Опционально.
-
SlowMo[float]? (опционально) Добавлено в: v1.11#Замедляет операции Playwright на указанное количество миллисекунд. Полезно, чтобы увидеть, что происходит. По умолчанию 0.
-
Timeout[float]? (опционально) Добавлено в: v1.11#Максимальное время в миллисекундах для ожидания установления соединения. По умолчанию
30000(30 секунд). Установите0, чтобы отключить таймаут.
-
Возвращает
ExecutablePath
Добавлено до версии v1.9Путь, где Playwright ожидает найти встроенный исполняемый файл браузера.
Использование
BrowserType.ExecutablePath
Возвращает
LaunchAsync
Добавлено до версии v1.9Возвращает экземпляр браузера.
Использование
Вы можете использовать IgnoreDefaultArgs, чтобы исключить --mute-audio из аргументов по умолчанию:
var browser = await playwright.Chromium.LaunchAsync(new() {
IgnoreDefaultArgs = new[] { "--mute-audio" }
});
Только для Chromium Playwright также может использоваться для управления браузерами Google Chrome или Microsoft Edge, но лучше всего работает с версией Chromium, с которой он поставляется. Нет гарантии, что он будет работать с любой другой версией. Используйте опцию ExecutablePath с крайней осторожностью.
Если предпочтителен Google Chrome (а не Chromium), рекомендуется использовать сборку Chrome Canary или Dev Channel.
Стандартные браузеры, такие как Google Chrome и Microsoft Edge, подходят для тестов, требующих проприетарных медиа-кодеков для воспроизведения видео. См. эту статью для других различий между Chromium и Chrome. Эта статья описывает некоторые различия для пользователей Linux.
Аргументы
optionsBrowserTypeLaunchOptions?(опционально)-
ArgsIEnumerable?<string> (опционально)#warningИспользуйте пользовательские аргументы браузера на свой страх и риск, так как некоторые из них могут нарушить функциональность Playwright.
Дополнительные аргументы для передачи экземпляру браузера. Список флагов Chromium можно найти здесь.
-
Channelstring? (опционально)#Канал распространения браузера.
Используйте "chromium", чтобы включить новый режим без головы.
Используйте "chrome", "chrome-beta", "chrome-dev", "chrome-canary", "msedge", "msedge-beta", "msedge-dev" или "msedge-canary", чтобы использовать брендированные Google Chrome и Microsoft Edge.
-
ChromiumSandboxbool? (опционально)#Включить песочницу Chromium. По умолчанию
false. -
Устарело
Используйте инструменты отладки вместо этого.
Только для Chromium Автоматически открывать панель инструментов разработчика для каждой вкладки. Если эта опция
true, опция Headless будет установлена вfalse. -
DownloadsPathstring? (опционально)#Если указано, принятые загрузки загружаются в этот каталог. В противном случае создается временный каталог, который удаляется при закрытии браузера. В любом случае загрузки удаляются, когда контекст браузера, в котором они были созданы, закрывается.
-
EnvIDictionary?<string, string> (опционально)#Укажите переменные окружения, которые будут видны браузеру. По умолчанию
process.env. -
ExecutablePathstring? (опционально)#Путь к исполняемому файлу браузера, который будет запущен вместо встроенного. Если ExecutablePath является относительным путем, то он разрешается относительно текущего рабочего каталога. Обратите внимание, что Playwright работает только с встроенными Chromium, Firefox или WebKit, используйте на свой страх и риск.
-
FirefoxUserPrefsIDictionary?<string, [object]> (опционально)#Пользовательские настройки Firefox. Узнайте больше о пользовательских настройках Firefox на
about:config. -
HandleSIGHUPbool? (опционально)#Закрыть процесс браузера при SIGHUP. По умолчанию
true. -
HandleSIGINTbool? (опционально)#Закрыть процесс браузера при Ctrl-C. По умолчанию
true. -
HandleSIGTERMbool? (опционально)#Закрыть процесс браузера при SIGTERM. По умолчанию
true. -
Запускать браузер в режиме без головы. Подробнее для Chromium и Firefox. По умолчанию
true, если опция Devtools не установлена вtrue. -
IgnoreAllDefaultArgsbool? (опционально) Добавлено в: v1.9#Если
true, Playwright не передает свои собственные аргументы конфигурации и использует только те, что указаны в Args. Опасная опция; используйте с осторожностью. По умолчаниюfalse. -
IgnoreDefaultArgsIEnumerable?<string> (опционально)#Если
true, Playwright не передает свои собственные аргументы конфигурации и использует только те, что указаны в Args. Опасная опция; используйте с осторожностью. -
ProxyProxy? (опционально)#-
ServerstringПрокси для использования для всех запросов. Поддерживаются HTTP и SOCKS прокси, например
http://myproxy.com:3128илиsocks5://myproxy.com:3128. Краткая формаmyproxy.com:3128считается HTTP прокси. -
Bypassstring? (опционально)Опциональные домены, разделенные запятыми, для обхода прокси, например
".com, chromium.org, .domain.com". -
Usernamestring? (опционально)Опциональное имя пользователя для использования, если HTTP прокси требует аутентификации.
-
Passwordstring? (опционально)Опциональный пароль для использования, если HTTP прокси требует аутентификации.
Настройки сетевого прокси.
-
-
SlowMo[float]? (опционально)#Замедляет операции Playwright на указанное количество миллисекунд. Полезно, чтобы увидеть, что происходит.
-
Timeout[float]? (опционально)#Максимальное время в миллисекундах для ожидания запуска экземпляра браузера. По умолчанию
30000(30 секунд). Установите0, чтобы отключить таймаут. -
TracesDirstring? (опционально)#Если указано, трассировки сохраняются в этот каталог.
-
Возвращает
LaunchPersistentContextAsync
Добавлено до версии v1.9Возвращает экземпляр постоянного контекста браузера.
Запускает браузер, который использует постоянное хранилище, расположенное в userDataDir, и возвращает единственный контекст. Закрытие этого контекста автоматически закроет браузер.
Использование
await BrowserType.LaunchPersistentContextAsync(userDataDir, options);
Аргументы
-
Путь к каталогу пользовательских данных, который хранит данные сессии браузера, такие как куки и локальное хранилище. Подробнее для Chromium и Firefox. Обратите внимание, что каталог пользовательских данных Chromium является родительским каталогом "Profile Path", который можно увидеть на
chrome://version. Передайте пустую строку, чтобы использовать временный каталог. -
optionsBrowserTypeLaunchPersistentContextOptions?(опционально)-
AcceptDownloadsbool? (опционально)#Автоматически загружать все вложения. По умолчанию
true, где все загрузки принимаются. -
ArgsIEnumerable?<string> (опционально)#warningИспользуйте пользовательские аргументы браузера на свой страх и риск, так как некоторые из них могут нарушить функциональность Playwright.
Дополнительные аргументы для передачи экземпляру браузера. Список флагов Chromium можно найти здесь.
-
BaseURLstring? (опционально)#При использовании Page.GotoAsync(), Page.RouteAsync(), Page.WaitForURLAsync(), Page.RunAndWaitForRequestAsync() или Page.RunAndWaitForResponseAsync() учитывается базовый URL, используя конструктор
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
- baseURL:
-
BypassCSPbool? (опционально)#Переключает обход политики безопасности контента страницы. По умолчанию
false. -
Channelstring? (опционально)#Канал распространения браузера.
Используйте "chromium", чтобы включить новый режим без головы.
Используйте "chrome", "chrome-beta", "chrome-dev", "chrome-canary", "msedge", "msedge-beta", "msedge-dev" или "msedge-canary", чтобы использовать брендированные Google Chrome и Microsoft Edge.
-
ChromiumSandboxbool? (опционально)#Включить песочницу Chromium. По умолчанию
false. -
ClientCertificatesIEnumerable?<ClientCertificates> (опционально) Добавлено в: 1.46#-
OriginstringТочный источник, для которого сертификат действителен. Источник включает протокол
https, имя хоста и, возможно, порт. -
CertPathstring? (опционально)Путь к файлу с сертификатом в формате PEM.
-
Certbyte[]? (опционально)Прямое значение сертификата в формате PEM.
-
KeyPathstring? (опционально)Путь к файлу с закрытым ключом в формате PEM.
-
Keybyte[]? (опционально)Прямое значение закрытого ключа в формате PEM.
-
PfxPathstring? (опционально)Путь к PFX или PKCS12 закодированному закрытому ключу и цепочке сертификатов.
-
Pfxbyte[]? (опционально)Прямое значение PFX или PKCS12 закодированного закрытого ключа и цепочки сертификатов.
-
Passphrasestring? (опционально)Пароль для закрытого ключа (PEM или PFX).
Аутентификация клиента TLS позволяет серверу запрашивать клиентский сертификат и проверять его.
Детали
Массив клиентских сертификатов для использования. Каждый объект сертификата должен иметь либо оба
certPathиkeyPath, либо одинpfxPath, или их соответствующие прямые значения (certиkey, илиpfx). Опционально, свойствоpassphraseдолжно быть предоставлено, если сертификат зашифрован. Свойствоoriginдолжно быть предоставлено с точным совпадением с источником запроса, для которого сертификат действителен.примечаниеПри использовании WebKit на macOS доступ к
localhostне будет использовать клиентские сертификаты. Вы можете сделать это, заменивlocalhostнаlocal.playwright. -
-
ColorSchemeenum ColorScheme { Light, Dark, NoPreference, Null }?(опционально)#Эмулирует медиа-функцию prefers-colors-scheme, поддерживаемые значения:
'light'и'dark'. См. Page.EmulateMediaAsync() для получения дополнительной информации. Передача'null'сбрасывает эмуляцию на системные настройки по умолчанию. По умолчанию'light'. -
Contrastenum Contrast { NoPreference, More, Null }?(опционально)#Эмулирует медиа-функцию
'prefers-contrast', поддерживаемые значения:'no-preference','more'. См. Page.EmulateMediaAsync() для получения дополнительной информации. Передача'null'сбрасывает эмуляцию на системные настройки по умолчанию. По умолчанию'no-preference'. -
DeviceScaleFactor[float]? (опционально)#Укажите коэффициент масштабирования устройства (можно рассматривать как dpr). По умолчанию
1. Узнайте больше о эмуляции устройств с коэффициентом масштабирования устройства. -
Устарело
Используйте инструменты отладки вместо этого.
Только для Chromium Автоматически открывать панель инструментов разработчика для каждой вкладки. Если эта опция
true, опция Headless будет установлена вfalse. -
DownloadsPathstring? (опционально)#Если указано, принятые загрузки загружаются в этот каталог. В противном случае создается временный каталог, который удаляется при закрытии браузера. В любом случае загрузки удаляются, когда контекст браузера, в котором они были созданы, закрывается.
-
EnvIDictionary?<string, string> (опционально)#Укажите переменные окружения, которые будут видны браузеру. По умолчанию
process.env. -
ExecutablePathstring? (опционально)#Путь к исполняемому файлу браузера, который будет запущен вместо встроенного. Если ExecutablePath является относительным путем, то он разрешается относительно текущего рабочего каталога. Обратите внимание, что Playwright работает только с встроенными Chromium, Firefox или WebKit, используйте на свой страх и риск.
-
ExtraHTTPHeadersIDictionary?<string, string> (опционально)#Объект, содержащий дополнительные HTTP-заголовки, которые будут отправлены с каждым запросом. По умолчанию отсутствуют.
-
FirefoxUserPrefsIDictionary?<string, [object]> (опционально) Добавлено в: v1.40#Пользовательские настройки Firefox. Узнайте больше о пользовательских настройках Firefox на
about:config. -
ForcedColorsenum ForcedColors { Active, None, Null }?(опционально)#Эмулирует медиа-функцию
'forced-colors', поддерживаемые значения:'active','none'. См. Page.EmulateMediaAsync() для получения дополнительной информации. Передача'null'сбрасывает эмуляцию на системные настройки по умолчанию. По умолчанию'none'. -
GeolocationGeolocation? (опционально)#-
Latitude[float]Широта между -90 и 90.
-
Longitude[float]Долгота между -180 и 180.
-
Accuracy[float]? (опционально)Неотрицательное значение точности. По умолчанию
0.
-
-
HandleSIGHUPbool? (опционально)#Закрыть процесс браузера при SIGHUP. По умолчанию
true. -
HandleSIGINTbool? (опционально)#Закрыть процесс браузера при Ctrl-C. По умолчанию
true. -
HandleSIGTERMbool? (опционально)#Закрыть процесс браузера при SIGTERM. По умолчанию
true. -
Указывает, поддерживает ли видовая область сенсорные события. По умолчанию false. Узнайте больше о мобильной эмуляции.
-
Запускать браузер в режиме без головы. Подробнее для Chromium и Firefox. По умолчанию
true, если опция Devtools не установлена вtrue. -
HttpCredentialsHttpCredentials? (опционально)#-
Usernamestring -
Passwordstring -
Originstring? (опционально)Ограничить отправку HTTP-учетных данных на конкретный источник (scheme://host:port).
-
Sendenum HttpCredentialsSend { Unauthorized, Always }?(опционально)Эта опция применяется только к запросам, отправленным из соответствующего APIRequestContext, и не влияет на запросы, отправленные из браузера.
'always'- заголовокAuthorizationс учетными данными базовой аутентификации будет отправлен с каждым API-запросом.'unauthorized- учетные данные отправляются только при получении ответа 401 (Unauthorized) с заголовкомWWW-Authenticate. По умолчанию'unauthorized'.
Учетные данные для HTTP-аутентификации. Если источник не указан, имя пользователя и пароль отправляются на любые серверы при неавторизованных ответах.
-
-
IgnoreAllDefaultArgsbool? (опционально) Добавлено в: v1.9#Если
true, Playwright не передает свои собственные аргументы конфигурации и использует только те, что указаны в Args. Опасная опция; используйте с осторожностью. По умолчаниюfalse. -
IgnoreDefaultArgsIEnumerable?<string> (опционально)#Если
true, Playwright не передает свои собственные аргументы конфигурации и использует только те, что указаны в Args. Опасная опция; используйте с осторожностью. -
IgnoreHTTPSErrorsbool? (опционально)#Игнорировать ли ошибки HTTPS при отправке сетевых запросов. По умолчанию
false. -
Учитывается ли тег
meta viewportи включены ли сенсорные события. isMobile является частью устройства, поэтому вам не нужно устанавливать его вручную. По умолчаниюfalseи не поддерживается в Firefox. Узнайте больше о мобильной эмуляции. -
JavaScriptEnabledbool? (опционально)#Включать ли JavaScript в контексте. По умолчанию
true. Узнайте больше о отключении JavaScript. -
Укажите локаль пользователя, например
en-GB,de-DEи т.д. Локаль влияет на значениеnavigator.language, значение заголовка запросаAccept-Language, а также на правила форматирования чисел и дат. По умолчанию используется системная локаль. Узнайте больше о эмуляции в нашем руководстве по эмуляции. -
Эмулировать ли отключение сети. По умолчанию
false. Узнайте больше о эмуляции сети. -
PermissionsIEnumerable?<string> (опционально)#Список разрешений, которые будут предоставлены всем страницам в этом контексте. См. BrowserContext.GrantPermissionsAsync() для получения дополнительной информации. По умолчанию отсутствуют.
-
ProxyProxy? (опционально)#-
ServerstringПрокси для использования для всех запросов. Поддерживаются HTTP и SOCKS прокси, например
http://myproxy.com:3128илиsocks5://myproxy.com:3128. Краткая формаmyproxy.com:3128считается HTTP прокси. -
Bypassstring? (опционально)Опциональные домены, разделенные запятыми, для обхода прокси, например
".com, chromium.org, .domain.com". -
Usernamestring? (опционально)Опциональное имя пользователя для использования, если HTTP прокси требует аутентификации.
-
Passwordstring? (опционально)Опциональный пароль для использования, если HTTP прокси требует аутентификации.
Настройки сетевого прокси.
-
-
RecordHarContentenum HarContentPolicy { Omit, Embed, Attach }?(опционально)#Опциональная настройка для управления содержимым ресурсов. Если указано
omit, содержимое не сохраняется. Если указаноattach, ресурсы сохраняются как отдельные файлы, и все эти файлы архивируются вместе с файлом HAR. По умолчаниюembed, что сохраняет содержимое в файле HAR в соответствии со спецификацией HAR. -
RecordHarModeenum HarMode { Full, Minimal }?(опционально)#Если установлено в
minimal, записывается только информация, необходимая для маршрутизации из HAR. Это исключает размеры, время, страницы, куки, безопасность и другие типы информации HAR, которые не используются при воспроизведении из HAR. По умолчаниюfull. -
RecordHarOmitContentbool? (опционально)#Опциональная настройка для управления тем, следует ли исключать содержимое запроса из HAR. По умолчанию
false. -
RecordHarPathstring? (опционально)#Включает HAR запись для всех страниц в указанный файл HAR на файловой системе. Если не указано, HAR не записывается. Убедитесь, что вызвали BrowserContext.CloseAsync(), чтобы HAR был сохранен.
-
RecordHarUrlFilter|RecordHarUrlFilterRegexstring? | Regex? (опционально)# -
RecordVideoDirstring? (опционально)#Включает запись видео для всех страниц в указанный каталог. Если не указано, видео не записываются. Убедитесь, что вызвали BrowserContext.CloseAsync(), чтобы видео были сохранены.
-
RecordVideoSizeRecordVideoSize? (опционально)#Размеры записанных видео. Если не указано, размер будет равен
viewport, уменьшенному для соответствия 800x800. Еслиviewportне настроен явно, размер видео по умолчанию составляет 800x450. Фактическое изображение каждой страницы будет уменьшено, если необходимо, чтобы соответствовать указанному размеру. -
ReducedMotionenum ReducedMotion { Reduce, NoPreference, Null }?(опционально)#Эмулирует медиа-функцию
'prefers-reduced-motion', поддерживаемые значения:'reduce','no-preference'. См. Page.EmulateMediaAsync() для получения дополнительной информации. Передача'null'сбрасывает эмуляцию на системные настройки по умолчанию. По умолчанию'no-preference'. -
ScreenSizeScreenSize? (опционально)#Эмулирует постоянный размер экрана окна, доступный внутри веб-страницы через
window.screen. Используется только, когда ViewportSize установлен. -
ServiceWorkersenum ServiceWorkerPolicy { Allow, Block }?(опционально)#Разрешать ли сайтам регистрировать сервис-воркеры. По умолчанию
'allow'.'allow': Сервис-воркеры могут быть зарегистрированы.'block': Playwright будет блокировать всю регистрацию сервис-воркеров.
-
SlowMo[float]? (опционально)#Замедляет операции Playwright на указанное количество миллисекунд. Полезно, чтобы увидеть, что происходит.
-
StrictSelectorsbool? (опционально)#Если установлено в true, включает режим строгих селекторов для этого контекста. В режиме строгих селекторов все операции с селекторами, которые подразумевают единственный целевой элемент DOM, будут вызывать ошибку, если более одного элемента соответствует селектору. Эта опция не влияет на любые API локаторов (локаторы всегда строгие). По умолчанию
false. См. Locator, чтобы узнать больше о строгом режиме. -
Timeout[float]? (опционально)#Максимальное время в миллисекундах для ожидания запуска экземпляра браузера. По умолчанию
30000(30 секунд). Установите0, чтобы отключить таймаут. -
TimezoneIdstring? (опционально)#Изменяет часовой пояс контекста. См. ICU's metaZones.txt для списка поддерживаемых идентификаторов часовых поясов. По умолчанию используется системный часовой пояс.
-
TracesDirstring? (опционально)#Если указано, трассировки сохраняются в этот каталог.
-
UserAgentstring? (опционально)#Специфический пользовательский агент для использования в этом контексте.
-
ViewportSizeViewportSize? (опционально)#Эмулирует постоянную видовую область для каждой страницы. По умолчанию используется видовая область 1280x720. Используйте
ViewportSize.NoViewport, чтобы отключить эмуляцию постоянной видовой области. Узнайте больше о эмуляции видовой области.примечаниеЗначение
ViewportSize.NoViewportотключает использование предустановок по умолчанию, делает видовую область зависимой от размера окна хоста, определяемого операционной системой. Это делает выполнение тестов недетерминированным.
-
Возвращает
Name
Добавлено до версии v1.9Возвращает имя браузера. Например: 'chromium', 'webkit' или 'firefox'.
Использование
BrowserType.Name
Возвращает