L'HTML normalizza automaticamente gli spazi all'interno degli elementi, ignorando gli spazi iniziali / finali e convertendo gli spazi extra, le tabulazioni e le nuove righe in un unico spazio. Quando Selenium legge il testo fuori dalla pagina, tenta di duplicare questo comportamento, quindi puoi ignorare tutte le tabulazioni e le nuove righe nel tuo HTML e fare asserzioni basate su come appare il testo nel browser quando viene visualizzato. Lo facciamo sostituendo tutti gli spazi non visibili (incluso lo spazio unificatore "
") con un unico spazio. Tutte le nuove righe visibili ( <br>
, <p>
e le <pre>
nuove righe formattate) devono essere conservate.
Usiamo la stessa logica di normalizzazione sul testo delle tabelle dei casi di test HTML Selenese. Questo ha una serie di vantaggi. In primo luogo, non è necessario guardare il sorgente HTML della pagina per capire quali dovrebbero essere le proprie asserzioni; I
simboli " " sono invisibili all'utente finale, quindi non dovresti preoccuparti di loro quando scrivi i test selenesi. (Non è necessario inserire "
" marcatori nel test case per affermare il testo su un campo che contiene "
".) Puoi anche inserire nuovi caratteri e spazi extra nei tuoi <td>
tag selenesi
; poiché utilizziamo la stessa logica di normalizzazione sul caso di test che facciamo sul testo, possiamo garantire che le asserzioni e il testo estratto corrisponderanno esattamente.
Questo crea un po 'di problemi in quelle rare occasioni in cui vuoi / hai davvero bisogno di inserire spazi bianchi extra nel tuo test case. Ad esempio, potrebbe essere necessario digitare del testo in un campo come questo: " foo
". Ma se scrivi semplicemente <td>foo </td>
nel tuo test case selenese, sostituiremo i tuoi spazi extra con un solo spazio.
Questo problema ha una soluzione semplice. Abbiamo definito una variabile in selenese
${space}
, il cui valore è un singolo spazio. È possibile utilizzare ${space}
per inserire uno spazio che non sarà tagliato automaticamente, in questo modo:
<td>foo${space}${space}${space}</td>
. Abbiamo anche incluso una variabile
${nbsp}
, che puoi usare per inserire uno spazio unificatore.
Nota che gli XPath non normalizzano gli spazi bianchi come facciamo noi. Se avete bisogno di scrivere un XPath come
//div[text()="hello world"]
, ma il codice HTML del collegamento è davvero " hello world
", è necessario inserire un vero e proprio "
" nel caso di test Selenese per farlo per abbinare, in questo modo:
//div[text()="hello${nbsp}world"]
.