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 -