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 -