FAQ
Najczęściej zadawane pytania dotyczące WebdriverIO MCP.
Ogólne
Czym jest MCP?
MCP (Model Context Protocol) to otwarty protokół, który umożliwia asystentom AI, takim jak Claude, interakcję z zewnętrznymi narzędziami i usługami. WebdriverIO MCP implementuje ten protokół, aby zapewnić możliwości automatyzacji przeglądarek i urządzeń mobilnych dla Claude Desktop i Claude Code.
Co mogę automatyzować za pomocą WebdriverIO MCP?
Możesz automatyzować:
- Przeglądarki desktopowe (Chrome) - nawigację, klikanie, pisanie, zrzuty ekranu
- Aplikacje iOS - na symulatorach lub rzeczywistych urządzeniach
- Aplikacje Android - na emulatorach lub rzeczywistych urządzeniach
- Aplikacje hybrydowe - przełączanie między kontekstami natywnym i webowym
Czy muszę pisać kod?
Nie! To główna zaleta MCP. Możesz opisać, co chcesz zrobić, w języku naturalnym, a Claude użyje odpowiednich narzędzi, aby wykonać zadanie.
Przykładowe zapytania:
- "Otwórz Chrome i przejdź do webdriver.io"
- "Kliknij przycisk Get Started"
- "Zrób zrzut ekranu aktualnej strony"
- "Uruchom moją aplikację iOS i zaloguj się jako użytkownik testowy"
Instalacja i konfiguracja
Jak zainstalować WebdriverIO MCP?
Nie musisz instalować go osobno. Serwer MCP uruchamia się automatycznie przez npx, gdy skonfigurujesz go w Claude Desktop lub Claude Code.
Dodaj to do swojej konfiguracji Claude Desktop:
{
"mcpServers": {
"wdio-mcp": {
"command": "npx",
"args": ["-y", "@wdio/mcp"]
}
}
}
Gdzie znajduje się plik konfiguracyjny Claude Desktop?
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Czy potrzebuję Appium do automatyzacji przeglądarki?
Nie. Automatyzacja przeglądarki wymaga tylko zainstalowania Chrome. WebdriverIO automatycznie obsługuje ChromeDriver.
Czy potrzebuję Appium do automatyzacji urządzeń mobilnych?
Tak. Automatyzacja mobilna wymaga:
- Uruchomionego serwera Appium (
npm install -g appium && appium) - Zainstalowanych sterowników platformy (
appium driver install xcuitestdla iOS,appium driver install uiautomator2dla Androida) - Odpowiednich narzędzi programistycznych (Xcode dla iOS, Android SDK dla Androida)
Automatyzacja przeglądarki
Które przeglądarki są obsługiwane?
Obecnie obsługiwany jest tylko Chrome. Wsparcie dla innych przeglądarek może zostać dodane w przyszłych wersjach.
Czy mogę uruchomić Chrome w trybie headless?
Tak! Poproś Claude o uruchomienie przeglądarki w trybie headless:
"Uruchom Chrome w trybie headless"
Lub Claude użyje tej opcji, gdy będzie to odpowiednie (np. w kontekstach CI/CD).
Czy mogę ustawić rozmiar okna przeglądarki?
Tak. Możesz określić wymiary podczas uruchamiania przeglądarki:
"Uruchom Chrome z rozmiarem okna 1920x1080"
Obsługiwane wymiary: 400-3840 pikseli szerokości, 400-2160 pikseli wysokości. Domyślnie to 1920x1080.
Czy mogę uruchomić przeglądarkę i przejść do strony w jednym kroku?
Tak! Użyj parametru navigationUrl:
"Uruchom Chrome i przejdź do https://webdriver.io"
Jest to bardziej efektywne niż uruchamianie przeglądarki, a następnie osobna nawigacja.
Jak robić zrzuty ekranu?
Po prostu poproś Claude:
"Zrób zrzut ekranu aktualnej strony"
Zrzuty ekranu są automatycznie optymalizowane:
- Skalowane do maksymalnie 2000px wymiarów
- Kompresowane do maksymalnie 1MB rozmiaru pliku
- Format: PNG lub JPEG (automatycznie wybierany dla optymalnej jakości)
Czy mogę wchodzić w interakcję z iframe'ami?
Obecnie serwer MCP działa na głównym dokumencie. Interakcja z iframe'ami może zostać dodana w przyszłych wersjach.
Czy mogę wykonywać niestandardowy JavaScript?
Tak! Użyj narzędzia execute_script:
"Wykonaj skrypt, aby pobrać tytuł strony" "Wykonaj skrypt: return document.querySelectorAll('button').length"
Automatyzacja mobilna
Jak uruchomić aplikację iOS?
Poproś Claude o niezbędne szczegóły:
"Uruchom moją aplikację iOS znajdującą się w /path/to/MyApp.app na symulatorze iPhone 15"
Lub dla zainstalowanej aplikacji:
"Uruchom aplikację z włączoną opcją noReset na symulatorze iPhone 15"
Jak uruchomić aplikację Android?
"Uruchom moją aplikację Android w /path/to/app.apk na emulatorze Pixel 7"
Lub dla zainstalowanej aplikacji:
"Uruchom aplikację z włączoną opcją noReset na emulatorze Pixel 7"
Czy mogę testować na rzeczywistych urządzeniach?
Tak! Dla rzeczywistych urządzeń potrzebujesz UDID urządzenia:
- iOS: Podłącz urządzenie, otwórz Finder, kliknij urządzenie, kliknij numer seryjny, aby pokazać UDID
- Android: Uruchom
adb devicesw terminalu
Następnie poproś Claude:
"Uruchom moją aplikację iOS na rzeczywistym urządzeniu z UDID abc123..."
Jak obsługiwać dialogi uprawnień?
Domyślnie uprawnienia są automatycznie przyznawane (autoGrantPermissions: true). Jeśli potrzebujesz testować przepływy uprawnień, możesz wyłączyć tę opcję:
"Uruchom moją aplikację bez automatycznego przyznawania uprawnień"
Jakie gesty są obsługiwane?
- Stuknięcie: Stukanie w elementy lub współrzędne
- Przesuwanie: Przesuwanie w górę, w dół, w lewo lub w prawo
- Przeciągnij i upuść: Przeciąganie z jednego elementu do drugiego lub do współrzędnych
Uwaga: long_press jest dostępny przez execute_script z poleceniami mobilnymi Appium.
Jak przewijać w aplikacjach mobilnych?
Użyj gestów przesuwania:
"Przesuń w górę, aby przewinąć w dół" "Przesuń w dół, aby przewinąć w górę"
Czy mogę obrócić urządzenie?
Tak:
"Obróć urządzenie do pozycji poziomej" "Obróć urządzenie do pozycji pionowej"
Jak obsługiwać aplikacje hybrydowe?
W przypadku aplikacji z webview możesz przełączać konteksty:
"Pobierz dostępne konteksty" "Przełącz na kontekst webview" "Przełącz z powrotem na kontekst natywny"
Czy mogę wykonywać polecenia mobilne Appium?
Tak! Użyj narzędzia execute_script:
Execute script "mobile: pressKey" with args [{ keycode: 4 }] // Naciśnij BACK na Androidzie
Execute script "mobile: activateApp" with args [{ appId: "com.example.app" }]
Execute script "mobile: terminateApp" with args [{ bundleId: "com.example.app" }]
Wybór elementów
Skąd Claude wie, z którym elementem wchodzić w interakcję?
Claude używa narzędzia get_visible_elements do identyfikacji interaktywnych elementów na stronie/ekranie. Każdy element zawiera wiele strategii selektora.
Co jeśli na stronie jest zbyt wiele elementów?
Użyj paginacji do zarządzania dużymi listami elementów:
"Pobierz pierwsze 20 widocznych elementów" "Pobierz widoczne elementy z offsetem 20 i limitem 20"
Odpowiedź zawiera total, showing i hasMore, aby pomóc w nawigacji przez elementy.
Czy mogę pobrać tylko określone typy elementów?
Tak! Użyj parametru elementType:
interactable(domyślnie): Przyciski, linki, pola wprowadzaniavisual: Obrazy, SVGall: Oba typy
"Pobierz widoczne elementy wizualne na stronie"
Co jeśli Claude kliknie niewłaściwy element?
Możesz być bardziej precyzyjny:
- Podaj dokładny tekst: "Kliknij przycisk z napisem 'Złóż zamówienie'"
- Podaj selektor: "Kliknij element z selektorem #submit-btn"
- Podaj ID dostępności: "Kliknij element z ID dostępności loginButton"
Jaka jest najlepsza strategia selektora dla urządzeń mobilnych?
- Accessibility ID (najlepszy) -
~loginButton - Resource ID (Android) -
id=login_button - Predicate String (iOS) -
-ios predicate string:label == "Login" - XPath (ostatnia opcja) - wolniejszy, ale działa wszędzie
Czym jest drzewo dostępności i kiedy powinienem go używać?
Drzewo dostępności dostarcza semantycznych informacji o elementach strony (role, nazwy, stany). Użyj get_accessibility gdy:
get_visible_elementsnie zwraca oczekiwanych elementów- Potrzebujesz znaleźć elementy według roli dostępności (przycisk, link, pole tekstowe itp.)
- Potrzebujesz szczegółowych informacji semantycznych o elementach
"Pobierz drzewo dostępności przefiltrowane do ról przycisków i linków"
Zarządzanie sesjami
Czy mogę mieć wiele sesji jednocześnie?
Nie. Serwer MCP używa modelu jednej sesji. Tylko jedna sesja przeglądarki lub aplikacji może być aktywna w danym momencie.