Watir - Sayfa Nesneleri

Watir'deki Sayfa Nesnesi, kodu sınıflar biçiminde yeniden kullanmamıza yardımcı olur. Sayfa nesnesi özelliğini kullanarak, herhangi bir kodu kopyalamak zorunda kalmadan uygulamamızı otomatikleştirebilir ve ayrıca kodu yönetilebilir hale getirebiliriz.

Test ederken, test edeceğimiz her sayfa için sayfa nesnesi oluşturabiliriz. Ardından, page nesnesini kullanarak yöntemlere ve özelliklere erişeceğiz.

Sayfa nesnesini kullanmanın arkasındaki nedenler -

  • Değişikliklerde sayfada herhangi bir değişiklik yapılması durumunda, kodun yeniden yazılmasına gerek yoktur.

  • Kod fazlalığını önlemek için.

Watir'de sayfa nesnesini kullanmak için RSpec kullanacağız. RSpec'e aşina değilseniz, işte öğrenmeniz için RSpec için tam bir eğitim.

Test yapacağımız sayfa burada verilmiştir -

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>

Çıktı

Şimdi yukarıdaki sayfa için aşağıda gösterildiği gibi bir sayfa nesnesi oluşturacağız -

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

Tanımlanmış üç sınıf vardır - InitializeBrowser, TestPage ve TestTextbox -

  • InitializeBrowser - Bu, açılan tarayıcıyı başlatacak ve tarayıcı nesnesini TestPage ve TestTextbox sınıflarıyla paylaşacaktır.

  • TestPage - Bu sınıf, TestTextbox'a nesne başvurusuna sahip olacak ve ekran görüntüsü alma ve tarayıcıyı kapatma yöntemini içerir.

  • TestTextbox - Bu sınıf, sayfa url'sini açma, metin alanına referans verme, verileri ayarlama ve onchange olayını tetikleme yöntemlerine sahip olacaktır.

Yukarıda gösterilen kodu çalıştırdıktan sonra, çıktıyı aşağıda gösterildiği gibi görebilirsiniz -