phantomjs
2013-05-22 12 views 10 likes 
10

Non riesco a fare un semplice modulo di invio.Phantomjs - Come compilare un modulo, inviare e ottenere i risultati?

Di seguito è riportato il codice che ho inviato per inviare "Test" al modulo di ricerca di Google e stampare i risultati.

var url = 'http://www.google.com/', 
    page = new WebPage(); 

page.open(url, function(status) { 
    if (status !== 'success') 
    { 
     console.log('Unable to access network'); 
     phantom.exit(); 
     return; 
    } 
    else 
    { 
     page.includeJs("//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js", function() { 
      page.evaluate(function() { 
       $('#gbqfq').val("Test"); 

       $("#gbqfba").click(); 

      }); 

      page.render('google.png'); 
      phantom.exit(); 
     }); 
    } 
}); 

Chiunque può mostrarmi come farlo? Mi sono guardato intorno e in altri siti, ma niente sembrava funzionare.

+0

Per la cronaca, si dovrebbe davvero considerare questa risposta http://stackoverflow.com/a/9256079/649687 – JMax

risposta

5

Non è sufficiente eseguire il rendering di una pagina immediatamente dopo "fare clic". Devi concedere il tempo del motore Web per effettuare tutte le chiamate richieste ed eseguire il JavaScript risultante.

considerare quanto segue dopo la chiamata a valutare:

window.setTimeout(
    function() { 
    page.render('google.png'); 
    phantom.exit(0); 
    }, 
    5000 // wait 5,000ms (5s) 
); 

Tra l'altro - il clic può o non può funzionare a seconda del tipo di elemento è. Se ciò non funziona, ti suggerisco di cercare su Internet come fare clic su un DIV o su qualunque tipo di elemento sia (esiste una tecnica che implica la creazione di un evento del mouse).

Problemi correlati