2014-07-15 17 views
8

C'è un modo per ottenere una vista in tempo reale di ciò che PhantomJS (o simili) sta mostrando?PhantomJS, ma non senza testa?

Mi piacerebbe sviluppare il mio script di automazione mentre interagisco con (o almeno vedendo uno screencap di) la pagina a cui è destinato.

+2

è possibile utilizzare Selenio/WebDriver invece? Puoi eseguire i test in modo simile a phantomjs, ma nei browser reali. Ora supporta fantasma come browser in modo da poter continuare a utilizzarlo insieme a browser (molto più lenti). – joews

risposta

3

No, non esiste una cosa del genere. SlimerJS ha la stessa API di PhantomJS, ma esegue il motore Gecko. Puoi vedere direttamente cosa sta succedendo e lanciarlo senza testa con xvfb-run.

Non sarà possibile interagire con esso. Si consiglia di utilizzare uno screengrabber per registrare un video dell'interazione quando i test sono lunghi e non si desidera eseguire nuovamente la suite di test se non si è verificato il problema nel caso di test.


Il modo più ovvio per eseguire il debug degli script PhantomJS è di rendere molti screenshot utilizzando page.render() e registrazione alcuni oggetti alla console con

console.log(JSON.stringify(yourObj, undefined, 4)); 

con formattazione bello.

1

La soluzione che utilizziamo è uno screenshot automatico in caso di eccezioni, phantomJs renderà la pagina corrente in un file che è possibile esaminare in un secondo momento.

Questo è per la fase di esecuzione del test.

Quando si scrivono i test, è sufficiente tenere aperta la finestra aggiuntiva ("browser normale") con l'applicazione che si sta tentando di testare e progettare il test in base ad esso.

Al termine della progettazione, eseguire il test con phantomJS.

+0

La cosa brutta è che hai un * sacco * di schermate da esaminare e mettere insieme per capire cosa sta succedendo. La cosa buona è che hai tutto il tempo del mondo per cercare problemi in quegli screenshot quando qualcosa non sta andando a pianificare. Questo è difficile da fare con una finestra del browser automatizzata come nella mia risposta. –

0

Il mio suggerimento è quello di utilizzare la registrazione accanto. http://casperjs.org/

CasperJS è una navigazione di scripting utility & testing open source scritto in Javascript per il browser senza testa PhantomJS WebKit e SlimerJS (Gecko).Facilita il processo di definizione di uno scenario di navigazione completo e fornisce utili funzioni di alto livello, i metodi & zucchero sintattico per fare le operazioni più comuni come ad esempio:

  • definire & ordinazione di navigazione di navigazione passi
  • riempimento & forme presentazione
  • cliccando & seguenti link
  • catturare screenshot di una pagina (o parte di esso)
  • test DOM remota
  • eventi di registrazione
  • il download di risorse, tra cui quelli binari
  • scrittura suite di test funzionali, il salvataggio dei risultati in formato XML JUnit
  • raschiando contenuti Web
0

La soluzione a questo problema sta usando il debugger remoto:

--remote-debugger-port=9000

Utilizzando slimerjs per gli script di test con una fronte non è consigliabile poiché è basato su gecko, il che significa che lo script potrebbe funzionare su slimerjs e non su phantomjs o viceversa.

un'occhiata a questa guida per ulteriori informazioni ... https://drupalize.me/blog/201410/using-remote-debugger-casperjs-and-phantomjs

Problemi correlati