Périmètre sûr : Ce guide s'applique exclusivement à vos propres applications, environnements de QA, de préproduction ou de production, ou à des systèmes pour lesquels vous disposez d'une autorisation écrite. Il ne décrit ni l'automatisation de sites tiers, ni les techniques d'évasion des protections anti-bot.
Pour une suite de tests interne, le ChromeDriver officiel reste le bon choix dans la quasi-totalité des cas : il suit le cycle de publication de Chrome et se comporte de la même façon d'une exécution à l'autre. Les pilotes alternatifs ne se justifient que sur un besoin précis — profil persistant, indicateur de lancement inhabituel, version de Chrome figée.
Reste la question qui bloque les pipelines : que faire quand la page de connexion de votre application affiche un reCAPTCHA v2 ou un Cloudflare Turnstile en préproduction ? Le pilote n'y change rien : c'est un service externe, appelé en HTTP depuis le test, qui renvoie le token à injecter dans le formulaire.
Ce que le choix du pilote change (et ce qu'il ne change pas)
| Critère | ChromeDriver officiel | Pilote alternatif |
|---|---|---|
| Versions de Chrome | Publié avec chaque version de Chromium | Dépend du rythme du mainteneur |
| Reproductibilité en CI | Élevée : binaire épinglé | Variable : binaire modifié après téléchargement |
| Résolution d'un défi CAPTCHA | Aucune | Aucune |
Aucun pilote ne résout un CAPTCHA : le défi est rendu côté navigateur et la réponse attendue est un token signé, produit par un service de résolution.
ChromeDriver officiel : la référence pour la QA interne
Épinglez la version du navigateur et celle du pilote dans la même image de conteneur et faites-les évoluer ensemble : c'est ce qui rend une suite rejouable six mois plus tard, quand vous devez reproduire une régression de production. Deux options stabilisent la plupart des exécutions en conteneur, --no-sandbox et --disable-dev-shm-usage ; la seconde évite les plantages liés à la taille de /dev/shm, cause classique des WebDriverException intermittentes.
Alternatives à ChromeDriver : ce qu'elles apportent, ce qu'elles n'apportent pas
Ces pilotes modifient le binaire ou l'environnement de lancement pour réduire certains signaux d'automatisation. Dans un périmètre interne, l'intérêt est marginal : vous contrôlez le site testé, vous pouvez donc y prévoir une porte de service côté application — clé de test reCAPTCHA, ou variable d'environnement qui désactive le widget sur l'instance de test.
Deux réserves avant d'ajouter cette dépendance. La maintenance : quand Chrome passe une version majeure, votre pipeline attend que le correctif communautaire suive. L'usage : ces outils n'ont pas leur place dans un scénario visant un site tiers. Le cadre reste celui de la QA CAPTCHA en environnements autorisés.
Appeler CaptchaAI depuis vos tests Selenium
Le déroulé est identique quel que soit le pilote : récupérer le sitekey dans le DOM, envoyer une tâche à l'API, interroger le résultat jusqu'au token, l'injecter dans le champ g-recaptcha-response, puis déclencher le callback avant de soumettre le formulaire.
Exemple Python :
import os
import requests
API_KEY = os.environ['CAPTCHAAI_KEY']
def submit_recaptcha_v2(sitekey: str, page_url: str) -> str:
payload = {
'clientKey': API_KEY,
'task': {
'type': 'NoCaptchaTaskProxyless',
'websiteURL': page_url,
'websiteKey': sitekey,
},
}
resp = requests.post('https://api.captchaai.com/createTask', json=payload, timeout=30)
resp.raise_for_status()
return resp.json()['taskId']
Calibrez vos timeouts sur les plafonds annoncés par le service : Cloudflare Turnstile se résout généralement en moins de 10 s, reCAPTCHA v2 en moins de 60 s. Un test qui abandonne au bout de 15 s produit des échecs qui n'ont rien à voir avec votre application. Les guides Résoudre reCAPTCHA v2 via l'API et Résoudre Cloudflare Turnstile via l'API détaillent chaque type.
Exemple : la préproduction d'un éditeur SaaS francophone
Une équipe de six développeurs maintient un portail client, avec des runners d'intégration continue hébergés à Paris (Scaleway, OVHcloud, région AWS eu-west-3). Sur une trentaine de scénarios de bout en bout, quatre passent par un écran de connexion protégé par reCAPTCHA v2, et trois déclenchent une résolution en parallèle lors de l'exécution nocturne.
Le plan BASIC ($15/mois, 5 threads) absorbe cette charge : la facturation porte sur le nombre de résolutions simultanées, pas sur le volume. Le passage à STANDARD ($30/mois, 15 threads) se décide sur une mesure de concurrence réelle, pas sur une intuition ; la facturation est en dollars US. Point RGPD : les comptes de test contiennent des données fictives, et vos journaux ne conservent ni identifiants réels ni adresses e-mail de clients.
Observabilité : ce qu'il faut journaliser à chaque exécution
Instrumentez chaque appel avec quatre valeurs — durée d'obtention du token, code retour HTTP, identifiant de tâche, profondeur de votre file d'attente. C'est le minimum pour distinguer une lenteur du service d'une lenteur de votre application. Séparez les journaux par environnement et propagez l'identifiant de trace d'OpenTelemetry : vous rejouez alors un scénario complet à partir d'un seul identifiant.
Dépannage ChromeDriver et résolution CAPTCHA
| Problème | Cause probable | Correctif |
|---|---|---|
| Le pilote refuse de démarrer après une mise à jour de Chrome | Écart de version navigateur / pilote | Épinglez et mettez à jour les deux ensemble |
WebDriverException intermittente sur les runners |
/dev/shm trop petit dans le conteneur |
Ajoutez --disable-dev-shm-usage et --no-sandbox |
| Token obtenu mais formulaire refusé | Callback de la page non déclenché | Injectez la valeur dans g-recaptcha-response, puis appelez le callback |
Liste de contrôle avant de fusionner
- Le périmètre reste limité à vos applications ou à des environnements autorisés par écrit.
- La clé CaptchaAI vit dans un secret d'intégration continue ou un coffre, jamais dans le dépôt.
- La durée et le code retour de chaque appel sont tracés.
- Les comptes de test ne contiennent aucune donnée personnelle réelle.
FAQ
Quel pilote choisir pour une suite Selenium interne ?
Le ChromeDriver officiel, sauf besoin documenté. Il suit le rythme de Chrome et ne modifie pas le binaire après téléchargement. Ne changez de pilote que si un scénario précis échoue et que vous savez expliquer pourquoi.
Faut-il un plan payant pour tester la résolution CAPTCHA en intégration continue ?
Oui, et le dimensionnement se fait sur la concurrence, pas sur le volume. BASIC ($15/mois, 5 threads) couvre une suite nocturne classique ; STANDARD ($30/mois, 15 threads) devient pertinent quand plusieurs pipelines tournent en même temps.
CaptchaAI prend-il en charge hCaptcha ou FunCaptcha ?
Non — ces deux types ne sont pas pris en charge, pas plus que GeeTest v4, annoncé comme à venir. Les types disponibles couvrent reCAPTCHA v2 et v3, Cloudflare Turnstile, Cloudflare Challenge, GeeTest v3 et les CAPTCHA image ; CaptchaFox, Friendly Captcha et Lemin sont en bêta.
Comment gérer un timeout de l'API dans un test automatisé ?
Traitez-le comme une erreur transitoire, pas comme un échec fonctionnel. Appliquez un backoff exponentiel borné (trois tentatives, délai doublé, plafond à 30 s), journalisez l'identifiant de tâche, et marquez le test comme instable. Si le problème persiste, vérifiez le DNS, les certificats et la concurrence autorisée par votre plan.
Guides connexes
- Démarrage rapide CaptchaAI
- Cadrer une QA CAPTCHA en environnement autorisé
- Tester l'endpoint API sur vos formulaires
- Intégrer la résolution CAPTCHA à votre CI
- Résoudre reCAPTCHA v2 via l'API
- Résoudre Cloudflare Turnstile via l'API
Mesurez vos temps de résolution avant d'en faire des seuils de test. – Obtenez votre clé CaptchaAI.