Watir - Seitenobjekte

Das Seitenobjekt in Watir hilft uns, den Code in Form von Klassen wiederzuverwenden. Mit der Seitenobjektfunktion können wir unsere App automatisieren, ohne Code duplizieren zu müssen, und den Code verwaltbar machen.

Beim Testen können wir ein Seitenobjekt für jede Seite erstellen, die wir testen möchten. Anschließend greifen wir mithilfe des Seitenobjekts auf die Methoden und Eigenschaften zu.

Die Gründe für die Verwendung des Seitenobjekts -

  • Falls bei Änderungen Änderungen an der Seite vorgenommen werden, ist ein erneutes Schreiben des Codes nicht erforderlich.

  • Um Code-Redundanz zu vermeiden.

Wir werden RSpec verwenden, um das Seitenobjekt in Watir zu verwenden. Falls Sie mit RSpec nicht vertraut sind, finden Sie hier ein vollständiges Tutorial für RSpec, das Sie lernen können.

Die Seite, auf der wir den Test durchführen werden, finden Sie hier -

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>

Ausgabe

Wir werden nun ein Seitenobjekt für die obige Seite erstellen, wie unten gezeigt -

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

Es sind drei Klassen definiert - InitializeBrowser, TestPage und TestTextbox -

  • InitializeBrowser - Dadurch wird der geöffnete Browser initialisiert und das Browserobjekt für die Klassen TestPage und TestTextbox freigegeben.

  • TestPage - Diese Klasse hat einen Objektverweis auf TestTextbox und enthält die Methode zum Erfassen von Screenshots und Schließen des Browsers.

  • TestTextbox - Diese Klasse verfügt über Methoden zum Öffnen der Seiten-URL, zum Verweisen auf das Textfeld, zum Festlegen der Daten und zum Auslösen eines Änderungsereignisses.

Sobald Sie den oben gezeigten Code ausgeführt haben, können Sie die Ausgabe wie unten gezeigt sehen -