2014-07-15 10 views
8

Gibt es eine Möglichkeit, eine Echtzeitansicht von PhantomJS (oder ähnlichem) zu erhalten?PhantomJS, aber nicht kopflos?

Ich mag würde mein Automatisierungs-Script entwickeln, während auf mit (oder zumindest sieht ein screencap von) der Seite es gezielt zu interagieren.

+2

Können Sie Selen/WebDriver stattdessen verwenden? Sie können Tests ähnlich wie phantomjs, aber in echten Browsern ausführen. Es unterstützt jetzt Phantom als Browser, so dass Sie es neben (viel langsameren) Browsern verwenden können. – joews

Antwort

3

Nein, so etwas gibt es nicht. SlimerJS hat die gleiche API wie PhantomJS, aber die Gecko-Engine läuft. Sie können direkt sehen, was vor sich geht und es kopflos mit xvfb-run laufen lassen.

Sie werden nicht in der Lage sein, mit ihr zu interagieren. Sie können einen Bildschirmgrabber verwenden, um ein Video der Interaktion aufzuzeichnen, wenn die Tests lang sind, und Sie möchten die Testsuite nicht erneut ausführen, wenn Sie das Problem im Testfall nicht erkannt haben.


Der offensichtliche Weg PhantomJS Skripte zu debuggen ist viele Screenshots mit

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

mit schönen Formatierung mit page.render() und Protokollierung einige Objekte auf der Konsole zu machen.

1

Lösung wir ist eine automatische screenshoting bei Ausnahmen verwenden, PhantomJS wird die aktuelle Seite in eine Datei rendern, die Sie später Prüfung.

Das ist für Testausführungsphase.

Wenn Sie die Tests zu schreiben, nur halten zusätzliches Fenster geöffnet („normalen Browser“) mit der Anwendung Sie den Test nach, es zu testen und zu entwickeln versuchen.

Wenn der Entwurf fertig ist, den Test mit PhantomJS auszuführen.

+0

Das Schlimme ist, dass du eine Menge Screenshots hast, die du durchgehen und zusammensetzen musst, um zu verstehen, was vor sich geht. Die gute Sache ist, dass Sie die ganze Zeit in der Welt haben, um nach Problemen in diesen Screenshots zu suchen, wenn etwas nicht nach Plan läuft. Dies ist mit einem automatisierten Browserfenster wie in meiner Antwort schwer zu tun. –

0

Mein Vorschlag ist, die Protokollierung neben verwenden. http://casperjs.org/

CasperJS ist ein Open-Source-Navigation Scripting & Test-Utility für den PhantomJS WebKit Browser ohne Kopf in Javascript geschrieben und SlimerJS (Gecko).Es erleichtert den Prozess der eine vollständige Navigations Szenario definieren und bietet nützliche High-Level-Funktionen, Methoden & syntaktischer Zucker zu tun gemeinsame Aufgaben wie:

  • definieren & Navigation Bestell Surfen
  • Füllen & Einreichung Formen Schritte
  • klicken & folgenden Links
  • Screenshots einer Seite (oder einen Teil davon)
  • testen remote DOM
  • 0 Erfassung
  • Protokollierung von Ereignissen
  • Ressourcen herunterzuladen, einschließlich binäre Einsen
  • Funktionstestsuiten zu schreiben, die Ergebnisse als JUnit XML
  • Schaben Webinhalte
0

Die Lösung für dieses Problem, die Remote-Debugger verwendet Sparend:

--remote-debugger-port=9000

mit slimerjs zum Testen Skripte mit einer Braue ser ist nicht ratsam, da es auf Gecko basiert, was bedeutet, dass das Skript auf slimerjs und nicht auf phantomjs oder umgekehrt funktionieren kann.

werfen Sie einen Blick auf diese Anleitung für weitere Informationen ... https://drupalize.me/blog/201410/using-remote-debugger-casperjs-and-phantomjs