Watir - Đối tượng Trang
Đối tượng Trang trong Watir giúp chúng ta sử dụng lại mã dưới dạng các lớp. Sử dụng tính năng đối tượng trang, chúng tôi có thể tự động hóa ứng dụng của mình mà không cần phải sao chép bất kỳ mã nào và cũng giúp mã có thể quản lý được.
Khi kiểm tra, chúng tôi có thể tạo đối tượng trang cho mỗi trang mà chúng tôi sẽ kiểm tra. Sau đó, chúng ta sẽ truy cập các phương thức và thuộc tính bằng cách sử dụng đối tượng trang.
Những lý do đằng sau việc sử dụng đối tượng trang -
Trong trường hợp bất kỳ thay đổi nào được thực hiện đối với trang khi thay đổi thay đổi, không cần viết lại mã.
Để tránh dư thừa mã.
Chúng tôi sẽ sử dụng RSpec để sử dụng đối tượng trang trong Watir. Trong trường hợp nếu bạn chưa quen với RSpec, đây là một hướng dẫn đầy đủ về RSpec cho bạn học.
Trang mà chúng tôi sẽ thực hiện kiểm tra được đưa ra ở đây -
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>
Đầu ra
Bây giờ chúng ta sẽ tạo đối tượng trang cho trang trên như hình dưới đây -
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
Có ba lớp được định nghĩa - InitializeBrowser, TestPage và TestTextbox -
InitializeBrowser - Thao tác này sẽ khởi tạo trình duyệt đã mở và chia sẻ đối tượng trình duyệt với các lớp TestPage và TestTextbox.
TestPage - Lớp này sẽ có tham chiếu đối tượng đến TestTextbox và chứa phương thức chụp ảnh màn hình và đóng trình duyệt.
TestTextbox - Lớp này sẽ có các phương thức để mở url trang, cung cấp tham chiếu đến textfield, thiết lập dữ liệu và kích hoạt sự kiện onchange.
Khi bạn thực thi mã hiển thị ở trên, bạn có thể thấy kết quả như hình dưới đây: