En bref : utilisezpage.locator(selector).fill(value)pour des scripts Puppeteer de soumission de formulaire rapides et déterministes, etpage.type()lorsque la page surveille les frappes réelles (autocomplétion, anti-bot, validation en temps réel). Envoyez le formulaire en cliquant sur le bouton, en appuyant sur Entrée ou en appelantform.requestSubmit(), et attendez toujours un signal de réussite concret plutôt qu'un délai d'expiration fixe.
Les formulaires sont au cœur du fonctionnement de la plupart des pages utiles. Connexions, barres de recherche, processus de paiement, outils de téléchargement de fichiers, assistants d’intégration en plusieurs étapes : si vous automatisez le Web à des fins de test ou de scraping, tôt ou tard, vous devrez gérer un formulaire. Un workflow de soumission de formulaire avec Puppeteer semble d'une simplicité trompeuse au premier abord, puis se heurte aux réalités d'un site moderne : le réaffichage des applications monopages, les pièges cachés, les champs de saisie sans valeur, les éditeurs piégés dans des iframes, et le JavaScript qui jette discrètement votre saisie à la poubelle parce qu'il n'a jamais vu d'événement keydown .
Un formulaire HTML est un <form> élément <input>, <select>, <textarea>et des contrôles similaires, avec un action attribut et un déclencheur de soumission qui envoie les données collectées pour traitement. C'est la partie facile. La partie difficile consiste à faire en sorte qu'un script Chrome sans interface utilisateur se comporte suffisamment comme une personne pour que la page accepte effectivement la soumission et vous renvoie une réponse utilisable.
Ce guide est l'aide-mémoire que j'aurais aimé avoir lorsque j'ai commencé à déployer des scripts Puppeteer en production. Nous choisirons l'API adaptée au type de données, définirons des sélecteurs stables, passerons en revue trois stratégies de soumission et les cas où chacune d'entre elles échoue, aborderons tous les types d'entrée courants (y compris les sélecteurs de fichiers personnalisés et les éditeurs de texte enrichi), attendrons le bon signal de réussite, validerons le résultat et terminerons par une liste de contrôle de débogage pour les redoutables échecs silencieux.




