Watir - Oggetti pagina

Page Object in Watir ci aiuta a riutilizzare il codice sotto forma di classi. Utilizzando la funzionalità dell'oggetto pagina, possiamo automatizzare la nostra app senza dover duplicare alcun codice e rende anche il codice gestibile.

Durante il test, possiamo creare un oggetto pagina per ciascuna pagina che andremo a testare. Quindi, accediamo ai metodi e alle proprietà utilizzando l'oggetto pagina.

Le ragioni alla base dell'utilizzo dell'oggetto pagina -

  • Nel caso in cui vengano apportate modifiche alla pagina in seguito a modifiche, non è necessario riscrivere il codice.

  • Per evitare la ridondanza del codice.

Useremo RSpec per utilizzare l'oggetto pagina in Watir. Nel caso in cui non si abbia familiarità con RSpec, ecco un tutorial completo disponibile per RSpec per l'apprendimento.

La pagina su cui eseguiremo il test è indicata qui:

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>

Produzione

Creeremo ora un oggetto pagina per la pagina sopra come mostrato di seguito -

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

Sono disponibili tre classi definite: InitializeBrowser, TestPage e TestTextbox -

  • InitializeBrowser - Questo inizializzerà il browser aperto e condividerà l'oggetto browser con le classi TestPage e TestTextbox.

  • TestPage - Questa classe avrà un riferimento a un oggetto TestTextbox e contiene il metodo per acquisire screenshot e chiudere il browser.

  • TestTextbox - Questa classe avrà metodi per aprire l'URL della pagina, fornire riferimenti al campo di testo, impostare i dati e attivare l'evento onchange.

Una volta eseguito il codice mostrato sopra, puoi vedere l'output come mostrato di seguito -