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 -