HTML secara otomatis menormalkan spasi dalam elemen, mengabaikan spasi di depan / di belakang dan mengubah spasi ekstra, tab, dan baris baru menjadi satu spasi. Saat Selenium membaca teks dari halaman, ia mencoba untuk menduplikasi perilaku ini, sehingga Anda dapat mengabaikan semua tab dan baris baru di HTML Anda dan melakukan pernyataan berdasarkan tampilan teks di browser saat ditampilkan. Kami melakukan ini dengan mengganti semua spasi yang tidak terlihat (termasuk spasi yang tidak putus "
") dengan satu spasi. Semua baris baru yang terlihat ( <br>
,, <p>
dan <pre>
baris baru yang diformat) harus dipertahankan.
Kami menggunakan logika normalisasi yang sama pada teks tabel kasus uji HTML Selenese. Ini memiliki sejumlah keuntungan. Pertama, Anda tidak perlu melihat sumber HTML halaman untuk mengetahui apa yang seharusnya menjadi pernyataan Anda;
Simbol " " tidak terlihat oleh pengguna akhir, jadi Anda tidak perlu mengkhawatirkannya saat menulis pengujian Selenese. (Anda tidak perlu menempatkan
penanda " " dalam kasus pengujian Anda untuk assertText pada bidang yang berisi "
".) Anda juga dapat menambahkan baris dan spasi ekstra di <td>
tag Selenese Anda
; karena kita menggunakan logika normalisasi yang sama pada kasus uji seperti yang kita lakukan pada teks, kita dapat memastikan bahwa pernyataan dan teks yang diekstrak akan sama persis.
Ini menciptakan sedikit masalah pada kesempatan langka tersebut ketika Anda benar-benar ingin / perlu memasukkan spasi ekstra dalam kasus pengujian Anda. Misalnya, Anda mungkin perlu mengetik teks di bidang seperti ini: " foo
". Tetapi jika Anda hanya menulis<td>foo </td>
dalam kasus uji Selenese, kami akan mengganti spasi ekstra Anda hanya dengan satu spasi.
Masalah ini memiliki solusi sederhana. Kami telah menetapkan variabel dalam bahasa Selenese
${space}
, yang nilainya berupa spasi tunggal. Anda dapat menggunakan ${space}
untuk menyisipkan spasi yang tidak akan secara otomatis dipangkas, seperti ini:
<td>foo${space}${space}${space}</td>
. Kami juga menyertakan variabel
${nbsp}
, yang dapat Anda gunakan untuk menyisipkan spasi non-breaking.
Perhatikan bahwa XPath tidak menormalkan spasi seperti yang kita lakukan. Jika Anda perlu menulis seperti XPath
//div[text()="hello world"]
tetapi HTML tautannya benar-benar " hello world
", Anda harus memasukkan "
" yang asli ke dalam kasus uji Selenese Anda agar cocok, seperti ini:
//div[text()="hello${nbsp}world"]
.