2012-06-01 9 views
12

Sto testando il comportamento dell'applicazione Web con Cetriolo (utilizzando Selenium e Watir sotto il cappuccio). La mia app Web ha pagine HTML5 e utilizza il nuovo attributo "required". Se ho un modulo di inserimento dati con un campo obbligatorio e invio tale modulo con il campo vuoto, vorrei verificare che l'app Web risponda correttamente a una condizione di errore.Come si verificano le condizioni di errore nelle pagine HTML5 con cetriolo?

Sfortunatamente, durante il test utilizzando un browser Web HTML5, il messaggio di errore visualizzato in una convalida del campo non riuscita è accessibile a Cucumber tramite il driver Web. In ogni caso, il modulo non viene inviato e la pagina rimane sul modulo di inserimento dati.

D'altra parte, durante il test senza headless o con un browser non conforme a HTML5, il modulo può essere inviato, consentendo alla mia app Web di intercettare l'errore e rinviare l'utente alla pagina del modulo con un messaggio di errore.

Nel secondo caso, posso facilmente verificare l'esistenza del messaggio di errore poiché fa parte dell'HTML fornito nella pagina. Il mio problema è che non riesco a vedere come scrivere un singolo scenario di test che convaliderà la condizione di errore per le situazioni browser headless e HTML5.

È possibile che ciò sia impossibile con lo stato corrente dei driver Web Selenio e Watir. Ma se qualcuno ha qualche idea su come posso verificare il messaggio di errore "richiesto" HTML5, sarebbe un grande aiuto.

EDIT 2012-06-02: Ecco una pagina di esempio con un campione di HTML5 avvertimenti del browser e quali: http://railsdotnext.com/stackoverflow/required.html

C'è un testo richiesto e selezionare, una casella di testo che mostra il testo suggerimento interno, ed un casella di testo con convalida dell'input di espressioni regolari. La pagina non ha alcun CSS o javascript per confondere il problema, è solo vaniglia HTML5. Vedere lo w3schools page about HTML5 field attributes per un'analisi completa. Il modulo si sottomette a un semplice script cgi che fa semplicemente eco all'input del modulo, assumendo che il modulo abbia esito positivo. Un errore di invio rimarrà nella pagina del modulo di esempio.

+0

Esiste un esempio online che utilizza l'attributo 'obbligatorio' che possiamo visualizzare? – Cheezy

+0

Ne ho creato uno piccolo. Non è esaustivo, ma dovrebbe fornire abbastanza per giocare. Vedi EDIT al post originale sopra. –

+0

Più ci penso, testare l'errore HTML5 non è un problema: testerebbe se il browser funziona come progettato. Il problema è nel test della convalida del server quando l'HTML è scritto con moduli HTML5. Non voglio un codice HTML diverso nell'ambiente di test. Sarebbe meglio se Selenium e/o Watir: Webdriver potessero abilitare/disabilitare le risposte HTML5 così come possono essere javascript. –

risposta

0

Non ho ancora lavorato con l'attributo HTML5 required. Ma dal suo aspetto, quell'attributo required avverte semplicemente il browser che il campo del modulo deve essere compilato (cioè il DOM non cambia).

Mi sembra ragionevole affermare che l'attributo required sia presente nell'HTML dei campi modulo appropriati. Quel test dovrebbe passare per ENTRAMBI i browser HTML5 e i browser non HTML5.

Cercando di affermare qualcosa di più di quello che mi sembra come se stessimo testando la funzionalità del browser.

+0

l'unica cosa che posso fare quando devo convalidare un elemento come è: p $ browser.element (: css => " ingresso:. non valido ") esiste? p $ browser.element (: css => "input: richiesto"). Esiste? se qualcuno ha qualcosa di meglio o come possiamo ottenere il testo del popup html5 – macwadu

0

Oltre a convalidare che l'HTML creato è corretto per abilitare la convalida del browser, non sono sicuro di quanto si possa fare che non equivale a testare il browser e non il codice.

Utilizzando watir o watir-webdriver, è possibile utilizzare .type per verificare che l'input abbia il tipo corretto (ad esempio e-mail) impostato, che è una cosa che controlla la convalida del browser. L'altro è la presenza dell'attributo richiesto che è un po 'di trucco Potenzialmente .attribute_value ("richiesto") potrebbe funzionare, ma normalmente ciò restituisce il valore di un attributo, quindi non è sicuro di come quel metodo risponderebbe ad un attributo booleano. Altre alternative potrebbero essere guardare .attribute_list e

Sembra anche una buona ragione qui per Watir aggiungere un valore? Richiesto? metodo per inserire elementi che consentono di verificare facilmente se l'attributo è stato impostato.Quindi ho chiesto quella funzione https://github.com/watir/watir-webdriver/issues/189

+0

Secondo [Specifiche del webdriver] (http://www.w3.org/TR/webdriver/#reading-attributes-and-properties) booleano l'attributo restituisce 'true' se il suo valore è vero e' nil' se il suo valore è falso –

Problemi correlati