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

NodeJS Discussion :

Redirection dans phantomJs


Sujet :

NodeJS

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 112
    Par défaut Redirection dans phantomJs
    Bonjour
    j'ai mon code qui fonctionne et qui me permet de me connecter a un autre site et faire une de la page(http://site1.php')
    après la connexion au site
    il me met un message d'erreur
    Comment gérer les direction sur plusieurs sites (login, passwword:sur site1.php-->rechercher une valeur sur site2.php
    Cordialement




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TypeError: undefined is not an object (evaluating 'document.getElementsByName('msLeakNumber')[0].value="essais"')
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    var webPage = require('webpage');
    var page = webPage.create();
     
    page.open('http://sitesenquestion.php/', function(status) {
      console.log('Status: ' + status);
      if(status =="success"){
              page.evaluate(function(){
     
    			document.getElementsByName('USER')[0].value="login"; // (http://site1.php)
    			document.getElementsByName('PASSWORD')[0].value="password";  // (http://site1.php)
    			document.getElementsByName('loginValid')[0].click();  // (http://site1.php)
                            document.getElementsByName('msLeakNumber')[0].value="essais"; //*********(http://site2.php)**************** 
              });
            console.log('ok');
            window.setTimeout(function(){
                    page.render('googletest.png');
                    phantom.exit();
            }, 
            5000);
      }else{
        console.log('mort');
      }
      //phantom.exit();
    });

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 225
    Par défaut
    étant donné que msLeakNumber est sur la page résultante de la redirection, il t'indique ne pas existé car tu éxecutes le code sur la page initiale.

    Il va falloir que utilises onResoureReceived pour identifier la page que pjs executes actuellement, et conditionné ton scrapping à une valeur que tu déclareras de manière appropriée.

    https://gist.github.com/amenzhinsky/5245915

    Pour la doc,

    http://phantomjs.org/api/webpage/han...-received.html

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 112
    Par défaut
    Merci mh-cbon de te pencher sur mon soucis
    j'ai tenté de rajouté une fonction dans mon fichier mais sa ce bloque (fonction // entre //
    cordialement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    var webPage = require('webpage');
    var page = webPage.create();
     
    page.open('http://sitesenquestion.php/', function(status) {
      console.log('Status: ' + status);
      if(status =="success"){
              page.evaluate(function(){
     
    			document.getElementsByName('USER')[0].value="login"; // (http://site1.php)
    			document.getElementsByName('PASSWORD')[0].value="password";  // (http://site1.php)
    			document.getElementsByName('loginValid')[0].click();  // (http://site1.php)
                            document.getElementsByName('msLeakNumber')[0].value="essais"; //*********(http://site2.php)**************** 
              });
            console.log('ok');
            window.setTimeout(function(){
                    page.render('googletest.png');
    ////////////////////////////////////////////////////
                    page.onResourceReceived = function(response) {
    				console.log('Response (#' + response.id + ', stage "' + response.stage + '"): ' + JSON.stringify(response));
    		                 };
    //////////////////////////////
                    phantom.exit();
            }, 
            5000);
      }else{
        console.log('mort');
      }
      //phantom.exit();
    });

  4. #4
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 225
    Par défaut
    tu n'as pas besoin de le mettre dans le page.evaluate

    Ca devrait surement ressembler plutot à cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    var webPage = require('webpage');
    var page = webPage.create();
     
    var currentPage = 'some';
    ////////////////////////////////////////////////////
    page.onResourceReceived = function(response) {
      console.log('Response (#' + response.id + ', stage "' + response.stage + '"): ' + JSON.stringify(response));
      if (somestff){
        currentPage = 'some other'
      }
    };
    //////////////////////////////
     
    page.open('http://sitesenquestion.php/', function(status) {
      console.log('Status: ' + status);
      if(status =="success"){
        if (page==='some') {
          page.evaluate(function(){
            document.getElementsByName('USER')[0].value="login"; // (http://site1.php)
            document.getElementsByName('PASSWORD')[0].value="password";  // (http://site1.php)
            document.getElementsByName('loginValid')[0].click();  // (http://site1.php)
          });
          console.log('ok');
          window.setTimeout(function(){
            page.render('googletest.png');
            phantom.exit();
          }, 
          5000);
        } else if (...) {
          page.evaluate(function(){
            document.getElementsByName('msLeakNumber')[0].value="essais"; //*********(http://site2.php)**************** 
          });
          console.log('ok');
          window.setTimeout(function(){
            page.render('googletest_other.png');
            phantom.exit();
          }, 
          5000);
        }
      }else{
        console.log('mort');
      }
      //phantom.exit();
    });

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 112
    Par défaut
    Merci pour ta réponse
    Je peux pas essayer maintenant
    J'essaye des que je rentre
    A+

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 112
    Par défaut
    ReBonjour je viens d'essayé ton code est sa bloque
    de plus je t'ai posé quelque question s'est quoi SOMESTFF
    la page se figes à "success" et sa reste la, sa ne passe pas à la suite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    var webPage = require('webpage');
    var page = webPage.create();
     
    var currentPage = 'some';
    /////////////////j'ai bien les informations de la pages d'origines sitesenquestion.php///////////////////
     
    page.onResourceReceived = function(response) {
      console.log('Response (#' + response.id + ', stage "' + response.stage + '"): ' + JSON.stringify(response));
      if (somestff){ ////de plus je ne comprend pas la commande SOMESTFF
        currentPage = 'some other'
      }
    };
    //////////////////////////////
     
    page.open('http://sitesenquestion.php/', function(status) {
      console.log('Status: ' + status);
      if(status =="success"){
      //////j'ai dans la fenetre successful mais sa ne passe pas à la suite////
        if (page==='some') {
          page.evaluate(function(){
            document.getElementsByName('USER')[0].value="login"; // (http://site1.php)
            document.getElementsByName('PASSWORD')[0].value="password";  // (http://site1.php)
            document.getElementsByName('loginValid')[0].click();  // (http://site1.php)
          });
          console.log('ok');
          window.setTimeout(function(){
            page.render('googletest.png');
            phantom.exit();
          }, 
          5000);
        } else if ((page==='some other') {
          page.evaluate(function(){
            document.getElementsByName('msLeakNumber')[0].value="essais"; //*********(http://site2.php)**************** 
          });
          console.log('ok');
          window.setTimeout(function(){
            page.render('googletest_other.png');
            phantom.exit();
          }, 
          5000);
        }
      }else{
        console.log('mort');
      }
      //phantom.exit();
    });

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 112
    Par défaut
    Rebonjour en ajoutant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var url = page.evaluate(
    				function () {
    				return document.URL;
    				}
    				);
    				console.log( "- current url is " + url );
    je vois que mon url à changer comment resservir de cette information et relancer un appel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementsByName('msLeakNumber')[0].value="essais"; //*********(http://site2.php)****************
    De plus si je suis rediriger sur l'autre site une fois la connexion etabli, dois-je creer un seconde appel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var page2 = webPage.create();
    page2.open('http://site2.php/', function(status) {
    .
    .
    .
    cordialement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    var webPage = require('webpage');
    var page = webPage.create();
     
    page.open('http://sitesenquestion.php/', function(status) {
      console.log('Status: ' + status);
      if(status =="success"){
              page.evaluate(function(){
     
    			document.getElementsByName('USER')[0].value="login"; // (http://site1.php)
    			document.getElementsByName('PASSWORD')[0].value="password";  // (http://site1.php)
    			document.getElementsByName('loginValid')[0].click();  // (http://site1.php)
                            document.getElementsByName('msLeakNumber')[0].value="essais"; //*********(http://site2.php)**************** 
              });
            console.log('ok');
            window.setTimeout(function(){
                    page.render('googletest.png');
    ////////////////////////////////////////////////////
                    var url = page.evaluate(
    				function () {
    				return document.URL;
    				}
    				);
    				console.log( "- current url is " + url );
    //////////////////////////////
                    phantom.exit();
            }, 
            5000);
      }else{
        console.log('mort');
      }
      //phantom.exit();
    });

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 112
    Par défaut
    Bonjour personne pour me répondre
    Dois-je faire un page2.open pour me rediriger vers la nouvelle adresse?
    Sinon dois je récupère l'adresse renvoyée et me servir de celle si pour faire un appel
    Merci

  9. #9
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 225
    Par défaut
    Hello,

    essaies de voir si ce git peut t'aider,
    https://github.com/mh-cbon/problems-...tricks-problem

  10. #10
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    @pratick
    Si l'élément msLeakNumber est sur une page de site2, je ne vois pas comment on continue de la mettre là ou document se réfère à une page de site1 sans au moins un délai requis. C'est une erreur non-négociable. Il n'y a pratiquement aucune chance. Il faut absolument l'enlever, absolument.

    Si le mécanisme en question concerne une redirection après une forme submise, on peut faire comme ci-après, remplaçant le bloc de window.setTimeout qui a son utilité comme j'ai montré dans l'autre poste de vôtre. Mais ici, on possède une information plus précise, on peut faire mieux, en principe, ainsi éliminer le paramètre ad hoc du délai arbitraire. Essayez-le.
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
            console.log('ok');    //ligne #14
            page.onUrlChange(function(targetUrl) {
                var page2=webPage.create();
                page2.open(targetUrl, function(status) {
                    if (status=="success") {
                        page2.evaluate(function() {
                            document.getElementsByName('msLeakNumber')[0].value="essais";
                            //faire autres choses
                            page2.render('googletest.png');    //si vous voulez
                       });
                   }
                });
            });

Discussions similaires

  1. Redirection dans un fichier
    Par Spyco dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 14/03/2006, 12h53
  2. probleme de redirection dans les frames
    Par paricard dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 12/02/2006, 00h57
  3. Probleme de redirection dans le form
    Par leloup84 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 07/02/2006, 14h09
  4. Redirection dans un fichier
    Par radium dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 09/08/2005, 14h45
  5. Trouver les redirections dans des traces
    Par severine dans le forum Développement
    Réponses: 3
    Dernier message: 21/04/2004, 18h51

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