2009-12-12 3 views
5

Uso il selenio per testare la mia applicazione. Un bel test sarebbe che dopo ogni manipolazione DOM avrei convalidato il DOM. C'è un bel modo per farlo?Validazione della manipolazione del DOM durante l'utilizzo del selenio

modi evidenti sono:

  • uso qualche funzione Selenio incorporato. Ce n'è uno?
  • ottiene l'HTML del DOM dopo la manipolazione e utilizza un validatore locale. Tuttavia, non riesco a vedere come ottenere l'HTML per il DOM corrente da Selenium.
  • Potrei passare attraverso javascript in qualche modo, aggiungendo un file JS durante il test o tramite Selenium. Ma non sono sicuro di come andare su questo. Pensieri?

risposta

4

Non vi è alcun processo integrato per fare ciò utilizzando il selenio. Esiste comunque un progetto Open Source basato su WebDriver, WebDriver diventa Selenium 2, che consente di eseguire test di layout.

Il progetto è allo http://code.google.com/p/fighting-layout-bugs/ ed è stato presentato per la prima volta al GTAC 2009 a Zurigo. Il codice utilizza W3C e jQuery per verificare la validità del DOM. Dai un'occhiata al video del talk e al codice che c'è.

EDIT:

Grazie alla sampablokuper la validazione W3C è a code.google.com/p/w3c-markup-validation-filter/

+0

Questo è un progetto estremamente interessante, ma il test di layout è molto diverso dal test di validità di HTML. – sampablokuper

+0

il lavoro sul frame esegue validazione w3c. Guarda il video sul sito per vedere l'ESEMPIO. Crea una casella sulla pagina che è rossa o verde a seconda di come convalida, quindi basta controllare il suo colore – AutomatedTester

+0

Vero, il video lo menziona, ma il codice per farlo è in realtà nell'altro progetto di Michael Tamm: http://code.google.com/p/w3c-markup-validation-filter /. Non sono ancora riuscito a far girare quel codice sul mio sistema (non tocco Java spesso, quindi sono un po 'lento con esso) ma non vedo l'ora di farlo. Saluti :) – sampablokuper

1

ho riflettuto sullo stesso fronte. Ecco i miei progressi finora.

È possibile accedere all'attributo JavaScript document.documentElement.outerHTML in alcuni browser, ad es. Safari e Chrome, ma non in Firefox. Questo ti mostrerà il risultato delle manipolazioni DOM ma non ti darà abbastanza codice sorgente completo per la pagina. Se si inserisce un codice JavaScript che memorizzerà il valore di document.documentElement.outerHTML dopo aver eseguito la manipolazione del DOM, sarà possibile ottenere Selenium per digitare quel valore nella textarea "input diretto" del validatore W3C e inviarlo . Dovresti anteporre e aggiungere il valore in modo appropriato per renderlo un documento HTML (X) valido. Non sono ancora riuscito a far funzionare tutti questi passaggi dal Selenium.

prepending "view-source:" all'URL (come fatto here) funziona in alcuni browser, ad es. Firefox e Chrome, ma non in Safari. Non mostrerà il risultato delle manipolazioni DOM. Non riesco a ottenere l'IDE Selenium per aprire un indirizzo che inizia con "view-source:" tuttavia; prepara sempre una barra in avanti, e non sono sicuro di come evitarlo.

Sarei interessato a sapere quali altri approcci le persone hanno provato e se hanno avuto qualche successo!

0

Prova

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

Vi darà l'intero HTML DOM corrente che è stato manipolato da JavaScript.