Aller au contenu principal

Remplir des formulaires et cliquer

Mis à jour le 29 juillet 2026

L’interaction la plus courante

Si vous ne deviez maîtriser qu’un geste, ce serait celui-là. Soumettre une demande de contact, remplir un devis, saisir une fiche client dans un CRM sans API : le formulaire est le point de passage obligé de la plupart des automatisations. C’est aussi là que les agents mal réglés échouent le plus souvent, pour des raisons très concrètes que cette leçon prend une à une.

Cliquer avant de taper

L’action type n’écrit pas dans un champ, elle écrit dans le champ actuellement focalisé. La nuance ne s’oublie qu’une fois : sans clic préalable, votre texte part dans le vide ou, plus vicieux, s’ajoute au champ précédent. La séquence est donc invariablement un clic pour focaliser, puis la frappe.

# Dans votre exécuteur d'actions
def execute_type(page, text: str):
    """Tape du texte dans le champ focalisé."""
    page.keyboard.type(text, delay=50)

Le delay=50 mérite qu’on s’y arrête. Il simule une frappe humaine à environ 20 caractères par seconde, là où Playwright injecterait le texte instantanément. Beaucoup de sites analysent la vitesse de saisie pour repérer les robots ; une adresse email apparue d’un bloc dans le champ déclenche précisément le captcha que vous cherchiez à éviter.

Vider un champ avant de le remplir

Un formulaire pré-rempli — reprise de session, valeur par défaut, autocomplétion du navigateur — transforme votre saisie en concaténation absurde : « Dupont » tapé derrière « Martin » donne « MartinDupont », et le formulaire est accepté sans la moindre erreur. Sélectionnez tout avant de taper.

def clear_and_type(page, text: str):
    """Sélectionne tout le contenu du champ puis tape."""
    page.keyboard.press("Control+a")  # Tout sélectionner
    page.keyboard.type(text, delay=50)

Le modèle, lui, décide de ses actions à partir du prompt : rappelez-lui la règle, faute de quoi il tapera directement dans le champ occupé.

task = """
Remplis le formulaire de contact :
- Champ "Nom" : Dupont
- Champ "Email" : [email protected]
- Champ "Message" : Demande de devis pour 50 licences

IMPORTANT : Avant de taper dans chaque champ, 
sélectionne tout le texte existant (Ctrl+A) pour le remplacer.
Après avoir rempli tous les champs, clique sur le bouton Envoyer.
"""

Un menu déroulant <select> demande trois temps : un clic pour l’ouvrir, une attente le temps que les options s’affichent, un second clic sur l’option voulue. La bonne nouvelle, c’est que les menus personnalisés en JavaScript — ceux qui ne sont pas de vrais <select> et donnent tant de mal aux scripts classiques — se traitent exactement de la même manière, puisque l’agent ne voit que le rendu visuel : il clique, découvre les options sur le screenshot suivant, et clique sur la bonne.

Les cases à cocher et les boutons radio paraissent plus simples, un clic suffisant à les activer. Le piège est ailleurs : une case déjà cochée se décoche au clic, et votre agent vient d’annuler le consentement qu’il devait donner. Il doit donc lire l’état avant d’agir, et vous devez le lui demander explicitement.

task = """
Dans le formulaire d'inscription :
1. Coche la case "J'accepte les conditions" si elle n'est pas cochée
2. Sélectionne "Entreprise" dans le type de compte
3. Clique sur "Créer le compte"

Vérifie l'état de chaque élément AVANT de cliquer.
"""

Les formulaires en plusieurs écrans

Un tunnel d’inscription en trois pages n’est pas trois fois plus difficile qu’un formulaire simple, à condition de structurer la consigne page par page et de marquer les transitions. L’agent sait alors quand une section est terminée et sur quel bouton passer à la suivante.

task = """
Remplis le formulaire d'inscription en 3 étapes :

ÉTAPE 1 - Informations personnelles :
- Prénom : Jean
- Nom : Dupont
- Date de naissance : 15/03/1985
→ Clique sur "Suivant"

ÉTAPE 2 - Coordonnées :
- Email : [email protected]
- Téléphone : 06 12 34 56 78
- Adresse : 12 rue de la Paix, 75002 Paris
→ Clique sur "Suivant"

ÉTAPE 3 - Confirmation :
- Vérifie que toutes les informations sont correctes
- Coche "J'accepte les CGU"
→ Clique sur "Valider"
"""

Réagir aux erreurs de validation

Un format de téléphone refusé, un champ obligatoire oublié, un mot de passe jugé trop court : le formulaire renvoie un message et attend une correction. C’est exactement la situation où Computer Use surpasse un script, puisque l’agent sait lire l’erreur affichée au lieu de buter dessus. Encore faut-il lui demander de la chercher, et borner ses tentatives pour qu’un champ définitivement rejeté ne le fasse pas boucler sans fin.

system_prompt = """
Après avoir soumis un formulaire :
1. Prends un screenshot pour voir le résultat
2. Si des messages d'erreur apparaissent (en rouge, encadrés), 
   lis-les et corrige les champs concernés
3. Resoumets le formulaire
4. Répète jusqu'à ce que le formulaire soit accepté 
   ou que tu aies essayé 3 fois
"""

L’upload, cas à part

Il existe une limite qu’aucun prompt ne franchira : la boîte de dialogue d’ouverture de fichier appartient au système d’exploitation, pas à la page. L’agent la voit sur son screenshot mais ne peut rien en faire — les coordonnées qu’il produit s’appliquent au navigateur, pas à une fenêtre native. Confiez l’opération à Playwright, qui court-circuite entièrement ce dialogue.

def handle_file_upload(page, file_path: str, selector: str):
    """Upload un fichier via Playwright (pas via Computer Use)."""
    page.set_input_files(selector, file_path)

Vous pouvez aussi laisser l’agent cliquer sur « Parcourir » comme un utilisateur et intercepter le sélecteur de fichiers au moment où il s’ouvre : le workflow reste naturel de bout en bout, la partie système étant traitée en coulisses.

# L'agent clique sur "Parcourir", puis vous interceptez
page.on("filechooser", lambda fc: fc.set_files("/path/to/file.pdf"))

Points clés à retenir

  • Toujours cliquer sur un champ avant de taper dedans
  • Utilisez Ctrl+A pour vider un champ avant la saisie
  • Les menus déroulants nécessitent un clic pour ouvrir puis un clic pour sélectionner
  • Prévoyez la gestion des erreurs de validation dans le prompt
  • L’upload de fichiers doit être géré par Playwright, pas par Computer Use