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.
Co się dzieje po zamknięciu sesji?
Zależy to od typu sesji i ustawień:
- Przeglądarka: Chrome całkowicie się zamyka
- Urządzenie mobilne z
noReset: false: Aplikacja kończy działanie - Urządzenie mobilne z
noReset: truelub bezappPath: Aplikacja pozostaje otwarta (sesja automatycznie się odłącza)
Czy mogę zachować stan aplikacji między sesjami?
Tak! Użyj opcji noReset:
"Uruchom moją aplikację z włączoną opcją noReset"
To zachowuje stan logowania, preferencje i inne dane aplikacji.
Jaka jest różnica między zamknięciem a odłączeniem?
- Zamknięcie: Całkowicie kończy działanie przeglądarki/aplikacji
- Odłączenie: Odłącza automatyzację, ale pozostawia przeglądarkę/aplikację działającą
Odłączenie jest przydatne, gdy chcesz ręcznie sprawdzić stan po automatyzacji.
Moja sesja ciągle wygasa podczas debugowania
Zwiększ limit czasu polecenia:
"Uruchom moją aplikację z newCommandTimeout ustawionym na 300 sekund"
Domyślnie to 60 sekund. Dla długich sesji debugowania spróbuj 300-600 sekund.
Rozwiązywanie problemów
Błąd "Session not found"
To oznacza, że nie istnieje aktywna sesja. Najpierw uruchom sesję przeglądarki lub aplikacji:
"Uruchom Chrome i przejdź do google.com"
Błąd "Element not found"
Element może nie być widoczny lub może mieć inny selektor. Spróbuj:
- Najpierw poprosić Claude o pobranie wszystkich widocznych elementów
- Podać bardziej precyzyjny selektor
- Poczekać na pełne załadowanie strony/aplikacji
- Użyć
inViewportOnly: false, aby znaleźć elementy poza ekranem
Przeglądarka nie uruchamia się
- Upewnij się, że Chrome jest zainstalowany
- Sprawdź, czy inny proces nie używa portu debugowania (9222)
- Spróbuj trybu headless
Nieudane połączenie z Appium
Jest to najczęstszy problem podczas uruchamiania automatyzacji mobilnej.
- Sprawdź, czy Appium jest uruchomiony:
curl http://localhost:4723/status - Uruchom Appium, jeśli to konieczne:
appium - Sprawdź, czy konfiguracja URL Appium pasuje do serwera
- Upewnij się, że sterowniki są zainstalowane:
appium driver list --installed
Serwer MCP wymaga, aby Appium działał przed rozpoczęciem sesji mobilnych. Upewnij się, że najpierw uruchomisz Appium:
appium
Przyszłe wersje mogą zawierać automatyczne zarządzanie usługą Appium.
Symulator iOS nie uruchamia się
- Upewnij się, że Xcode jest zainstalowany:
xcode-select --install - Lista dostępnych symulatorów:
xcrun simctl list devices - Sprawdź konkretne błędy symulatora w Console.app
Emulator Androida nie uruchamia się
- Ustaw
ANDROID_HOME:export ANDROID_HOME=$HOME/Library/Android/sdk - Sprawdź emulatory:
emulator -list-avds - Uruchom emulator ręcznie:
emulator -avd <avd-name> - Sprawdź, czy urządzenie jest podłączone:
adb devices
Zrzuty ekranu nie działają
- W przypadku urządzeń mobilnych, upewnij się, że sesja jest aktywna
- W przypadku przeglądarki, spróbuj innej strony (niektóre strony blokują zrzuty ekranu)
- Sprawd ź logi Claude Desktop pod kątem błędów
Zrzuty ekranu są automatycznie kompresowane do maksymalnie 1MB, więc duże zrzuty ekranu będą działać, ale mogą mieć niższą jakość.
Wydajność
Dlaczego automatyzacja mobilna jest wolna?
Automatyzacja mobilna obejmuje:
- Komunikację sieciową z serwerem Appium
- Komunikację Appium z urządzeniem/symulatorem
- Renderowanie i odpowiedź urządzenia
Wskazówki dla szybszej automatyzacji:
- Używaj emulatorów/symulatorów zamiast rzeczywistych urządzeń do rozwoju
- Używaj accessibility ID zamiast XPath
- Włącz
inViewportOnly: truedo wykrywania elementów - Używaj paginacji (
limit), aby zmniejszyć użycie tokenów
Jak przyspieszyć wykrywanie elementów?
Serwer MCP już optymalizuje wykrywanie elementów za pomocą parsowania źródła strony XML (2 wywołania HTTP vs 600+ dla tradycyjnych zapytań o elementy). Dodatkowe wskazówki:
- Zachowaj
inViewportOnly: true(domyślnie) - Ustaw
includeContainers: false(domyślnie) - Użyj
limitioffsetdo paginacji na dużych ekranach - Używaj konkretnych selektorów zamiast znajdowania wszystkich elementów
Zrzuty ekranu są wolne lub nie działają
Zrzuty ekranu są automatycznie optymalizowane:
- Zmiana rozmiaru, jeśli są większe niż 2000px
- Kompresja, aby zmieścić się w 1MB
- Konwersja do JPEG, jeśli PNG jest zbyt duży
Ta optymalizacja zmniejsza czas przetwarzania i zapewnia, że Claude może obsłużyć obraz.
Ograniczenia
Jakie są obecne ograniczenia?
- Pojedyncza sesja: Tylko jedna przeglądarka/aplikacja jednocześnie
- Wsparcie przeglądarek: Tylko Chrome (na razie)
- Wsparcie iframe'ów: Ograniczone wsparcie dla iframe'ów
- Przesyłanie plików: Nie jest bezpośrednio obsługiwane przez narzędzia
- Audio/Wideo: Brak możliwości interakcji z odtwarzaniem mediów
- Rozszerzenia przeglądarki: Nieobsługiwane
Czy mogę używać tego do testowania produkcyjnego?
WebdriverIO MCP jest zaprojektowany do interaktywnej automatyzacji wspomaganej przez AI. W przypadku produkcyjnych testów CI/CD rozważ użycie tradycyjnego test runnera WebdriverIO z pełną kontrolą programistyczną.
Bezpieczeństwo
Czy moje dane są bezpieczne?
Serwer MCP działa lokalnie na Twoim komputerze. Cała automatyzacja odbywa się za pośrednictwem lokalnych połączeń przeglądarki/Appium. Żadne dane nie są wysyłane do zewnętrznych serwerów poza tym, do czego wyraźnie nawigujesz.
Czy Claude może uzyskać dostęp do moich haseł?
Claude może widzieć zawartość strony i wchodzić w interakcję z elementami, ale:
- Hasła w polach
<input type="password">są maskowane - Powinieneś unikać automatyzacji wrażliwych poświadczeń
- Używaj kont testowych do automatyzacji
Wkład
Jak mogę wnieść swój wkład?
Odwiedź repozytorium GitHub, aby:
- Zgłaszać błędy
- Żądać funkcji
- Przesyłać pull requesty