Maison >interface Web >js tutoriel >Comment simuler des clics sur des éléments (par exemple, des spans) à l'aide de PhantomJS ?

Comment simuler des clics sur des éléments (par exemple, des spans) à l'aide de PhantomJS ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-07 15:10:16467parcourir

How to Simulate Clicks on Elements (e.g., Spans) Using PhantomJS?

PhantomJS : simulation de clics sur des éléments

Contexte :

Lorsque vous essayez de cliquer sur un élément à l'aide Avec la fonction page.evaluate de PhantomJS, vous pouvez rencontrer une erreur liée à l'invocation d'undéfini en tant que fonction. Cela se produit lorsque l'élément cible est un span plutôt qu'un bouton de saisie natif.

Solution :

Pour résoudre ce problème et simuler un clic sur un élément arbitraire, utilisez la fonction personnalisée suivante :

function click(el){
    var ev = document.createEvent("MouseEvent");
    ev.initMouseEvent(
        "click",
        true /* bubble */, true /* cancelable */,
        window, null,
        0, 0, 0, 0, /* coordinates */
        false, false, false, false, /* modifier keys */
        0 /*left*/, null
    );
    el.dispatchEvent(ev);
}

Cette fonction crée un événement de clic de souris synthétique et le distribue à l'élément spécifié. En l'utilisant conjointement avec page.evaluate, vous pouvez simuler efficacement l'action de clic :

page.evaluate(function() {
    click(document.getElementById('idButtonSpan'));  
});

Remarques supplémentaires :

  • Assurez-vous que l'élément à sur lequel on clique est accessible via JavaScript et se trouve dans le DOM lorsque la fonction page.evaluate est exécutée.
  • Cette approche fournit une méthode fiable pour simuler des clics sur des éléments qui peuvent ne pas répondre aux fonctions de clic standard, tels que des étendues qui agissent comme des boutons.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn