Playwright MCP
resmiClaude, Cursor ve diğer yapay zeka ajanlarından tarayıcı otomasyonu, sayfa incelemesi, ekran görüntüleri ve web etkileşimi için resmi Playwright MCP sunucusu.
Playwright MCP ile neler yapabilirsiniz?
- Erişilebilirlik anlık görüntüleriyle tarayıcı otomasyonu — Yapılandırılmış erişilebilirlik verilerini kullanarak yapay zekanızın sayfalarda gezinmesini ve öğelerle etkileşime girmesini sağlayın, ekran görüntüsüne gerek yok.
- Kalıcı tarama oturumları — Kalıcı bir profille oturum açmış durumları konuşmalar arasında koruyun veya temiz testler için izole oturumlar kullanın.
- Çoklu tarayıcı desteği — Görevleri Chromium, Firefox veya WebKit'te otomatikleştirin; headless mod ve cihaz emülasyonu seçenekleriyle.
- Özel tarayıcı yapılandırması — Test ihtiyaçlarınıza uyacak şekilde görünüm alanı boyutunu, kullanıcı aracısını, proxy ayarlarını ve izinleri yapılandırın.
- Tarayıcı uzantısı entegrasyonu — Mevcut sekmelerden ve oturum açmış oturumlardan yararlanmak için mevcut Chrome veya Edge tarayıcınıza bağlanın.
Dokümantasyon
Playwright MCP
Playwright kullanarak tarayıcı otomasyonu yetenekleri sağlayan bir Model Context Protocol (MCP) sunucusu Playwright. Bu sunucu, LLM'lerin web sayfalarıyla yapılandırılmış erişilebilirlik anlık görüntüleri aracılığıyla etkileşime girmesini sağlar; ekran görüntülerine veya görsel olarak ayarlanmış modellere olan ihtiyacı ortadan kaldırır.
Playwright MCP ve Playwright CLI
Bu paket, Playwright için MCP arayüzü sağlar. Bir kodlama aracısı kullanıyorsanız, bunun yerine CLI+SKILLS kullanmaktan faydalanabilirsiniz.
-
CLI: Modern kodlama aracıları, MCP yerine SKILL olarak sunulan CLI tabanlı iş akışlarını giderek daha fazla tercih etmektedir çünkü CLI çağrıları daha token verimlidir: büyük araç şemalarını ve ayrıntılı erişilebilirlik ağaçlarını model bağlamına yüklemekten kaçınırlar ve aracıların kısa, amaca yönelik komutlarla hareket etmesine olanak tanırlar. Bu, CLI + SKILLs'ü sınırlı bağlam pencereleri içinde tarayıcı otomasyonunu büyük kod tabanları, testler ve akıl yürütme ile dengelemesi gereken yüksek verimli kodlama aracıları için daha uygun hale getirir.
SKILLS ile Playwright CLI hakkında daha fazla bilgi edinin. -
MCP: MCP, kalıcı durum, zengin içgörü ve sayfa yapısı üzerinde yinelemeli akıl yürütmeden faydalanan özel aracı döngüleri için geçerliliğini korur; örneğin keşif amaçlı otomasyon, kendi kendini iyileştiren testler veya sürekli tarayıcı bağlamını korumanın token maliyeti endişelerinden daha ağır bastığı uzun süreli otonom iş akışları gibi.
Temel Özellikler
- Hızlı ve hafif. Piksel tabanlı giriş yerine Playwright'ın erişilebilirlik ağacını kullanır.
- LLM dostu. Görüntü modellerine gerek yoktur, yalnızca yapılandırılmış veriler üzerinde çalışır.
- Deterministik araç uygulaması. Ekran görüntüsü tabanlı yaklaşımlarda yaygın olan belirsizliği önler.
Gereksinimler
- Node.js 18 veya daha yeni
- VS Code, Cursor, Windsurf, Claude Desktop, Goose, Grok, Junie veya herhangi bir başka MCP istemcisi
Başlarken
Öncelikle Playwright MCP sunucusunu istemcinizle birlikte kurun.
Standart yapılandırma çoğu araçta çalışır:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
Amp
Amp VS Code uzantısı ayarlar ekranından veya settings.json dosyanızı güncelleyerek ekleyin:
"amp.mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
Amp CLI Kurulumu:
Aşağıdaki amp mcp add komutuyla ekleyin
amp mcp add playwright -- npx @playwright/mcp@latest
Antigravity
Antigravity ayarlarından veya yapılandırma dosyanızı güncelleyerek ekleyin:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
Claude Code
Playwright MCP sunucusunu eklemek için Claude Code CLI'yı kullanın:
claude mcp add playwright npx @playwright/mcp@latest
Claude Desktop
MCP kurulum kılavuzunu izleyin, yukarıdaki standart yapılandırmayı kullanın.
Cline
MCP Sunucularını Yapılandırma bölümündeki talimatları izleyin
Örnek: Yerel Kurulum
cline_mcp_settings.json dosyanıza aşağıdakileri ekleyin:
{
"mcpServers": {
"playwright": {
"type": "stdio",
"command": "npx",
"timeout": 30,
"args": [
"-y",
"@playwright/mcp@latest"
],
"disabled": false
}
}
}
Codex
Playwright MCP sunucusunu eklemek için Codex CLI'yı kullanın:
codex mcp add playwright npx "@playwright/mcp@latest"
Alternatif olarak, ~/.codex/config.toml yapılandırma dosyasını oluşturun veya düzenleyin ve şunu ekleyin:
[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]
Daha fazla bilgi için Codex MCP belgelerine bakın.
Copilot
Playwright MCP sunucusunu etkileşimli olarak eklemek için Copilot CLI'yı kullanın:
/mcp add
Alternatif olarak, ~/.copilot/mcp-config.json yapılandırma dosyasını oluşturun veya düzenleyin ve şunu ekleyin:
{
"mcpServers": {
"playwright": {
"type": "local",
"command": "npx",
"tools": [
"*"
],
"args": [
"@playwright/mcp@latest"
]
}
}
}
Daha fazla bilgi için Copilot CLI belgelerine bakın.
Cursor
Kurulum için düğmeye tıklayın:
Veya manuel olarak kurun:
Cursor Settings -> MCP -> Add new MCP Server bölümüne gidin. İstediğiniz gibi adlandırın, command türünü npx @playwright/mcp@latest komutuyla kullanın. Ayrıca Edit seçeneğine tıklayarak yapılandırmayı doğrulayabilir veya komut gibi bağımsız değişkenler ekleyebilirsiniz.
Factory
Playwright MCP sunucusunu eklemek için Factory CLI'yı kullanın:
droid mcp add playwright "npx @playwright/mcp@latest"
Alternatif olarak, MCP sunucularını yönetmek için etkileşimli bir arayüz açmak üzere Factory droid içinde /mcp yazın.
Daha fazla bilgi için Factory MCP belgelerine bakın.
Gemini CLI
MCP kurulum kılavuzunu izleyin, yukarıdaki standart yapılandırmayı kullanın.
Goose
Kurulum için düğmeye tıklayın:
Veya manuel olarak kurun:
Advanced settings -> Extensions -> Add custom extension bölümüne gidin. İstediğiniz gibi adlandırın, STDIO türünü kullanın ve command değerini npx @playwright/mcp olarak ayarlayın. "Add Extension" seçeneğine tıklayın.
Grok
Playwright MCP sunucusunu eklemek için Grok CLI'yı kullanın:
grok mcp add playwright -- npx @playwright/mcp@latest
Alternatif olarak, ~/.grok/config.toml yapılandırma dosyasını oluşturun veya düzenleyin ve şunu ekleyin:
[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]
Daha fazla bilgi için Grok MCP belgelerine bakın.
Junie
Junie CLI'da Playwright MCP sunucusunu eklemek için:
/mcpyazın- Yeni bir MCP sunucusu eklemek için
Ctrl+Atuşuna basın - Listeden Playwright seçeneğini seçin
Alternatif olarak, .junie/mcp/mcp.json dosyasına ekleyin:
{
"mcpServers": {
"Playwright": {
"command": "npx",
"args": [
"-y",
"@playwright/mcp@latest"
]
}
}
}
Daha fazla bilgi için Junie MCP yapılandırma belgelerine bakın.
Kiro
MCP Sunucuları belgelerini izleyin. Örneğin .kiro/settings/mcp.json içinde:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
LM Studio
Kurulum için düğmeye tıklayın:
Veya manuel olarak kurun:
Sağ kenar çubuğundaki Program bölümüne gidin -> Install -> Edit mcp.json. Yukarıdaki standart yapılandırmayı kullanın.
opencode
MCP Sunucuları belgelerini izleyin. Örneğin ~/.config/opencode/opencode.json içinde:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"playwright": {
"type": "local",
"command": [
"npx",
"@playwright/mcp@latest"
],
"enabled": true
}
}
}
Qodo Gen
VSCode veya IntelliJ'de Qodo Gen sohbet panelini açın → Connect more tools → + Add new MCP → Yukarıdaki standart yapılandırmayı yapıştırın.
Save seçeneğine tıklayın.
VS Code
Kurulum için düğmeye tıklayın:
Veya manuel olarak kurun:
MCP kurulum kılavuzunu izleyin, yukarıdaki standart yapılandırmayı kullanın. Ayrıca Playwright MCP sunucusunu VS Code CLI kullanarak da kurabilirsiniz:
# For VS Code
code --add-mcp '{"name":"playwright","command":"npx","args":["@playwright/mcp@latest"]}'
Kurulumdan sonra Playwright MCP sunucusu, VS Code'da GitHub Copilot aracınızla kullanılabilir olacaktır.
Warp
MCP Sunucusu eklemek için Settings -> AI -> Manage MCP Servers -> + Add bölümüne gidin. Yukarıdaki standart yapılandırmayı kullanın.
Alternatif olarak, Warp isteminde /add-mcp eğik çizgi komutunu kullanın ve yukarıdaki standart yapılandırmayı yapıştırın:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
Windsurf
Windsurf MCP belgelerini izleyin. Yukarıdaki standart yapılandırmayı kullanın.
Yapılandırma
Playwright MCP sunucusu aşağıdaki bağımsız değişkenleri destekler. Bunlar yukarıdaki JSON yapılandırmasında, "args" listesinin bir parçası olarak sağlanabilir:
| Seçenek | Açıklama |
|---|---|
| --allowed-hosts <hosts...> | Sunucunun hizmet vermesine izin verilen ana bilgisayarların virgülle ayrılmış listesi. Varsayılan olarak sunucunun bağlı olduğu ana bilgisayardır. Ana bilgisayar kontrolünü devre dışı bırakmak için '*' geçirin. env PLAYWRIGHT_MCP_ALLOWED_HOSTS |
| --allowed-origins | Tarayıcının istekte bulunmasına izin verilen GÜVENİLİR kaynakların noktalı virgülle ayrılmış listesi. Varsayılan olarak tümüne izin verilir. Önemli: güvenlik sınırı olarak hizmet etmez ve yönlendirmeleri etkilemez. env PLAYWRIGHT_MCP_ALLOWED_ORIGINS |
| --allow-unrestricted-file-access | Çalışma alanı kökleri dışındaki dosyalara erişime izin ver. Ayrıca file:// URL'lerine sınırsız erişime izin verir. Varsayılan olarak dosya sistemine erişim yalnızca çalışma alanı kök dizinleriyle (veya kök yapılandırılmamışsa cwd) sınırlıdır ve file:// URL'lerine gezinme engellenir. env PLAYWRIGHT_MCP_ALLOW_UNRESTRICTED_FILE_ACCESS |
| --blocked-origins | Tarayıcının istekte bulunmasının engelleneceği kaynakların noktalı virgülle ayrılmış listesi. Engelleme listesi, izin listesinden önce değerlendirilir. İzin listesi olmadan kullanılırsa, engelleme listesiyle eşleşmeyen isteklere yine de izin verilir. Önemli: güvenlik sınırı olarak hizmet etmez ve yönlendirmeleri etkilemez. env PLAYWRIGHT_MCP_BLOCKED_ORIGINS |
| --block-service-workers | Servis çalışanlarını engelle env PLAYWRIGHT_MCP_BLOCK_SERVICE_WORKERS |
| --browser | Kullanılacak tarayıcı veya chrome kanalı, olası değerler: chrome, firefox, webkit, msedge. env PLAYWRIGHT_MCP_BROWSER |
| --caps | Etkinleştirilecek ek yeteneklerin virgülle ayrılmış listesi, olası değerler: vision, pdf, devtools. env PLAYWRIGHT_MCP_CAPS |
| --cdp-endpoint | Bağlanılacak CDP uç noktası. env PLAYWRIGHT_MCP_CDP_ENDPOINT |
| --cdp-header <headers...> | Bağlantı isteğiyle gönderilecek CDP başlıkları, birden fazla belirtilebilir. env PLAYWRIGHT_MCP_CDP_HEADERS |
| --cdp-timeout | CDP uç noktasına bağlanma zaman aşımı milisaniye cinsinden, varsayılan 30000ms env PLAYWRIGHT_MCP_CDP_TIMEOUT |
| --codegen | Kod üretimi için kullanılacak dili belirtin, olası değerler: "typescript", "python", "java", "csharp", "none". Varsayılan "typescript"tir. env PLAYWRIGHT_MCP_CODEGEN |
| --config | Yapılandırma dosyasının yolu. env PLAYWRIGHT_MCP_CONFIG |
| --console-level | Döndürülecek konsol mesajlarının düzeyi: "error", "warning", "info", "debug". Her düzey, daha ciddi düzeylerin mesajlarını içerir. env PLAYWRIGHT_MCP_CONSOLE_LEVEL |
| --device | Taklit edilecek cihaz, örneğin: "iPhone 15" env PLAYWRIGHT_MCP_DEVICE |
| --mobile | Genel bir mobil cihazı taklit et (Chromium için Pixel 10, WebKit için iPhone 17). Mobil sayfalar genellikle daha hafiftir, bu da token tasarrufu sağlar. --device ile birleştirilemez. env PLAYWRIGHT_MCP_MOBILE |
| --executable-path | Tarayıcı çalıştırılabilir dosyasının yolu. env PLAYWRIGHT_MCP_EXECUTABLE_PATH |
| --extension | Çalışan bir tarayıcı örneğine bağlan (yalnızca Edge/Chrome). "Playwright Extension" kurulu olmalıdır. env PLAYWRIGHT_MCP_EXTENSION |
| --endpoint | Bağlanılacak bağlı tarayıcı uç noktası. env PLAYWRIGHT_MCP_ENDPOINT |
| --file-paths | Dosya yollarının araç sonuçlarında nasıl gösterileceği, çalışma alanı köküne "relative" (göreli) veya "absolute" (mutlak). Varsayılan "relative"tir. env PLAYWRIGHT_MCP_FILE_PATHS |
| --grant-permissions <permissions...> | Tarayıcı bağlamına verilecek izinlerin listesi, örneğin "geolocation", "clipboard-read", "clipboard-write". env PLAYWRIGHT_MCP_GRANT_PERMISSIONS |
| --headless | Tarayıcıyı headless modda çalıştır, varsayılan olarak başlıklıdır env PLAYWRIGHT_MCP_HEADLESS |
| --host | Sunucunun bağlanacağı ana bilgisayar. Varsayılan localhost'tur. Tüm arayüzlere bağlanmak için 0.0.0.0 kullanın. env PLAYWRIGHT_MCP_HOST |
| --idle-timeout | Tamamlanmış bir araç çağrısı olmadan bu kadar milisaniye sonra tarayıcıyı kapat, sonraki araç çağrısı onu yeniden başlatır. Headless tarayıcılar için varsayılan bir saat, başlıklılar için asla, 0 devre dışı bırakır. env PLAYWRIGHT_MCP_IDLE_TIMEOUT |
| --ignore-https-errors | https hatalarını yoksay env PLAYWRIGHT_MCP_IGNORE_HTTPS_ERRORS |
| --init-page <path...> | Playwright sayfa nesnesinde değerlendirilecek TypeScript dosyasının yolu env PLAYWRIGHT_MCP_INIT_PAGE |
| --init-script <path...> | Başlatma betiği olarak eklenecek JavaScript dosyasının yolu. Betik, sayfanın betiklerinden önce her sayfada değerlendirilecektir. Birden fazla belirtilebilir. env PLAYWRIGHT_MCP_INIT_SCRIPT |
| --isolated | Tarayıcı profilini bellekte tut, diske kaydetme. env PLAYWRIGHT_MCP_ISOLATED |
| --image-responses | İstemciye görüntü yanıtlarının gönderilip gönderilmeyeceği. "allow", "omit" veya "only" olabilir. "only" ile, görüntü taşıyan bir yanıt yalnızca görüntü bölümlerinden oluşur, metin bölümü olmadan. Varsayılan "allow"dur. env PLAYWRIGHT_MCP_IMAGE_RESPONSES |
| --no-sandbox | Normalde korumalı olan tüm işlem türleri için korumayı devre dışı bırak. env PLAYWRIGHT_MCP_NO_SANDBOX |
| --no-webmcp | Bir sayfanın WebMCP API aracılığıyla kaydettiği araçları toplama veya açığa çıkarma. env PLAYWRIGHT_MCP_WEBMCP=false |
| --output-dir | Otomatik adlandırılmış çıktı dosyaları için dizinin yolu, örneğin açık bir dosya adı olmadan alınan ekran görüntüsü. Açık adı olan dosyalar bunun yerine çalışma alanı köküne göre çözümlenir ve bu seçenekten etkilenmez. env PLAYWRIGHT_MCP_OUTPUT_DIR |
| --output-max-size | Eski çıktı dosyalarını çıkarmak için eşik, bayt cinsinden. env PLAYWRIGHT_MCP_OUTPUT_MAX_SIZE |
| --port | SSE taşıması için dinlenecek bağlantı noktası. env PLAYWRIGHT_MCP_PORT |
| --profile-dir-name | --extension ile bağlanılacak kullanıcı veri dizinindeki profil dizininin adı, örneğin "Profile 1". Varsayılan olarak uzantının kurulu olduğu son kullanılan profildir. env PLAYWRIGHT_MCP_PROFILE_DIR_NAME |
| --proxy-bypass | Proxy'yi atlayacak virgülle ayrılmış alan adları, örneğin ".com,chromium.org,.domain.com" env PLAYWRIGHT_MCP_PROXY_BYPASS |
| --proxy-server | Proxy sunucusunu belirtin, örneğin "http://myproxy:3128" veya "socks5://myproxy:8080" env PLAYWRIGHT_MCP_PROXY_SERVER |
| --sandbox | Normalde korumalı olmayan tüm işlem türleri için korumayı etkinleştir. env PLAYWRIGHT_MCP_SANDBOX |
| --save-session | Playwright MCP oturumunun çıktı dizinine kaydedilip kaydedilmeyeceği. env PLAYWRIGHT_MCP_SAVE_SESSION |
| --secrets | dotenv formatında sırlar içeren bir dosyanın yolu env PLAYWRIGHT_MCP_SECRETS_FILE |
| --shared-browser-context | Bağlı tüm HTTP istemcileri arasında aynı tarayıcı bağlamını yeniden kullan. env PLAYWRIGHT_MCP_SHARED_BROWSER_CONTEXT |
| --snapshot-boxes | Her öğenin sınırlayıcı kutusunu anlık görüntülere [box=x,y,width,height] olarak dahil et. Koordinatlar görünüm alanına görelidir, CSS piksel cinsinden. env PLAYWRIGHT_MCP_SNAPSHOT_BOXES |
| --snapshot-mode | Yanıtlar için anlık görüntü alırken kullanılacak modu belirtir. "full" veya "none" olabilir. Varsayılan "full"dur. env PLAYWRIGHT_MCP_SNAPSHOT_MODE |
| --storage-state | İzole oturumlar için depolama durumu dosyasının yolu. env PLAYWRIGHT_MCP_STORAGE_STATE |
| --test-id-attribute | Test kimlikleri için kullanılacak özniteliği belirtin, varsayılan "data-testid" env PLAYWRIGHT_MCP_TEST_ID_ATTRIBUTE |
| --timeout-action | Eylem zaman aşımını milisaniye cinsinden belirtin, varsayılan 5000ms env PLAYWRIGHT_MCP_TIMEOUT_ACTION |
| --timeout-navigation | Gezinme zaman aşımını milisaniye cinsinden belirtin, varsayılan 60000ms env PLAYWRIGHT_MCP_TIMEOUT_NAVIGATION |
| --timeout-settle | Her eylemden sonra tetiklenen işin yerleşmesi için beklenecek süre, milisaniye cinsinden, varsayılan 500ms env PLAYWRIGHT_MCP_TIMEOUT_SETTLE |
| --user-agent | Kullanıcı aracısı dizesini belirtin env PLAYWRIGHT_MCP_USER_AGENT |
| --user-data-dir | Kullanıcı veri dizininin yolu. Belirtilmezse geçici bir dizin oluşturulur. env PLAYWRIGHT_MCP_USER_DATA_DIR |
| --viewport-size | Tarayıcı görünüm alanı boyutunu piksel cinsinden belirtin, örneğin "1280x720" env PLAYWRIGHT_MCP_VIEWPORT_SIZE |
Kullanıcı profili
Playwright MCP'yi normal bir tarayıcı gibi kalıcı profille (varsayılan), test oturumları için izole bağlamlarda çalıştırabilir veya tarayıcı uzantısını kullanarak mevcut tarayıcınıza bağlanabilirsiniz.
Kalıcı profil
Oturum açmış tüm bilgiler kalıcı profilde saklanır, çevrimdışı durumu temizlemek isterseniz oturumlar arasında silebilirsiniz.
Kalıcı profil aşağıdaki konumlarda bulunur ve --user-data-dir bağımsız değişkeniyle geçersiz kılabilirsiniz.
# Windows
%USERPROFILE%\AppData\Local\ms-playwright\mcp-{channel}-{workspace-hash}
# macOS
- ~/Library/Caches/ms-playwright/mcp-{channel}-{workspace-hash}
# Linux
- ~/.cache/ms-playwright/mcp-{channel}-{workspace-hash}
{workspace-hash}, MCP istemcisinin çalışma alanı kökünden türetilir, böylece farklı projeler otomatik olarak ayrı profiller alır.
[!ÖNEMLİ] Kalıcı bir profil aynı anda yalnızca bir tarayıcı örneği tarafından kullanılabilir, bu nedenle aynı çalışma alanını paylaşan eşzamanlı MCP istemcileri çakışır. Birkaç istemciyi paralel çalıştırmak için, her ek istemciyi
--isolatedile başlatın veya onu ayrı bir--user-data-dirkonumuna yönlendirin.
İzole
İzole modda, her oturum izole profilde başlatılır. MCP'den tarayıcıyı kapatmasını istediğinizde,
oturum kapatılır ve bu oturum için tüm depolama durumu kaybolur. Tarayıcıya ilk depolama durumunu
yapılandırmanın contextOptions veya --storage-state bağımsız değişkeni aracılığıyla sağlayabilirsiniz. Depolama durumu hakkında daha fazla bilgi edinin burada.
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest",
"--isolated",
"--storage-state={path/to/storage.json}"
]
}
}
}
Tarayıcı Uzantısı
Playwright MCP Chrome Uzantısı, mevcut tarayıcı sekmelerine bağlanmanıza ve oturum açmış oturumlarınızdan ve tarayıcı durumunuzdan yararlanmanıza olanak tanır. Kurulum ve yapılandırma talimatları için microsoft/playwright › packages/extension adresine bakın.
Başlangıç durumu
Tarayıcı bağlamına veya bir sayfaya başlangıç durumu sağlamanın birkaç yolu vardır.
Depolama durumu için şunlardan birini yapabilirsiniz:
--user-data-dirbağımsız değişkenini kullanarak bir kullanıcı veri diziniyle başlayın. Bu, tüm tarayıcı verilerini oturumlar arasında kalıcı hale getirir.--storage-statebağımsız değişkenini kullanarak bir depolama durumu dosyasıyla başlayın. Bu, dosyadan çerezleri ve yerel depolamayı izole bir tarayıcı bağlamına yükler.
Sayfa durumu için şunları kullanabilirsiniz:
--init-page, Playwright sayfa nesnesinde değerlendirilecek bir TypeScript dosyasını işaret etmek için. Bu, sayfayı kurmak için rastgele kod çalıştırmanıza olanak tanır.
// init-page.ts
export default async ({ page }) => {
await page.context().grantPermissions(['geolocation']);
await page.context().setGeolocation({ latitude: 37.7749, longitude: -122.4194 });
await page.setViewportSize({ width: 1280, height: 720 });
};
--init-script, başlatma betiği olarak eklenecek bir JavaScript dosyasını işaret etmek için. Betik, sayfanın betiklerinden önce her sayfada değerlendirilecektir. Bu, tarayıcı API'lerini geçersiz kılmak veya ortamı kurmak için kullanışlıdır.
// init-script.js
window.isPlaywrightMCP = true;
Yapılandırma dosyası
Playwright MCP sunucusu bir JSON yapılandırma dosyası kullanılarak yapılandırılabilir. Yapılandırma dosyasını
--config komut satırı seçeneğini kullanarak belirtebilirsiniz:
npx @playwright/mcp@latest --config path/to/config.json
Yapılandırma dosyası şeması
{
/**
* The browser to use.
*/
browser?: {
/**
* The type of browser to use.
*/
browserName?: 'chromium' | 'firefox' | 'webkit';
/**
* Keep the browser profile in memory, do not save it to disk.
*/
isolated?: boolean;
/**
* Path to a user data directory for browser profile persistence.
* Temporary directory is created by default.
*/
userDataDir?: string;
/**
* Launch options passed to
* @see https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context
*
* This is useful for settings options like `channel`, `headless`, `executablePath`, etc.
*/
launchOptions?: playwright.LaunchOptions;
/**
* Context options for the browser context.
*
* This is useful for settings options like `viewport`.
*/
contextOptions?: playwright.BrowserContextOptions;
/**
* Chrome DevTools Protocol endpoint to connect to an existing browser instance in case of Chromium family browsers.
*/
cdpEndpoint?: string;
/**
* CDP headers to send with the connect request.
*/
cdpHeaders?: Record<string, string>;
/**
* Timeout in milliseconds for connecting to CDP endpoint. Defaults to 30000 (30 seconds). Pass 0 to disable timeout.
*/
cdpTimeout?: number;
/**
* Remote endpoint to connect to an existing Playwright server. May be a
* WebSocket URL string, or a [ConnectOptions] object that mirrors the
* `connectOptions` shape used by the test runner. When passed as an object,
* `exposeNetwork`, `headers`, `slowMo`, and `timeout` are forwarded to the
* underlying connect call.
*/
remoteEndpoint?: string | playwright.ConnectOptions & { endpoint: string };
/**
* Paths to TypeScript files to add as initialization scripts for Playwright page.
*/
initPage?: string[];
/**
* Paths to JavaScript files to add as initialization scripts.
* The scripts will be evaluated in every page before any of the page's scripts.
*/
initScript?: string[];
},
/**
* Connect to a running browser instance (Edge/Chrome only). If specified, `browser`
* config is ignored.
* Requires the "Playwright Extension" to be installed.
*/
extension?: boolean;
server?: {
/**
* The port to listen on for SSE or MCP transport.
*/
port?: number;
/**
* The host to bind the server to. Default is localhost. Use 0.0.0.0 to bind to all interfaces.
*/
host?: string;
/**
* The hosts this server is allowed to serve from. Defaults to the host server is bound to.
* This is not for CORS, but rather for the DNS rebinding protection.
*/
allowedHosts?: string[];
},
/**
* List of enabled tool capabilities. Possible values:
* - 'core': Core browser automation features.
* - 'pdf': PDF generation and manipulation.
* - 'vision': Coordinate-based interactions.
* - 'devtools': Developer tools features.
*/
capabilities?: ToolCapability[];
/**
* Whether to save the Playwright session into the output directory.
*/
saveSession?: boolean;
/**
* Whether to collect and expose the tools that a page registers through the
* experimental WebMCP API. Enabled by default.
*/
webmcp?: boolean;
/**
* Reuse the same browser context between all connected HTTP clients.
*/
sharedBrowserContext?: boolean;
/**
* Secrets are used to replace matching plain text in the tool responses to prevent the LLM
* from accidentally getting sensitive data. It is a convenience and not a security feature,
* make sure to always examine information coming in and from the tool on the client.
*/
secrets?: Record<string, string>;
/**
* The directory for automatically named output files, for example a screenshot taken without an
* explicit file name. Files with an explicit name are resolved against the workspace root instead
* and are not affected by this option.
*/
outputDir?: string;
/**
* Threshold for evicting old output files, in bytes.
*/
outputMaxSize?: number;
console?: {
/**
* The level of console messages to return. Each level includes the messages of more severe levels. Defaults to "info".
*/
level?: 'error' | 'warning' | 'info' | 'debug';
},
network?: {
/**
* List of origins to allow the browser to request. Default is to allow all. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
*
* Supported formats:
* - Full origin: `https://example.com:8080` - matches only that origin
* - Wildcard port: `http://localhost:*` - matches any port on localhost with http protocol
*/
allowedOrigins?: string[];
/**
* List of origins to block the browser to request. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
*
* Supported formats:
* - Full origin: `https://example.com:8080` - matches only that origin
* - Wildcard port: `http://localhost:*` - matches any port on localhost with http protocol
*/
blockedOrigins?: string[];
};
/**
* Specify the attribute to use for test ids, defaults to "data-testid".
*/
testIdAttribute?: string;
timeouts?: {
/*
* Configures default action timeout: https://playwright.dev/docs/api/class-page#page-set-default-timeout. Defaults to 5000ms.
*/
action?: number;
/*
* Configures default navigation timeout: https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout. Defaults to 60000ms.
*/
navigation?: number;
/**
* Configures default expect timeout: https://playwright.dev/docs/test-timeouts#expect-timeout. Defaults to 5000ms.
*/
expect?: number;
/**
* How long to wait after each action for triggered work (navigations, requests) to settle before responding. Defaults to 500ms.
*/
settle?: number;
/**
* Close the browser after this many milliseconds without a tool call, and relaunch it on the next one.
* Defaults to one hour for headless browsers Playwright launched, and to no timeout for headed or attached ones. Pass 0 to disable.
* The CLI shuts the whole session down instead of relaunching.
*/
idle?: number;
};
/**
* Whether to send image responses to the client. Can be "allow", "omit", or "only". Defaults to "allow".
* With "only", a response that carries an image consists of the image parts alone, without the text part.
*/
imageResponses?: 'allow' | 'omit' | 'only';
/**
* How file paths are rendered in tool results. Can be "relative" to the workspace root or "absolute". Defaults to "relative".
*/
filePaths?: 'relative' | 'absolute';
snapshot?: {
/**
* When taking snapshots for responses, specifies the mode to use.
*/
mode?: 'full' | 'none';
/**
* Whether to include each element's bounding box as [box=x,y,width,height] in snapshots.
* Coordinates are viewport-relative, in CSS pixels (Element.getBoundingClientRect).
*/
boxes?: boolean;
};
/**
* allowUnrestrictedFileAccess acts as a guardrail to prevent the LLM from accidentally
* wandering outside its intended workspace. It is a convenience defense to catch unintended
* file access, not a secure boundary; a deliberate attempt to reach other directories can be
* easily worked around, so always rely on client-level permissions for true security.
*/
allowUnrestrictedFileAccess?: boolean;
/**
* Specify the language to use for code generation.
*/
codegen?: 'typescript' | 'python' | 'java' | 'csharp' | 'none';
}
Bağımsız MCP sunucusu
Ekranı olmayan bir sistemde başlıklı tarayıcı çalıştırırken veya IDE'lerin çalışan süreçlerinden,
MCP sunucusunu DISPLAY ortamından çalıştırın ve HTTP taşımasını etkinleştirmek için --port bayrağını geçirin.
npx @playwright/mcp@latest --port 8931
Ardından MCP istemci yapılandırmasında, url değerini HTTP uç noktasına ayarlayın:
{
"mcpServers": {
"playwright": {
"url": "http://localhost:8931/mcp"
}
}
}
Güvenlik
Playwright MCP bir güvenlik sınırı değildir. Dağıtımınızı güvence altına alma konusunda rehberlik için MCP Güvenlik En İyi Uygulamaları bölümüne bakın.
Docker
NOT: Docker uygulaması şu anda yalnızca başsız chromium'u desteklemektedir.
{
"mcpServers": {
"playwright": {
"command": "docker",
"args": ["run", "-i", "--rm", "--init", "--pull=always", "mcr.microsoft.com/playwright/mcp"]
}
}
}
Veya MCP istemcisinin onu başlatmasına izin vermek yerine konteyneri uzun ömürlü bir hizmet olarak çalıştırmayı tercih ederseniz, şunu kullanın:
docker run -d -i --rm --init --pull=always \
--entrypoint node \
--name playwright \
-p 8931:8931 \
mcr.microsoft.com/playwright/mcp \
/app/cli.js --headless --browser chromium --no-sandbox --port 8931 --host 0.0.0.0
Sunucu, ana bilgisayar portu 8931 üzerinde dinler ve herhangi bir MCP istemcisi tarafından erişilebilir.
Docker imajını kendiniz de oluşturabilirsiniz.
docker build -t mcr.microsoft.com/playwright/mcp .
Programatik kullanım
import http from 'http';
import { createConnection } from '@playwright/mcp';
import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
http.createServer(async (req, res) => {
// ...
// Creates a headless Playwright MCP server with SSE transport
const connection = await createConnection({ browser: { launchOptions: { headless: true } } });
const transport = new SSEServerTransport('/messages', res);
await connection.connect(transport);
// ...
});
Araçlar
Temel otomasyon
- browser_click
- Başlık: Tıkla
- Açıklama: Bir web sayfasında tıklama gerçekleştirir
- Parametreler:
element(string, isteğe bağlı): Öğeyle etkileşim izni almak için kullanılan insan tarafından okunabilir öğe açıklamasıtarget(string): Sayfa anlık görüntüsünden tam hedef öğe referansı veya benzersiz bir öğe seçicidoubleClick(boolean, isteğe bağlı): Tek tıklama yerine çift tıklama yapılıp yapılmayacağıbutton(string, isteğe bağlı): Tıklanacak düğme, varsayılan olarak solmodifiers(array, isteğe bağlı): Basılacak değiştirici tuşlar
- Salt okunur: false
- browser_close
- Başlık: Tarayıcıyı kapat
- Açıklama: Sayfayı kapatır
- Parametreler: Yok
- Salt okunur: false
- browser_console_messages
- Başlık: Konsol mesajlarını al
- Açıklama: Tüm konsol mesajlarını döndürür
- Parametreler:
level(string): Döndürülecek konsol mesajlarının düzeyi. Her düzey, daha şiddetli düzeylerin mesajlarını içerir. Varsayılan "info"dur.all(boolean, isteğe bağlı): Yalnızca son gezinmeden bu yana değil, oturumun başlangıcından bu yana tüm konsol mesajlarını döndürür. Varsayılan false'tur.filename(string, isteğe bağlı): Konsol mesajlarının kaydedileceği dosya adı. Göreli dosya adları çalışma alanı köküne göre çözümlenir. Sağlanmazsa, mesajlar metin olarak döndürülür.
- Salt okunur: true
- browser_drag
- Başlık: Fareyi sürükle
- Açıklama: İki öğe arasında sürükle ve bırak gerçekleştirir
- Parametreler:
startElement(string, isteğe bağlı): Öğeyle etkileşim izni almak için kullanılan insan tarafından okunabilir kaynak öğe açıklamasıstartTarget(string): Sayfa anlık görüntüsünden tam hedef öğe referansı veya benzersiz bir öğe seçiciendElement(string, isteğe bağlı): Öğeyle etkileşim izni almak için kullanılan insan tarafından okunabilir hedef öğe açıklamasıendTarget(string): Sayfa anlık görüntüsünden tam hedef öğe referansı veya benzersiz bir öğe seçici
- Salt okunur: false
- browser_drop
- Başlık: Dosyaları veya verileri bir öğeye bırak
- Açıklama: Sayfa dışından sürüklenmiş gibi dosyaları veya MIME türünde verileri bir öğeye bırakır. "paths" veya "data" alanlarından en az biri sağlanmalıdır.
- Parametreler:
element(string, isteğe bağlı): Öğeyle etkileşim izni almak için kullanılan insan tarafından okunabilir öğe açıklamasıtarget(string): Sayfa anlık görüntüsünden tam hedef öğe referansı veya benzersiz bir öğe seçicipaths(array, isteğe bağlı): Öğeye bırakılacak dosyaların mutlak yolları.data(object, isteğe bağlı): Bırakılacak veriler, MIME türünün dize değerine eşlendiği bir harita olarak (ör. {"text/plain": "hello", "text/uri-list": "https://example.com"}).
- Salt okunur: false
- browser_emulate_media
- Başlık: Medya özelliklerini öykün
- Açıklama: Sayfa için CSS medya özelliklerini öykünür, örneğin açık ve koyu renk düzeni arasında geçiş yapar. Atlanan parametreler değiştirilmeden bırakılır; null bir geçersiz kılmayı temizler.
- Parametreler:
colorScheme(isteğe bağlı): prefers-color-scheme medya özelliğini öykünürreducedMotion(isteğe bağlı): prefers-reduced-motion medya özelliğini öykünürforcedColors(isteğe bağlı): forced-colors medya özelliğini öykünürcontrast(isteğe bağlı): prefers-contrast medya özelliğini öykünürmedia(isteğe bağlı): Sayfanın CSS medya türünü değiştirir
- Salt okunur: false
- browser_evaluate
- Başlık: JavaScript'i değerlendir
- Açıklama: Sayfada veya öğede JavaScript ifadesini değerlendirir
- Parametreler:
element(string, isteğe bağlı): Öğeyle etkileşim izni almak için kullanılan insan tarafından okunabilir öğe açıklamasıtarget(string, isteğe bağlı): Sayfa anlık görüntüsünden tam hedef öğe referansı veya benzersiz bir öğe seçicifunction(string): () => { /* kod / } veya öğe sağlandığında (element) => { / kod */ }filename(string, isteğe bağlı): Sonucun kaydedileceği dosya adı. Göreli dosya adları çalışma alanı köküne göre çözümlenir. Sağlanmazsa, sonuç metin olarak döndürülür.
- Salt okunur: false
- browser_file_upload
- Başlık: Dosyaları yükle
- Açıklama: Bir veya birden fazla dosyayı yükler
- Parametreler:
paths(array, isteğe bağlı): Yüklenecek dosyaların mutlak yolları. Tek dosya veya birden fazla dosya olabilir. Atlanırsa, dosya seçici iptal edilir.
- Salt okunur: false
- browser_fill_form
- Başlık: Formu doldur
- Açıklama: Birden fazla form alanını doldurur
- Parametreler:
fields(array): Doldurulacak alanlar
- Salt okunur: false
- browser_find
- Başlık: Sayfa anlık görüntüsünde bul
- Açıklama: Geçerli sayfanın erişilebilirlik anlık görüntüsünde metin veya normal ifade arar. Her biri ağacın kökünden kendi yolu altında gösterilen, birkaç satır çevreleyen bağlamla (arama parçacıkları gibi) eşleşen anlık görüntü düğümlerini döndürür; bu, yalnızca bir öğeyi ve referansını bulmanız gerektiğinde tüm anlık görüntüyü yakalamaktan daha ucuzdur.
- Parametreler:
text(string, isteğe bağlı): Sayfa anlık görüntüsünde aranacak düz metin (büyük/küçük harf duyarsız alt dize eşleşmesi). Yalnızca metin veya normal ifade sağlayın, ikisini birden değil.regex(string, isteğe bağlı): Sayfa anlık görüntüsünde aranacak normal ifade. Eşleştirme varsayılan olarak büyük/küçük harf duyarlıdır; bayrak eklemek için deseni eğik çizgilere sarın, ör. büyük/küçük harf duyarsız için "/error/i". Yalnızca metin veya normal ifade sağlayın, ikisini birden değil.filename(string, isteğe bağlı): Sonuçları yanıtta döndürmek yerine bir dosyaya kaydedin. Göreli dosya adları çalışma alanı köküne göre çözümlenir.
- Salt okunur: true
- browser_handle_dialog
- Başlık: Bir iletişim kutusunu işle
- Açıklama: Bir iletişim kutusunu işler
- Parametreler:
accept(boolean): İletişim kutusunun kabul edilip edilmeyeceği.promptText(string, isteğe bağlı): Bir istem iletişim kutusu durumunda istemin metni.
- Salt okunur: false
- browser_hover
- Başlık: Fareyi üzerine getir
- Açıklama: Sayfadaki öğenin üzerine gelir
- Parametreler:
element(string, isteğe bağlı): Öğeyle etkileşim izni almak için kullanılan insan tarafından okunabilir öğe açıklamasıtarget(string): Sayfa anlık görüntüsünden tam hedef öğe referansı veya benzersiz bir öğe seçici
- Salt okunur: false
- browser_navigate
- Başlık: Bir URL'ye git
- Açıklama: Bir URL'ye gider
- Parametreler:
url(string): Gidilecek URL
- Salt okunur: false
- browser_navigate_back
- Başlık: Geri git
- Açıklama: Geçmişteki önceki sayfaya geri döner
- Parametreler: Yok
- Salt okunur: false
- browser_network_request
- Başlık: Ağ isteği ayrıntılarını göster
- Açıklama: Tek bir ağ isteğinin tam ayrıntılarını (başlıklar ve gövde) veya
partayarlanmışsa tek bir bölümünü döndürür. browser_network_requests'ten gelen numarayı kullanın. - Parametreler:
index(integer): browser_network_requests tarafından yazdırıldığı gibi isteğin 1 tabanlı dizini.part(string, isteğe bağlı): İsteğin yalnızca bu bölümünü döndürür. Tam ayrıntıları döndürmek için atlayın.filename(string, isteğe bağlı): Sonucun kaydedileceği dosya adı. Göreli dosya adları çalışma alanı köküne göre çözümlenir. Sağlanmazsa, çıktı metin olarak döndürülür.
- Salt okunur: true
- browser_network_requests
- Başlık: Ağ isteklerini listele
- Açıklama: Sayfayı yükledikten sonraki ağ isteklerinin numaralı bir listesini döndürür. Tam ayrıntıları almak için numarayla browser_network_request kullanın.
- Parametreler:
static(boolean): Görüntüler, yazı tipleri, komut dosyaları vb. gibi başarılı statik kaynakların dahil edilip edilmeyeceği. Varsayılan false'tur.filter(string, isteğe bağlı): Yalnızca URL'si bu normal ifadeyle eşleşen istekleri döndürür (ör. "/api/.*user").filename(string, isteğe bağlı): Ağ isteklerinin kaydedileceği dosya adı. Göreli dosya adları çalışma alanı köküne göre çözümlenir. Sağlanmazsa, istekler metin olarak döndürülür.
- Salt okunur: true
- browser_press_key
- Başlık: Bir tuşa bas
- Açıklama: Klavyede bir tuşa basar
- Parametreler:
key(string): Basılacak tuşun adı veya oluşturulacak bir karakter, örneğinArrowLeftveyaa
- Salt okunur: false
- browser_resize
- Başlık: Tarayıcı penceresini yeniden boyutlandır
- Açıklama: Tarayıcı penceresini yeniden boyutlandırır
- Parametreler:
width(number): Tarayıcı penceresinin genişliğiheight(number): Tarayıcı penceresinin yüksekliği
- Salt okunur: false
- browser_run_code_unsafe
- Başlık: Playwright kodunu çalıştır (güvenli değil)
- Açıklama: Bir Playwright kod parçacığını çalıştırır. Güvenli değil: Playwright sunucu sürecinde rastgele JavaScript yürütür ve RCE'ye eşdeğerdir.
- Parametreler:
code(string, isteğe bağlı): Yürütülecek Playwright kodunu içeren bir JavaScript işlevi. Tek bir bağımsız değişken olan page ile çağrılır; herhangi bir sayfa etkileşimi için kullanabilirsiniz. Örneğin:async (page) => { await page.getByRole('button', { name: 'Submit' }).click(); return await page.title(); }filename(string, isteğe bağlı): Kodu belirtilen dosyadan yükleyin. Göreli dosya adları çalışma alanı köküne göre çözümlenir. Hem kod hem de dosya adı sağlanırsa, kod yok sayılır.
- Salt okunur: false
- browser_select_option
- Başlık: Seçenek seç
- Açıklama: Açılır listede bir seçenek seçer
- Parametreler:
element(string, isteğe bağlı): Öğeyle etkileşim izni almak için kullanılan insan tarafından okunabilir öğe açıklamasıtarget(string): Sayfa anlık görüntüsünden tam hedef öğe referansı veya benzersiz bir öğe seçicivalues(array): Açılır listede seçilecek değerler dizisi. Tek bir değer veya birden fazla değer olabilir.
- Salt okunur: false
- browser_snapshot
- Başlık: Sayfa anlık görüntüsü
- Açıklama: Geçerli sayfanın erişilebilirlik anlık görüntüsünü alır; bu, ekran görüntüsünden daha iyidir
- Parametreler:
target(string, isteğe bağlı): Sayfa anlık görüntüsünden tam hedef öğe referansı veya benzersiz bir öğe seçicifilename(string, isteğe bağlı): Anlık görüntüyü yanıtta döndürmek yerine bir dosyaya kaydeder. Göreli dosya adları çalışma alanı köküne göre çözümlenir.depth(number, isteğe bağlı): Anlık görüntü ağacının derinliğini sınırlarboxes(boolean, isteğe bağlı): Her öğenin sınırlayıcı kutusunu anlık görüntüde [box=x,y,width,height] olarak ekler. Koordinatlar görünüm alanına göredir, CSS piksel cinsindendir (Element.getBoundingClientRect)
- Salt okunur: true
- browser_take_screenshot
- Başlık: Ekran görüntüsü al
- Açıklama: Geçerli sayfanın ekran görüntüsünü alır. Ekran görüntüsüne dayalı eylemler gerçekleştiremezsiniz; eylemler için browser_snapshot kullanın.
- Parametreler:
element(string, isteğe bağlı): Öğeyle etkileşim izni almak için kullanılan insan tarafından okunabilir öğe açıklamasıtarget(string, isteğe bağlı): Sayfa anlık görüntüsünden tam hedef öğe referansı veya benzersiz bir öğe seçicitype(string, isteğe bağlı): Ekran görüntüsü için görüntü biçimi. Ayarlanmazsa, dosya adı uzantısından çıkarılır, aksi takdirde png.filename(string, isteğe bağlı): Ekran görüntüsünü kaydetmek için dosya adı. Göreli dosya adları çalışma alanı köküne göre çözümlenir. Belirtilmezse, ekran görüntüsü çıktı dizininepage-{timestamp}.{png|jpeg|webp}olarak kaydedilir.fullPage(boolean, isteğe bağlı): true olduğunda, geçerli görünür görünüm alanı yerine tam kaydırılabilir sayfanın ekran görüntüsünü alır. Öğe ekran görüntüleriyle kullanılamaz.scale(string): Görüntü çözünürlük ölçeği. "css", CSS piksel cinsinden boyutlandırılmış bir ekran görüntüsü üretir (daha küçük, cihazlar arasında tutarlı). "device", cihaz piksel oranını hesaba katan yüksek çözünürlüklü bir ekran görüntüsü üretir (daha büyük). Varsayılan css'dir.
- Salt okunur: true
- browser_type
- Başlık: Metin yaz
- Açıklama: Düzenlenebilir öğeye metin yazar
- Parametreler:
element(string, isteğe bağlı): Öğeyle etkileşim izni almak için kullanılan insan tarafından okunabilir öğe açıklamasıtarget(string): Sayfa anlık görüntüsünden tam hedef öğe referansı veya benzersiz bir öğe seçicitext(string): Öğeye yazılacak metinsubmit(boolean, isteğe bağlı): Girilen metnin gönderilip gönderilmeyeceği (sonrasında Enter'a basılır)slowly(boolean, isteğe bağlı): Metnin her seferinde bir karakter yazılıp yazılmayacağı. Sayfadaki tuş işleyicilerini tetiklemek için kullanışlıdır. Varsayılan olarak tüm metin bir kerede doldurulur.
- Salt okunur: false
- browser_wait_for
- Başlık: Bekle
- Açıklama: Metnin görünmesini veya kaybolmasını ya da belirli bir sürenin geçmesini bekler
- Parametreler:
time(number, isteğe bağlı): Beklenecek süre saniye cinsinden, en fazla 30text(string, isteğe bağlı): Beklenecek metintextGone(string, isteğe bağlı): Kaybolması beklenen metin
- Salt okunur: false
Sekme yönetimi
- browser_tabs
- Başlık: Sekmeleri yönet
- Açıklama: Tarayıcı sekmesini listeler, oluşturur, kapatır veya seçer.
- Parametreler:
action(string): Gerçekleştirilecek işlemindex(number, isteğe bağlı): Sekme dizini, kapatma/seçme için kullanılır. Kapatma için atlanırsa, geçerli sekme kapatılır.url(string, isteğe bağlı): Yeni sekmede gezinilecek URL, yeni için kullanılır.
- Salt okunur: false
Tarayıcı kurulumu
Yapılandırma (--caps=config ile isteğe bağlı)
- browser_get_config
- Başlık: Yapılandırmayı al
- Açıklama: CLI seçeneklerini, ortam değişkenlerini ve yapılandırma dosyasını birleştirdikten sonra nihai çözümlenmiş yapılandırmayı alır.
- Parametreler: Yok
- Salt okunur: true
Ağ (--caps=network ile isteğe bağlı)
- browser_network_state_set
- Başlık: Ağ durumunu ayarla
- Açıklama: Tarayıcı ağ durumunu çevrimiçi veya çevrimdışı olarak ayarlar. Çevrimdışıyken, tüm ağ istekleri başarısız olur.
- Parametreler:
state(string): Çevrimdışı modu simüle etmek için "offline", ağ bağlantısını geri yüklemek için "online" olarak ayarlayın
- Salt okunur: false
- browser_route
- Başlık: Ağ isteklerini simüle et
- Açıklama: Bir URL deseniyle eşleşen ağ isteklerini simüle etmek için bir rota ayarlar
- Parametreler:
pattern(string): Eşleştirilecek URL deseni (ör. "/api/users", "/*.{png,jpg}")status(number, isteğe bağlı): Döndürülecek HTTP durum kodu (varsayılan: 200)body(string, isteğe bağlı): Yanıt gövdesi (metin veya JSON dizesi)contentType(string, isteğe bağlı): Content-Type başlığı (ör. "application/json", "text/html")headers(array, isteğe bağlı): "Ad: Değer" biçiminde eklenecek başlıklarremoveHeaders(string, isteğe bağlı): İstekten kaldırılacak virgülle ayrılmış başlık adları listesi
- Salt okunur: false
- browser_route_list
- Başlık: Ağ rotalarını listele
- Açıklama: Tüm etkin ağ rotalarını listeler
- Parametreler: Yok
- Salt okunur: true
- browser_unroute
- Başlık: Ağ rotalarını kaldır
- Açıklama: Bir desenle eşleşen ağ rotalarını kaldırır (desen belirtilmezse tüm rotaları)
- Parametreler:
pattern(string, isteğe bağlı): Kaldırılacak URL deseni (tüm rotaları kaldırmak için atlayın)
- Salt okunur: false
Depolama (--caps=storage ile isteğe bağlı)
- browser_cookie_clear
- Başlık: Çerezleri temizle
- Açıklama: Tüm çerezleri temizler
- Parametreler: Yok
- Salt okunur: false
- browser_cookie_delete
- Başlık: Çerezi sil
- Açıklama: Belirli bir çerezi siler
- Parametreler:
name(string): Silinecek çerez adı
- Salt okunur: false
- browser_cookie_get
- Başlık: Çerezi al
- Açıklama: Ada göre belirli bir çerezi alır
- Parametreler:
name(string): Alınacak çerez adı
- Salt okunur: true
- browser_cookie_list
- Başlık: Çerezleri listele
- Açıklama: Tüm çerezleri listeler (isteğe bağlı olarak alan adı/yola göre filtrelenir)
- Parametreler:
domain(string, isteğe bağlı): Çerezleri alan adına göre filtrelerpath(string, isteğe bağlı): Çerezleri yola göre filtreler
- Salt okunur: true
- browser_cookie_set
- Başlık: Çerez ayarla
- Açıklama: İsteğe bağlı bayraklarla bir çerez ayarlar (domain, path, expires, httpOnly, secure, sameSite)
- Parametreler:
name(string): Çerez adıvalue(string): Çerez değeridomain(string, isteğe bağlı): Çerez alan adıpath(string, isteğe bağlı): Çerez yoluexpires(number, isteğe bağlı): Unix zaman damgası olarak çerez sona erme süresihttpOnly(boolean, isteğe bağlı): Çerezin yalnızca HTTP olup olmadığısecure(boolean, isteğe bağlı): Çerezin güvenli olup olmadığısameSite(string, isteğe bağlı): Çerez SameSite özniteliği
- Salt okunur: false
- browser_localstorage_clear
- Başlık: localStorage'ı temizle
- Açıklama: Tüm localStorage'ı temizler
- Parametreler: Yok
- Salt okunur: false
- browser_localstorage_delete
- Başlık: localStorage öğesini sil
- Açıklama: Bir localStorage öğesini siler
- Parametreler:
key(string): Silinecek anahtar
- Salt okunur: false
- browser_localstorage_get
- Başlık: localStorage öğesini al
- Açıklama: Anahtara göre bir localStorage öğesini alır
- Parametreler:
key(string): Alınacak anahtar
- Salt okunur: true
- browser_localstorage_list
- Başlık: localStorage'ı listele
- Açıklama: Tüm localStorage anahtar-değer çiftlerini listeler
- Parametreler: Yok
- Salt okunur: true
- browser_localstorage_set
- Başlık: localStorage öğesini ayarla
- Açıklama: Bir localStorage öğesi ayarlar
- Parametreler:
key(string): Ayarlanacak anahtarvalue(string): Ayarlanacak değer
- Salt okunur: false
- browser_sessionstorage_clear
- Başlık: sessionStorage'ı temizle
- Açıklama: Tüm sessionStorage'ı temizler
- Parametreler: Yok
- Salt okunur: false
- browser_sessionstorage_delete
- Başlık: sessionStorage öğesini sil
- Açıklama: Bir sessionStorage öğesini siler
- Parametreler:
key(string): Silinecek anahtar
- Salt okunur: false
- browser_sessionstorage_get
- Başlık: sessionStorage öğesini al
- Açıklama: Anahtara göre bir sessionStorage öğesini alır
- Parametreler:
key(string): Alınacak anahtar
- Salt okunur: true
- browser_sessionstorage_list
- Başlık: sessionStorage'ı listele
- Açıklama: Tüm sessionStorage anahtar-değer çiftlerini listeler
- Parametreler: Yok
- Salt okunur: true
- browser_sessionstorage_set
- Başlık: sessionStorage öğesini ayarla
- Açıklama: Bir sessionStorage öğesi ayarlar
- Parametreler:
key(string): Ayarlanacak anahtarvalue(string): Ayarlanacak değer
- Salt okunur: false
- browser_set_storage_state
- Başlık: Depolama durumunu geri yükle
- Açıklama: Bir dosyadan depolama durumunu (çerezler, yerel depolama) geri yükler. Bu, geri yüklemeden önce mevcut çerezleri ve yerel depolamayı temizler.
- Parametreler:
filename(string): Geri yüklenecek depolama durumu dosyasının yolu. Göreli dosya adları çalışma alanı köküne göre çözümlenir.
- Salt okunur: false
- browser_storage_state
- Başlık: Depolama durumunu kaydet
- Açıklama: Depolama durumunu (çerezler, yerel depolama) daha sonra yeniden kullanmak üzere bir dosyaya kaydeder
- Parametreler:
filename(string, isteğe bağlı): Depolama durumunu kaydetmek için dosya adı. Göreli dosya adları çalışma alanı köküne göre çözümlenir. Belirtilmezse, depolama durumu çıktı dizininestorage-state-{timestamp}.jsonolarak kaydedilir.
- Salt okunur: true
DevTools (--caps=devtools ile isteğe bağlı)
- browser_annotate
- Başlık: Geçerli sayfayı açıklama ekle
- Açıklama: Geçerli sayfa için Playwright Dashboard'u açıklama modunda açar ve kullanıcının açıklamalar çizmesini bekler. Açıklamalı ekran görüntüsünü, ARIA anlık görüntüsünü ve açıklama listesini döndürür.
- Parametreler: Yok
- Salt okunur: true
- browser_hide_highlight
- Başlık: Öğe vurgusunu gizle
- Açıklama: Öğe için daha önce eklenen bir vurgu katmanını kaldırır.
- Parametreler:
element(string, isteğe bağlı): Vurgu eklenirken kullanılan insan tarafından okunabilir öğe açıklaması; browser_highlight'a iletilen değerle eşleşmelidir.target(string, isteğe bağlı): Sayfa anlık görüntüsünden tam hedef öğe referansı veya benzersiz bir öğe seçici
- Salt okunur: true
- browser_highlight
- Başlık: Öğeyi vurgula
- Açıklama: Sayfadaki öğenin etrafında kalıcı bir vurgu katmanı gösterir.
- Parametreler:
element(string, isteğe bağlı): Öğeyle etkileşim izni almak için kullanılan insan tarafından okunabilir öğe açıklamasıtarget(string): Sayfa anlık görüntüsünden alınan tam hedef öğe referansı veya benzersiz bir öğe seçicistyle(string, isteğe bağlı): Vurgu katmanına uygulanan ek satır içi CSS, örn. "outline: 2px dashed red".
- Salt okunur: true
- browser_resume
- Başlık: Duraklatılmış komut dosyası yürütmeyi sürdür
- Açıklama: Duraklatıldıktan sonra komut dosyası yürütmeyi sürdürür. step true olarak çağrıldığında, yürütme bir sonraki eylemden önce tekrar duraklatılır.
- Parametreler:
step(boolean, isteğe bağlı): true olduğunda, yürütme bir sonraki eylemden önce tekrar duraklatılır ve adım adım hata ayıklamaya olanak tanır.location(string, isteğe bağlı): Belirli bir : konumunda yürütmeyi duraklatır, örn. "example.spec.ts:42".
- Salt okunur: false
- browser_start_recording
- Başlık: Kullanıcı eylemlerini kaydetmeye başla
- Açıklama: Kullanıcının tarayıcıda gerçekleştirdiği eylemleri Playwright kodu olarak kaydetmeye başlar. Kullanıcı bir akışı manuel olarak göstermek istediğinde kullanın. Kullanıcı bittiğini söylediğinde kaydedilen eylemleri almak için browser_stop_recording çağırın.
- Parametreler: Yok
- Salt okunur: true
- browser_start_tracing
- Başlık: İzlemeyi başlat
- Açıklama: İz kaydını başlat
- Parametreler: Yok
- Salt okunur: true
- browser_start_video
- Başlık: Videoyu başlat
- Açıklama: Video kaydını başlat
- Parametreler:
filename(string, isteğe bağlı): Videonun kaydedileceği dosya adı. Göreli dosya adları çalışma alanı köküne göre çözümlenir. Belirtilmezse, video çıktı dizininevideo-{timestamp}.webmolarak kaydedilir.size(object, isteğe bağlı): Video boyutufps(number, isteğe bağlı): Saniyedeki kare sayısı cinsinden video kare hızı, varsayılan 25cursor(boolean, isteğe bağlı): Her eylem noktasına giden animasyonlu bir fare imleci oluşturur. İmlecin hareket etmesi için eylemleri 800ms ile hızlandırır.
- Salt okunur: true
- browser_stop_recording
- Başlık: Kullanıcı eylemlerini kaydetmeyi durdur
- Açıklama: browser_start_recording ile başlatılan kaydı durdurur ve kaydedilen eylemleri Playwright kodu olarak döndürür.
- Parametreler: Yok
- Salt okunur: true
- browser_stop_tracing
- Başlık: İzlemeyi durdur
- Açıklama: İz kaydını durdur
- Parametreler: Yok
- Salt okunur: true
- browser_stop_video
- Başlık: Videoyu durdur
- Açıklama: Video kaydını durdur
- Parametreler: Yok
- Salt okunur: true
- browser_video_chapter
- Başlık: Video bölümü
- Açıklama: Video kaydına bir bölüm işareti ekler. Bulanık arka planlı tam ekran bir bölüm kartı gösterir.
- Parametreler:
title(string): Bölüm başlığıdescription(string, isteğe bağlı): Bölüm açıklamasıduration(number, isteğe bağlı): Bölüm kartının gösterileceği milisaniye cinsinden süre
- Salt okunur: true
- browser_video_hide_actions
- Başlık: Eylem katmanlarını gizle
- Açıklama: Sayfada gerçekleştirilen eylemleri açıklamayı durdur.
- Parametreler: Yok
- Salt okunur: true
- browser_video_show_actions
- Başlık: Eylem katmanlarını göster
- Açıklama: Sayfada gerçekleştirilen sonraki eylemleri, eylemi adlandıran ve stil uygulandığında eylem noktasını işaretleyen ve hedef öğeyi vurgulayan bir açıklama balonuyla açıklar. Video kaydı veya ekran kaydı sırasında kullanışlıdır.
- Parametreler:
duration(number, isteğe bağlı): Her eylem açıklamasının ekranda ne kadar kalacağı, milisaniye cinsinden. Varsayılan 500.position(string, isteğe bağlı): Eylem başlığının sayfaya göre nereye yerleştirileceği. Varsayılan sağ üst.cursor(string, isteğe bağlı): İşaretçi eylemleri için imleç dekorasyonu. "pointer" (varsayılan) bir fare imlecini önceki eylem noktasından sonrakine animasyonla taşır; "none" imleç dekorasyonunu devre dışı bırakır.style(object, isteğe bağlı): Eylem dekorasyonlarının stilleri.
- Salt okunur: true
Koordinat tabanlı (--caps=vision ile etkinleştirilir)
- browser_mouse_click_xy
- Başlık: Tıkla
- Açıklama: Belirli bir konumda fare düğmesine tıklar
- Parametreler:
x(number): X koordinatıy(number): Y koordinatıbutton(string, isteğe bağlı): Tıklanacak düğme, varsayılan solclickCount(number, isteğe bağlı): Tıklama sayısı, varsayılan 1delay(number, isteğe bağlı): Fare basma ve bırakma arasında milisaniye cinsinden beklenecek süre, varsayılan 0
- Salt okunur: false
- browser_mouse_down
- Başlık: Fareyi basılı tut
- Açıklama: Fareyi basılı tut
- Parametreler:
button(string, isteğe bağlı): Basılacak düğme, varsayılan sol
- Salt okunur: false
- browser_mouse_drag_xy
- Başlık: Fareyi sürükle
- Açıklama: Sol fare düğmesini belirli bir konuma sürükler
- Parametreler:
startX(number): Başlangıç X koordinatıstartY(number): Başlangıç Y koordinatıendX(number): Bitiş X koordinatıendY(number): Bitiş Y koordinatı
- Salt okunur: false
- browser_mouse_move_xy
- Başlık: Fareyi hareket ettir
- Açıklama: Fareyi belirli bir konuma hareket ettirir
- Parametreler:
x(number): X koordinatıy(number): Y koordinatı
- Salt okunur: false
- browser_mouse_up
- Başlık: Fareyi bırak
- Açıklama: Fareyi bırak
- Parametreler:
button(string, isteğe bağlı): Bırakılacak düğme, varsayılan sol
- Salt okunur: false
- browser_mouse_wheel
- Başlık: Fare tekerleğini kaydır
- Açıklama: Fare tekerleğini kaydır
- Parametreler:
deltaX(number): X deltadeltaY(number): Y delta
- Salt okunur: false
PDF oluşturma (--caps=pdf ile etkinleştirilir)
- browser_pdf_save
- Başlık: PDF olarak kaydet
- Açıklama: Sayfayı PDF olarak kaydeder
- Parametreler:
filename(string, isteğe bağlı): PDF'in kaydedileceği dosya adı. Göreli dosya adları çalışma alanı köküne göre çözümlenir. Belirtilmezse, PDF çıktı dizininepage-{timestamp}.pdfolarak kaydedilir.
- Salt okunur: true
Test doğrulamaları (--caps=testing ile etkinleştirilir)
- browser_generate_locator
- Başlık: Öğe için konumlandırıcı oluştur
- Açıklama: Testlerde kullanmak üzere verilen öğe için konumlandırıcı oluşturur
- Parametreler:
element(string, isteğe bağlı): Öğeyle etkileşim izni almak için kullanılan insan tarafından okunabilir öğe açıklamasıtarget(string): Sayfa anlık görüntüsünden alınan tam hedef öğe referansı veya benzersiz bir öğe seçici
- Salt okunur: true
- browser_verify_element_visible
- Başlık: Öğenin görünür olduğunu doğrula
- Açıklama: Öğenin sayfada görünür olduğunu doğrular
- Parametreler:
role(string): Öğenin ROLE'u. Anlık görüntüde şu şekilde bulunabilir:- {ROLE} "Accessible Name":accessibleName(string): Öğenin ACCESSIBLE_NAME'i. Anlık görüntüde şu şekilde bulunabilir:- role "{ACCESSIBLE_NAME}"
- Salt okunur: false
- browser_verify_list_visible
- Başlık: Listenin görünür olduğunu doğrula
- Açıklama: Listenin sayfada görünür olduğunu doğrular
- Parametreler:
element(string): İnsan tarafından okunabilir liste açıklamasıtarget(string): Listeyi gösteren tam hedef öğe referansıitems(array): Doğrulanacak öğeler
- Salt okunur: false
- browser_verify_text_visible
- Başlık: Metnin görünür olduğunu doğrula
- Açıklama: Metnin sayfada görünür olduğunu doğrular. Mümkünse browser_verify_element_visible tercih edin.
- Parametreler:
text(string): Doğrulanacak METİN. Anlık görüntüde şu şekilde bulunabilir:- role "Accessible Name": {TEXT}veya şu şekilde:- text: {TEXT}
- Salt okunur: false
- browser_verify_value
- Başlık: Değeri doğrula
- Açıklama: Öğe değerini doğrular
- Parametreler:
type(string): Öğenin türüelement(string): İnsan tarafından okunabilir öğe açıklamasıtarget(string): Sayfa anlık görüntüsünden alınan tam hedef öğe referansıvalue(string): Doğrulanacak değer. Onay kutusu için "true" veya "false" kullanın.
- Salt okunur: false