FAQ
Questions fréquemment posées sur WebdriverIO MCP.
GĂ©nĂ©ralâ
Qu'est-ce que MCP ?â
MCP (Model Context Protocol) est un protocole ouvert qui permet aux assistants IA comme Claude d'interagir avec des outils et services externes. WebdriverIO MCP implémente ce protocole pour fournir des capacités d'automatisation de navigateur et mobile à Claude Desktop et Claude Code.
Que puis-je automatiser avec WebdriverIO MCP ?â
Vous pouvez automatiser :
- Navigateurs de bureau (Chrome) - navigation, clics, saisie, captures d'écran
- Applications iOS - sur simulateurs ou appareils réels
- Applications Android - sur émulateurs ou appareils réels
- Applications hybrides - passage entre contextes natifs et web
Dois-je Ă©crire du code ?â
Non ! C'est l'avantage principal de MCP. Vous pouvez décrire ce que vous voulez faire en langage naturel, et Claude utilisera les outils appropriés pour accomplir la tùche.
Exemples de prompts :
- "Ouvre Chrome et navigue vers webdriver.io"
- "Clique sur le bouton Get Started"
- "Prends une capture d'écran de la page actuelle"
- "Démarre mon application iOS et connecte-toi en tant qu'utilisateur test"
Installation et configurationâ
Comment installer WebdriverIO MCP ?â
Vous n'avez pas besoin de l'installer séparément. Le serveur MCP s'exécute automatiquement via npx lorsque vous le configurez dans Claude Desktop ou Claude Code.
Ajoutez ceci Ă votre configuration Claude Desktop :
{
"mcpServers": {
"wdio-mcp": {
"command": "npx",
"args": ["-y", "@wdio/mcp"]
}
}
}
OĂč se trouve le fichier de configuration Claude Desktop ?â
- macOS :
~/Library/Application Support/Claude/claude_desktop_config.json - Windows :
%APPDATA%\Claude\claude_desktop_config.json
Ai-je besoin d'Appium pour l'automatisation de navigateur ?â
Non. L'automatisation de navigateur nécessite uniquement l'installation de Chrome. WebdriverIO gÚre ChromeDriver automatiquement.
Ai-je besoin d'Appium pour l'automatisation mobile ?â
Oui. L'automatisation mobile nécessite :
- Un serveur Appium en cours d'exécution (
npm install -g appium && appium) - Des pilotes de plateforme installés (
appium driver install xcuitestpour iOS,appium driver install uiautomator2pour Android) - Des outils de développement appropriés (Xcode pour iOS, Android SDK pour Android)
Automatisation de navigateurâ
Quels navigateurs sont pris en charge ?â
Actuellement, seul Chrome est pris en charge. La prise en charge d'autres navigateurs pourrait ĂȘtre ajoutĂ©e dans les versions futures.
Puis-je exĂ©cuter Chrome en mode headless ?â
Oui ! Demandez à Claude de démarrer le navigateur en mode headless :
"Démarre Chrome en mode headless"
Ou Claude utilisera cette option lorsque c'est approprié (par exemple, dans les contextes CI/CD).
Puis-je dĂ©finir la taille de la fenĂȘtre du navigateur ?â
Oui. Vous pouvez spécifier les dimensions au démarrage du navigateur :
"DĂ©marre Chrome avec une taille de fenĂȘtre de 1920x1080"
Dimensions prises en charge : 400-3840 pixels de large, 400-2160 pixels de haut. Par défaut : 1920x1080.
Puis-je dĂ©marrer le navigateur et naviguer en une seule Ă©tape ?â
Oui ! Utilisez le paramĂštre navigationUrl :
"Démarre Chrome et navigue vers https://webdriver.io"
C'est plus efficace que de démarrer le navigateur puis de naviguer séparément.
Comment prendre des captures d'Ă©cran ?â
Demandez simplement Ă Claude :
"Prends une capture d'écran de la page actuelle"
Les captures d'écran sont automatiquement optimisées :
- Redimensionnées à une dimension max de 2000px
- Compressées à une taille max de 1MB
- Format : PNG ou JPEG (automatiquement sélectionné pour une qualité optimale)
Puis-je interagir avec les iframes ?â
Actuellement, le serveur MCP opĂšre sur le document principal. L'interaction avec les iframes pourrait ĂȘtre ajoutĂ©e dans les versions futures.
Puis-je exĂ©cuter du JavaScript personnalisĂ© ?â
Oui ! Utilisez l'outil execute_script :
"Exécute un script pour obtenir le titre de la page" "Exécute le script : return document.querySelectorAll('button').length"
Automatisation mobileâ
Comment dĂ©marrer une application iOS ?â
Demandez à Claude avec les détails nécessaires :
"Démarre mon application iOS située à /path/to/MyApp.app sur le simulateur iPhone 15"
Ou pour une application installée :
"Démarre l'application avec noReset activé sur le simulateur iPhone 15"
Comment dĂ©marrer une application Android ?â
"Démarre mon application Android à /path/to/app.apk sur l'émulateur Pixel 7"
Ou pour une application installée :
"Démarre l'application avec noReset activé sur l'émulateur Pixel 7"
Puis-je tester sur des appareils rĂ©els ?â
Oui ! Pour les appareils réels, vous aurez besoin de l'UDID de l'appareil :
- iOS : Connectez l'appareil, ouvrez Finder, cliquez sur l'appareil, cliquez sur le numéro de série pour révéler l'UDID
- Android : Exécutez
adb devicesdans le terminal
Puis demandez Ă Claude :
"Démarre mon application iOS sur l'appareil réel avec l'UDID abc123..."
Comment gĂ©rer les boĂźtes de dialogue d'autorisation ?â
Par défaut, les autorisations sont accordées automatiquement (autoGrantPermissions: true). Si vous devez tester les flux d'autorisation, vous pouvez désactiver cette option :
"Démarre mon application sans accorder automatiquement les autorisations"
Quels gestes sont pris en charge ?â
- Tap : Appuyer sur des éléments ou des coordonnées
- Swipe : Glisser vers le haut, le bas, la gauche ou la droite
- Drag and Drop : Faire glisser d'un élément à un autre ou vers des coordonnées
Remarque : long_press est disponible via execute_script avec les commandes mobiles Appium.
Comment faire dĂ©filer dans les applications mobiles ?â
Utilisez des gestes de balayage :
"Balaye vers le haut pour défiler vers le bas" "Balaye vers le bas pour défiler vers le haut"
Puis-je faire pivoter l'appareil ?â
Oui :
"Fais pivoter l'appareil en mode paysage" "Fais pivoter l'appareil en mode portrait"
Comment gĂ©rer les applications hybrides ?â
Pour les applications avec des webviews, vous pouvez changer de contexte :
"Obtiens les contextes disponibles" "Passe au contexte webview" "Retourne au contexte natif"
Puis-je exĂ©cuter des commandes mobiles Appium ?â
Oui ! Utilisez l'outil execute_script :
Exécute le script "mobile: pressKey" avec les arguments [{ keycode: 4 }] // Appuie sur RETOUR sur Android
Exécute le script "mobile: activateApp" avec les arguments [{ appId: "com.example.app" }]
Exécute le script "mobile: terminateApp" avec les arguments [{ bundleId: "com.example.app" }]
SĂ©lection d'Ă©lĂ©mentsâ
Comment Claude sait-il avec quel Ă©lĂ©ment interagir ?â
Claude utilise l'outil get_visible_elements pour identifier les éléments interactifs sur la page/écran. Chaque élément est accompagné de plusieurs stratégies de sélecteur.
Que faire s'il y a trop d'Ă©lĂ©ments sur la page ?â
Utilisez la pagination pour gérer les grandes listes d'éléments :
"Obtiens les 20 premiers éléments visibles" "Obtiens les éléments visibles avec un décalage de 20 et une limite de 20"
La réponse inclut total, showing et hasMore pour aider à naviguer à travers les éléments.
Puis-je obtenir uniquement des types spĂ©cifiques d'Ă©lĂ©ments ?â
Oui ! Utilisez le paramĂštre elementType :
interactable(par défaut) : Boutons, liens, champs de saisievisual: Images, SVGsall: Les deux types
"Obtiens les éléments visuels visibles sur la page"
Que faire si Claude clique sur le mauvais Ă©lĂ©ment ?â
Vous pouvez ĂȘtre plus prĂ©cis :
- Fournir le texte exact : "Clique sur le bouton qui dit 'Valider la commande'"
- Fournir le sélecteur : "Clique sur l'élément avec le sélecteur #submit-btn"
- Fournir l'ID d'accessibilité : "Clique sur l'élément avec l'ID d'accessibilité loginButton"
Quelle est la meilleure stratĂ©gie de sĂ©lecteur pour mobile ?â
- Accessibility ID (meilleur) -
~loginButton - Resource ID (Android) -
id=login_button - Predicate String (iOS) -
-ios predicate string:label == "Login" - XPath (dernier recours) - plus lent mais fonctionne partout
Qu'est-ce que l'arbre d'accessibilitĂ© et quand devrais-je l'utiliser ?â
L'arbre d'accessibilité fournit des informations sémantiques sur les éléments de la page (rÎles, noms, états). Utilisez get_accessibility quand :
get_visible_elementsne renvoie pas les éléments attendus- Vous devez trouver des éléments par rÎle d'accessibilité (bouton, lien, zone de texte, etc.)
- Vous avez besoin d'informations sémantiques détaillées sur les éléments
"Obtiens l'arbre d'accessibilité filtré aux rÎles de bouton et de lien"
Gestion de sessionâ
Puis-je avoir plusieurs sessions en mĂȘme temps ?â
Non. Le serveur MCP utilise un modĂšle Ă session unique. Une seule session de navigateur ou d'application peut ĂȘtre active Ă la fois.
Que se passe-t-il lorsque je ferme une session ?â
Cela dépend du type de session et des paramÚtres :
- Navigateur : Chrome se ferme complĂštement
- Mobile avec
noReset: false: L'application se termine - Mobile avec
noReset: trueou sansappPath: L'application reste ouverte (la session se détache automatiquement)
Puis-je prĂ©server l'Ă©tat de l'application entre les sessions ?â
Oui ! Utilisez l'option noReset :
"Démarre mon application avec noReset activé"
Cela préserve l'état de connexion, les préférences et autres données de l'application.
Quelle est la diffĂ©rence entre fermer et dĂ©tacher ?â
- Fermer : Termine complĂštement le navigateur/l'application
- Détacher : Déconnecte l'automatisation mais garde le navigateur/l'application en cours d'exécution
Le détachement est utile lorsque vous souhaitez inspecter manuellement l'état aprÚs l'automatisation.
Ma session expire continuellement pendant le dĂ©bogageâ
Augmentez le délai de commande :
"Démarre mon application avec un newCommandTimeout de 300 secondes"
La valeur par défaut est de 60 secondes. Pour les longues sessions de débogage, essayez 300-600 secondes.
DĂ©pannageâ
Erreur "Session non trouvĂ©e"â
Cela signifie qu'aucune session active n'existe. Démarrez d'abord une session de navigateur ou d'application :
"Démarre Chrome et navigue vers google.com"
Erreur "ĂlĂ©ment non trouvĂ©"â
L'Ă©lĂ©ment pourrait ne pas ĂȘtre visible ou avoir un sĂ©lecteur diffĂ©rent. Essayez :
- De demander d'abord à Claude d'obtenir tous les éléments visibles
- De fournir un sélecteur plus spécifique
- D'attendre que la page/application se charge complĂštement
- D'utiliser
inViewportOnly: falsepour trouver des éléments hors écran
Le navigateur ne dĂ©marre pasâ
- Assurez-vous que Chrome est installé
- Vérifiez si un autre processus utilise le port de débogage (9222)
- Essayez le mode headless
La connexion Appium a Ă©chouĂ©â
C'est le problÚme le plus courant lors du démarrage de l'automatisation mobile.
- Vérifiez qu'Appium est en cours d'exécution :
curl http://localhost:4723/status - Démarrez Appium si nécessaire :
appium - Vérifiez que votre configuration d'URL Appium correspond au serveur
- Assurez-vous que les pilotes sont installés :
appium driver list --installed
Le serveur MCP nécessite qu'Appium soit en cours d'exécution avant de démarrer les sessions mobiles. Assurez-vous de démarrer Appium d'abord :
appium
Les versions futures pourraient inclure une gestion automatique du service Appium.
Le simulateur iOS ne dĂ©marre pasâ
- Assurez-vous que Xcode est installé :
xcode-select --install - Listez les simulateurs disponibles :
xcrun simctl list devices - Vérifiez les erreurs spécifiques au simulateur dans Console.app
L'Ă©mulateur Android ne dĂ©marre pasâ
- Définissez
ANDROID_HOME:export ANDROID_HOME=$HOME/Library/Android/sdk - Vérifiez les émulateurs :
emulator -list-avds - Démarrez l'émulateur manuellement :
emulator -avd <avd-name> - Vérifiez que l'appareil est connecté :
adb devices
Les captures d'Ă©cran ne fonctionnent pasâ
- Pour mobile, assurez-vous que la session est active
- Pour le navigateur, essayez une page différente (certaines pages bloquent les captures d'écran)
- Vérifiez les journaux Claude Desktop pour les erreurs
Les captures d'Ă©cran sont automatiquement compressĂ©es Ă 1MB maximum, donc les grandes captures fonctionneront mais pourront ĂȘtre de qualitĂ© infĂ©rieure.
Performanceâ
Pourquoi l'automatisation mobile est-elle lente ?â
L'automatisation mobile implique :
- Communication réseau avec le serveur Appium
- Communication d'Appium avec l'appareil/simulateur
- Rendu et réponse de l'appareil
Conseils pour une automatisation plus rapide :
- Utilisez des émulateurs/simulateurs au lieu d'appareils réels pour le développement
- Utilisez des accessibility IDs au lieu de XPath
- Activez
inViewportOnly: truepour la détection d'éléments - Utilisez la pagination (
limit) pour réduire l'utilisation de tokens
Comment accĂ©lĂ©rer la dĂ©tection d'Ă©lĂ©ments ?â
Le serveur MCP optimise dĂ©jĂ la dĂ©tection d'Ă©lĂ©ments en utilisant l'analyse XML de la source de page (2 appels HTTP contre 600+ pour les requĂȘtes d'Ă©lĂ©ments traditionnelles). Conseils supplĂ©mentaires :
- Gardez
inViewportOnly: true(par défaut) - Réglez
includeContainers: false(par défaut) - Utilisez
limitetoffsetpour la pagination sur les grands écrans - Utilisez des sélecteurs spécifiques au lieu de chercher tous les éléments
Les captures d'Ă©cran sont lentes ou Ă©chouentâ
Les captures d'écran sont automatiquement optimisées :
- Redimensionnées si elles dépassent 2000px
- Compressées pour rester sous 1MB
- Converties en JPEG si le PNG est trop volumineux
Cette optimisation réduit le temps de traitement et garantit que Claude peut gérer l'image.
Limitationsâ
Quelles sont les limitations actuelles ?â
- Session unique : Un seul navigateur/application Ă la fois
- Support de navigateur : Chrome uniquement (pour l'instant)
- Support d'iframe : Support limité pour les iframes
- Téléchargements de fichiers : Pas directement pris en charge via les outils
- Audio/Vidéo : Impossible d'interagir avec la lecture multimédia
- Extensions de navigateur : Non prises en charge
Puis-je l'utiliser pour les tests de production ?â
WebdriverIO MCP est conçu pour l'automatisation interactive assistée par IA. Pour les tests de production CI/CD, envisagez d'utiliser le test runner traditionnel de WebdriverIO avec un contrÎle programmatique complet.
SĂ©curitĂ©â
Mes donnĂ©es sont-elles sĂ©curisĂ©es ?â
Le serveur MCP s'exécute localement sur votre machine. Toute l'automatisation se fait via des connexions locales au navigateur/Appium. Aucune donnée n'est envoyée à des serveurs externes au-delà de ce vers quoi vous naviguez explicitement.
Claude peut-il accĂ©der Ă mes mots de passe ?â
Claude peut voir le contenu de la page et interagir avec les éléments, mais :
- Les mots de passe dans les champs
<input type="password">sont masqués - Vous devriez éviter d'automatiser des identifiants sensibles
- Utilisez des comptes de test pour l'automatisation
Contributionâ
Comment puis-je contribuer ?â
Visitez le dépÎt GitHub pour :
- Signaler des bugs
- Demander des fonctionnalités
- Soumettre des pull requests