2009-12-12 3 views
5

Ich verwende Selenium, um meine Anwendung zu testen. Ein guter Test wäre, dass ich nach jeder DOM-Manipulation das DOM validieren würde. Gibt es einen schönen Weg, dies zu tun?Validierung der DOM-Manipulation bei Verwendung von Selen

Offensichtliche Möglichkeiten sind:

  • Gebrauch einige builtin Selen-Funktion. Ist dort eines?
  • Holen Sie sich das HTML des DOM nach der Manipulation und verwenden Sie einen lokalen Validator. Ich kann jedoch nicht sehen, wie man den HTML-Code für das aktuelle DOM von Selenium bekommt.
  • Ich könnte irgendwie durch Javascript gehen, entweder durch Hinzufügen einer JS-Datei während des Testens oder durch Selenium. Aber ich bin mir nicht sicher, wie ich das anstellen soll. Gedanken?

Antwort

4

Es gibt keinen eingebauten Prozess für Selenium. Es gibt jedoch ein Open-Source-Projekt, das auf WebDriver basiert, WebDriver wird zu Selenium 2, mit dem Sie Layout-Tests durchführen können.

Das Projekt ist unter http://code.google.com/p/fighting-layout-bugs/ und wurde erstmals auf der GTAC 2009 in Zürich gezeigt. Der Code verwendet W3C und jQuery, um die Gültigkeit des DOM zu überprüfen. Schau dir das Video von dem Vortrag und dem Code an, der da ist.

EDIT:

Dank sampablokuper die W3C-Validierung ist bei code.google.com/p/w3c-markup-validation-filter/

+0

Das ist ein extrem cool aussehendes Projekt, aber das Testen von Layouts unterscheidet sich ziemlich vom Testen von HTML auf Gültigkeit. – sampablokuper

+0

das Rahmenwerk tut w3c validation. Sehen Sie sich das Video auf der Website an, um das Beispiel zu sehen. Es erstellt eine Box auf der Seite, die entweder rot oder grün ist, je nachdem, wie es überprüft, so überprüfen Sie nur seine Farbe – AutomatedTester

+0

True, das Video erwähnt es, aber der Code dafür ist tatsächlich in Michael Tamms anderes Projekt: http://code.google.com/p/w3c-markup-validierungsfilter /. Ich habe es noch nicht geschafft, diesen Code auf meinem System laufen zu lassen (ich berühre Java nicht oft, also bin ich ein bisschen langsam damit), aber ich freue mich darauf. Prost :) – sampablokuper

1

Ich habe auf der gleichen Front grübeln. Hier sind meine bisherigen Fortschritte.

Das JavaScript-Attribut document.documentElement.outerHTML kann in einigen Browsern, z.B. Safari und Chrome, aber nicht in Firefox. Dies zeigt Ihnen das Ergebnis von DOM-Manipulationen, gibt Ihnen jedoch nicht den vollständigen Quellcode für die Seite. Wenn Sie JavaScript injizieren, das den Wert von document.documentElement.outerHTML speichert, nachdem Ihre DOM-Manipulation ausgeführt wurde, sollten Sie in der Lage sein, Selenium dazu zu bringen, diesen Wert in das "Direct Input" -Textarea des W3C Validators einzugeben und zu übergeben . Sie müssen den Wert entsprechend anfügen und anhängen, um ein gültiges (X) HTML-Dokument zu erhalten. Ich habe es noch nicht geschafft, all diese Schritte von Selenium aus zu machen.

vor "view-source:" an die URL (wie getan here) funktioniert in einigen Browsern, z. Firefox und Chrome, aber nicht in Safari. Es zeigt Ihnen nicht das Ergebnis von DOM-Manipulationen. Ich kann Selenium IDE anscheinend nicht dazu bringen, eine Adresse zu öffnen, die mit "view-source:" beginnt; es wird immer ein Schrägstrich vorangestellt, und ich bin nicht sicher, wie ich das vermeiden kann.

Ich wäre daran interessiert zu wissen, welche anderen Ansätze Menschen versucht haben, und ob sie Erfolg hatten!

0

Versuchen

String html = selenium.getEval("window.document.body.innerHTML"); 

Es wird Ihnen den gesamten aktuellen DOM HTML geben, die von Javascript manipuliert wurden.

Verwandte Themen