Menguji Tabel jqGrid Melalui Selenium


Pada sebuah halaman yang harus diuji, saya dihadapkan pada sebuah tabel jqGrid yang menampilkan data dari database, yang terlihat seperti pada gambar berikut ini:

Tampilan Yang Akan DiUji

Tampilan Yang Akan DiUji

Kode HTML yang membentuk halaman tersebut, bila dilihat melalui inspector Firefox, adalah:

Source  HTML Dilihat Dari Inspector Firefox

Source HTML Dilihat Dari Inspector Firefox

Pada dasarnya ini adalah sebuah elemen <table> diikuti <tbody>, didalamnya terdapat <tr> dan <td>.  Pertanyaannya adalah bagaimana cara menguji tabel di atas melalui Selenium?

Untuk 5 kolom pertama, saya bisa menggunakan method getTable() milik object WebDriverBackedSelenium.  Method tersebut menerima parameter dalam bentuk idtabel.indexbaris.indexkolom.  Sebagai contoh, nilai selenium.getTable(“grid.0.0”) akan mengembalikan nilai text yang terlihat untuk baris pertama dan kolom pertama dari tabel dengan id berupa “grid”.

Karena jqGrid selalu menyisakan baris pertama untuk disembunyikan, maka saya harus mulai menguji mulai dari baris kedua atau index baris 1 (bukan 0).  Demikian juga, karena  kolom pertama berisi id dan disembunyikan, maka saya  harus mulai dari index baris 1 (bukan 0).  Berikut ini contoh kode program pengujiannya:

assertEquals("10-10-2012", selenium.getTable("grid.1.1"));
assertEquals("13-10-2012 16:10", selenium.getTable("grid.1.2"));
assertEquals("01PQVS3KY5", selenium.getTable("grid.1.3"));
assertEquals("160.000,00", selenium.getTable("grid.1.4"));
assertEquals("Konfirmasi Sukses", selenium.getTable("grid.1.5"));

Nilai yang dipakai pada kode program di atas harus sesuai dengan nilai yang tersimpan di database!  Dengan demikian, bila suatu hari nanti, setelah perjalanan panjang coding sana sini, tiba-tiba halaman ini menampilkan nilai yang tidak sesuai, saya akan segera mengetahuinya.

Berikutnya, menguji kolom terakhir yang berisi tombol akan sedikit sulit.  Hal ini karena saya tidak bisa memakai getTable() berhubung getTable() sama seperti getText() mengembalikan apa yang dilihat oleh user!   Saya harus memakai getValue() yang mengembalikan nilai atribut value pada elemen yang ditentukan.  

Pertanyaannya adalah bagaimana cara memilih kolom kelima dari setiap baris?  Salah satu solusi yang mungkin adalah dengan memakai ekpresi XPath.  Berbeda dengan getTable(), pada ekspresi XPath, index dimulai dari 1, bukan dimulai dari 0.  Berikut ini adalah contoh mengambil atribut value (yang mewakili caption) dari sebuah <input type=”button”> dengan memakai XPath:

assertEquals("Cetak", selenium.getValue("//table[@id='grid']/tbody/tr[2]/td[7]/input[1]"));

Kode program diatas akan memeriksa apakah baris ke-dua (yang pertama kali terlihat, karena baris pertama di jqGrid disembunyikan) dan kolom ke-7 (karena pada kode program tampilan saya, setiap baris terdiri atas 7 kolom, dimana kolom pertama disembunyikan!) memiliki elemen <input> dengan atribut value berupa “Cetak”.

Untuk menguji apakah XPath yang saya masukkan benar atau salah, saya bisa menggunakan fungsi $x() di console Firebug .  Sebagai contoh, bila saya mengetik $x(“//table[@id=’grid’]”) di console Firebug, maka Firebug akan mengembalikan objek  <table> dengan id “grid”.

Perihal Solid Snake
I'm nothing...

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: