Watir - Objek Halaman

Objek Halaman di Watir membantu kita untuk menggunakan kembali kode dalam bentuk kelas. Dengan menggunakan fitur objek halaman, kita dapat mengotomatiskan aplikasi kita tanpa harus menduplikasi kode apa pun dan juga membuat kode tersebut dapat dikelola.

Saat menguji, kita dapat membuat objek halaman untuk setiap halaman yang akan kita uji. Kemudian, kita akan mengakses metode dan properti menggunakan objek halaman.

Alasan di balik penggunaan objek halaman -

  • Jika ada perubahan yang dilakukan pada halaman saat mengubah perubahan, penulisan ulang kode tidak diperlukan.

  • Untuk menghindari redundansi kode.

Kami akan menggunakan RSpec untuk menggunakan objek halaman di Watir. Jika Anda tidak terbiasa dengan RSpec, berikut adalah tutorial lengkap yang tersedia untuk RSpec untuk Anda pelajari.

Halaman tempat kami akan melakukan pengujian diberikan di sini -

textbox.html

<html>
   <head>
      <title>Testing UI using Watir</title>
   </head>
   
   <body>
      <script type = "text/javascript">
         function wsentered() {
            console.log("inside wsentered");
            var firstname = document.getElementById("firstname");
            
            if (firstname.value != "") {
               document.getElementById("displayfirstname").innerHTML = 
                  "The name entered is : " + firstname.value;
               
               document.getElementById("displayfirstname").style.display = "";
            }
         }
      </script>
      
      <div id = "divfirstname">
         Enter First Name : 
         <input type = "text" id = "firstname" name = "firstname" onchange = "wsentered()" />
      </div>
      <br/>
      <br/>
      <div style = "display:none;" id = "displayfirstname"></div>
   </body>
</html>

Keluaran

Kami sekarang akan membuat objek halaman untuk halaman di atas seperti yang ditunjukkan di bawah ini -

pageobjecttest.rb

class InitializeBrowser
   def initialize(browser)
      @browser = browser
   end
end

class TestPage lt; InitializeBrowser
   def textbox
      @textbox = TestTextbox.new(@browser)
   end
   def close
      @browser.screenshot.save 'usingpageobject.png'
      @browser.close
   end
end # TestPage

class TestTextbox < InitializeBrowser
   URL = "http://localhost/uitesting/textbox.html"

   def open
      @browser.goto URL
      self
   end
   def enterdata_as(name)
      name_field.set name
      name_field.fire_event('onchange')
   end

private
   def name_field
      @browser.text_field(:id > "firstname")
   end
end # TestTextbox

Ada tiga kelas yang ditentukan - InitializeBrowser, TestPage dan TestTextbox -

  • InitializeBrowser - Ini akan menginisialisasi browser yang dibuka dan membagikan objek browser dengan kelas TestPage dan TestTextbox.

  • TestPage - Kelas ini akan memiliki referensi objek ke TestTextbox dan berisi metode untuk menangkap tangkapan layar dan menutup browser.

  • TestTextbox - Kelas ini akan memiliki metode untuk membuka url halaman, memberikan referensi ke textfield, mengatur data dan mengaktifkan peristiwa perubahan.

Setelah Anda menjalankan kode yang ditunjukkan di atas, Anda dapat melihat hasilnya seperti di bawah ini -