Coalescence des entrées CDP pour une interaction hover cohérente
Configurez un regroupement limité par BrowserContext pour les mouvements de souris hover envoyés par CDP, sans modifier les clics, glissements, molette, clavier, touch ni stylet.
Vous voulez la documentation structurée pour Démarrage ?
Cet article fait partie de la bibliothèque éditoriale. Pour les étapes de configuration, la référence et les mises à jour continues, passez directement à la section docs.
Les clients CDP envoient généralement une commande de mouvement de souris à la fois. Le client envoie un point, attend la fin de la commande, puis envoie le point suivant. Cette séquence est simple à contrôler, mais un hover automatisé rapide peut atteindre la file d'événements du navigateur différemment d'un flux de mouvement natif. Une page peut observer des différences de temps et de livraison.
BotBrowser propose une option par contexte pour les flux qui demandent un chemin hover plus cohérent : --bot-cdp-coalesce. Elle est désactivée par défaut. Lorsqu'elle est activée pour un BrowserContext, BotBrowser accepte une courte séquence de mouvements de souris sans bouton, conserve leur ordre et les transmet dans un petit lot sériel. Le moteur du navigateur décide toujours des événements finaux de la page et de toute coalescence native.
Commencer avec la valeur par défaut
La plupart des automatisations n'ont pas besoin d'une option spéciale. Laissez-la désactivée lorsque le flux utilise clics, formulaires, clavier, défilement, glisser-déposer, gestes touch ou stylet. La valeur par défaut conserve la complétion CDP habituelle et ne change pas un flux déjà adapté.
Activez-la seulement pour un contexte qui envoie fréquemment des mouvements hover de souris par CDP et qui doit permettre au navigateur de recevoir ces points avec un léger chevauchement. Une vérification de tooltip, un menu qui s'ouvre à l'approche du pointeur, une carte hover ou une interface de bureau sensible au pointeur sont des exemples appropriés. Le réglage appartient au contexte, donc un autre contexte du même navigateur peut rester sur la valeur par défaut.
L'option ne randomise pas le trajet et ne crée pas de points. Le client choisit toujours les coordonnées et leur ordre. BotBrowser contrôle seulement le transfert des mouvements acceptés pendant une courte fenêtre. Le dernier point reste la position finale visible par la page.
Configurer un BrowserContext
Définissez --bot-cdp-coalesce dans l'entrée de configuration de contexte proposée par votre lanceur BotBrowser. Faites-le avant de créer la première page ou le premier worker. Conservez cette valeur avec les versions du navigateur, du profile et du paquet d'automatisation afin de reproduire la même politique lors d'une validation.
Le flag seul active le comportement, comme --bot-cdp-coalesce=true. Utilisez --bot-cdp-coalesce=false lorsqu'un modèle de déploiement peut ajouter le flag mais qu'un contexte doit rester sur le chemin par défaut. Traitez-le comme une configuration d'identité du contexte et ne prévoyez pas de le modifier pendant que le contexte sert déjà des pages.
Si un processus crée plusieurs contextes, attribuez une valeur explicite à chacun. Un contexte activé ne l'active pas pour ses frères, et un contexte nouvellement créé reçoit sa propre valeur. Vous pouvez ainsi comparer le même parcours avec et sans l'option sans lancer de processus supplémentaires.
Rendez le réglage visible près du profile et de la déclaration du contexte, puis enregistrez-le dans les métadonnées du run. Les scripts de page ne peuvent contrôler ni la fin d'une commande CDP ni la réception par la file d'entrée du navigateur, et ne remplacent donc pas cette option.
Mouvements concernés
Seul le mouvement hover d'une souris sans bouton entre dans le lot. Le pointeur n'a pas de bouton appuyé, n'est pas en mode relatif et l'événement est un mouvement ordinaire. Cela couvre l'approche d'une cible, l'inspection d'un état hover et le parcours d'une interface de bureau.
Restent hors du lot : les pressions et relâchements de boutons, le mouvement d'un glissement actif, la molette, le clavier, la saisie de texte, le touch, le stylet et le mouvement relatif. Ces limites préservent le sens des actions discrètes et des autres périphériques. Un clic conserve son état et sa complétion normales. Un glissement conserve l'ordre de ses transitions. La molette conserve ses deltas et son timing.
Les modificateurs et l'état des boutons comptent aussi. Un mouvement effectué avec un bouton appuyé appartient à un glissement ou à une autre action de pointeur et suit le chemin normal. Le lot hover ne franchit donc pas la limite entre atteindre un contrôle et agir sur lui.
Livraison et événements
Le contexte accepte une courte séquence de mouvements admissibles et transmet les points dans leur ordre original. Le lot est limité, donc une page bloquée ou un flux très long ne crée pas une file infinie. Il est aussi bref et reste réservé aux mouvements rapides, sans devenir un buffer général.
Chaque commande CDP conserve un seul résultat de complétion. Une commande hover acceptée peut se terminer lorsque le contexte l'accepte pour transfert. La page reçoit toujours le mouvement par le chemin d'entrée du navigateur. Les autres entrées continuent d'utiliser leur accusé de réception normal. Lorsqu'un autre type d'entrée doit passer, le mouvement hover en attente est laissé passer d'abord pour conserver l'ordre visible.
Le moteur décide comment les points deviennent des événements de page. Il peut exposer un événement principal et des enfants coalescés lorsque son ordonnancement combine des mouvements proches. BotBrowser ne crée pas ces enfants, ne réécrit pas les horodatages et ne remplace pas la coordonnée finale. Le résultat reste donc lié au traitement du navigateur, tandis que le contexte fournit le chevauchement absent des appels CDP strictement sériels.
Le nombre exact d'événements peut varier selon l'ordonnancement du navigateur, le travail de la page, la charge de l'hôte et le flux client. Ne testez pas un nombre fixe. Vérifiez plutôt l'état visible, l'ordre, la complétion des commandes et la position finale.
Séparer mouvement et action
Utilisez un pas hover pour atteindre un contrôle, puis un clic normal pour l'activer. Ne faites pas porter une transition de bouton par la coalescence hover. Pour un glisser-déposer, gardez la séquence complète sur le chemin normal et vérifiez le résultat séparément.
Cette séparation simplifie le diagnostic. Si le tooltip n'apparaît pas, vérifiez le trajet, la géométrie de la cible et l'état de la page. Si le clic n'agit pas, vérifiez le focus et la séquence de clic. Si le glissement ne se termine pas, vérifiez la source, la destination et l'acceptation par l'application. Un seul réglage ne doit pas expliquer tous les problèmes de pointeur.
Isolation et cycle de vie
L'option appartient au BrowserContext. Le contexte A peut l'activer et le contexte B la désactiver, même dans le même processus. Elle ne se propage pas à un autre target, une autre page, un worker ou un nouveau contexte.
Fermez le contexte à la fin de son travail. Si une page ou un target est remplacé pendant un mouvement, l'ancien mouvement ne doit pas continuer vers la nouvelle cible. Recommencez le parcours avec le nouvel état de page. Lors d'une navigation, attendez que le nouveau document soit prêt avant d'exécuter le mouvement requis par son interface.
Lorsqu'un contexte est recréé, appliquez à nouveau l'option. Un modèle de processus facilite la répétition, mais la décision reste propre à chaque contexte. C'est important quand un même processus sert des comptes, tenants ou sessions de test autorisées distincts.
Validation pratique
Utilisez une page contrôlée ou une route de test approuvée avec tooltip, menu hover ou carte hover. Elle doit montrer un changement visible lorsque le pointeur atteint la cible.
Exécutez le même parcours deux fois : créez un contexte avec l'option désactivée, utilisez le même client et les mêmes coordonnées, puis notez l'état hover et la position finale. Créez ensuite un contexte séparé avec l'option activée et répétez. Gardez constantes la version du navigateur, le profile, le viewport, l'état de page, le paquet client et la liste de coordonnées. Ne changez qu'une variable.
Ajoutez un clic après l'apparition de l'état hover dans un parcours de production, puis vérifiez l'état de page obtenu. Ajoutez aussi un champ de formulaire ou un bouton indépendant du hover. N'ajoutez les vérifications de glissement, molette, touch ou stylet que si le parcours les utilise.
La réussite signifie que l'état hover est accessible, que l'ordre est correct, que chaque commande obtient un résultat et que la coordonnée finale est conservée. Elle ne signifie pas que chaque exécution produit la même liste coalescée ou le même nombre d'événements.
Compatibilité et dépannage
L'option concerne les mouvements hover de souris livrés par CDP. Elle ne modifie ni l'identité du navigateur, ni le réseau, les cookies, le stockage, les permissions, le viewport ou les données du profile. Les parcours mobiles doivent être testés avec touch et un viewport mobile. Les interfaces au stylet et au mouvement relatif gardent leurs entrées normales.
Si aucun effet visible n'apparaît, vérifiez que le contexte a reçu le flag avant sa première page, que le mouvement est bien un hover de souris et que la page utilise réellement cet état. Si le nombre d'événements varie entre deux runs, comparez l'état hover, l'ordre, les complétions et la coordonnée finale plutôt qu'un compte fixe. Si deux contextes diffèrent, vérifiez leur valeur explicite, profile, version, viewport, état de page et liste de coordonnées.
La complétion CDP et la disponibilité visible de l'application sont deux conditions différentes. Attendez le signal de page nécessaire au parcours. --bot-cdp-coalesce offre ainsi un choix clair pour une seule catégorie d'interaction : désactivé par défaut, il peut être activé pour un contexte qui envoie des mouvements hover denses et bénéficie d'un lot sériel court, tandis que les autres entrées gardent leurs chemins normaux.
Articles Connexes
Faites passer BotBrowser de la recherche à la production
Utilisez ces guides pour comprendre le modèle, puis passez à la validation multi-plateforme, aux contextes isolés et au déploiement navigateur prêt pour l'échelle.