IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

PhantomJS - Acc�der � une fonction de la page


Sujet :

JavaScript

  1. #1
    Membre �prouv�
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifi�)
    Inscrit en
    D�cembre 2004
    Messages
    2 059
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activit� : OPNI (Objet Programmant Non Identifi�)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 2 059
    Par d�faut PhantomJS - Acc�der � une fonction de la page
    Bonjour,

    Je fais mes premiers tests avec PhantomJS, la partie qui m'int�resse �tant l'automatisation de pages (Page Automation) et je cherche a comprendre un truc.
    J'utilise l'�v�nement onLoadFinished (comme les �v�nements d�crit ici), pour lancer un "page.evaluate" dans lequel j'esp�rais pouvoir appeller une fonction qui me semble "global scope", et �videmment si je suis ici, c'est que cela ne fonctionne pas, pour le moment.
    Donc imaginons, j'ai une page qui contient des liens du type:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    <a class="unClasse" onclick="doSomething(Parameter)">BlaBla</a>
    Premi�re question, car je suis peut �tre d�s ce niveau � c�t� de la plaque -> cette fonction "doSomething()", telle qu'elle est dans la page, elle est bien d�finie au niveau "global", correct ?
    (note: je ne suis pas l'auteur de la page en question sur laquelle je dois faire le test)

    Je me suis amus� a tester d'un mani�re plus rustique, en chargeant la page via une bonne vieille IFrame, et une fois arriv� au niveau "contentWindow", j'ai pu bel et bien appeller la fonction "doSomething".
    Donc j'esp�rais pouvoir faire de m�me en mieux via PhantomJS, ou j'imaginais pouvoir bien contr�ler que les pages sont bien load�es via onLoadFinished, et lancer des actions sur celles-ci de mani�re "s�re" via page.evaluate... qu'est ce que je rate ?

    Certes, je pourrais toujours me ballader dans le DOM, trouver le bon lien et simuler un click dessus. Mais ca me casse les pieds et je pensais vraiment pouvoir appeler la fameuse fonction en lui passant les param�tres qui me vont bien.

    Merci d'avance !
    @+

  2. #2
    Expert confirm�
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 681
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 681
    Par d�faut
    Citation Envoy� par Sunchaser Voir le message
    cela ne fonctionne pas
    qu'est ce que cela veut dire pour vous ?
    quel est le code que vous lancez ? quel r�sultat attendiez vous ? quel r�sultat obtenez-vous ?

  3. #3
    Membre �prouv�
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifi�)
    Inscrit en
    D�cembre 2004
    Messages
    2 059
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activit� : OPNI (Objet Programmant Non Identifi�)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 2 059
    Par d�faut
    Bonsoir,

    Le r�sultat obtenu est cette erreur:
    ReferenceError: Can't find variable: doSomething
    Grosso modo, le code utilis� suit les exemples trouv�s de-ci de-l�:
    . dans le onLoadFinished
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    	page.onLoadFinished= function() {
    		page.render(currentStep + '_Printscreen.png');
    		console.log('Step ', currentStep, ': onLoadFinished');
    		currentStep++;
    		steps[currentStep]();
    	};
    A ce stade, la variable "currentStep" vaut 1, "steps" est un tableau dont chaque item fait r�f�rence a une fonction.
    La fonction en question ne contient rien de plus que:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
             page.evaluate(function() {  
    	    doSomething();
    	});
    Citation Envoy� par mathieu Voir le message
    quel r�sultat attendiez vous ?
    Que la fonction "doSomething()" soit execut�e.

    Je sais que:
    . la page est bien load�e
    . le code passe bien par l'�v�nement "onLoadFinished"
    . le code passe bien dans le "page.evaluate"

    Notez que si j'opte pour l'option " me ballader dans le DOM " au moment du "page.evaluate", et que je fais en sorte de selectionner le bon �l�ment, je suis bien en mesure de simuler le click dessus et donc de faire en sorte que la fonction "doSomething" soit execut�e.

    @+

Discussions similaires

  1. [D�butant] Appeller une fonction de la page aspx depuis un control ascx
    Par Alegreg dans le forum ASP.NET
    R�ponses: 19
    Dernier message: 24/03/2015, 15h38
  2. R�ponses: 4
    Dernier message: 20/11/2012, 13h53
  3. R�ponses: 2
    Dernier message: 04/12/2011, 10h58
  4. Acc�der � une fonction d'une autre form
    Par Djang0 dans le forum C++Builder
    R�ponses: 8
    Dernier message: 21/08/2009, 14h20
  5. appel d'une fonction sur autre page
    Par champion dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 03/03/2007, 14h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo