Watir - Chờ đợi tự động
Trong chương này, chúng ta hãy hiểu chi tiết về sự chờ đợi. Để hiểu các lượt chờ tự động, chúng tôi đã tạo một trang thử nghiệm đơn giản. Khi người dùng nhập văn bản vào hộp văn bản, sự kiện onchange sẽ được kích hoạt và sau 3 giây, nút này sẽ được bật.
Watir có một lệnh gọi api wait_unit chờ trên một sự kiện hoặc thuộc tính cụ thể. Chúng tôi sẽ kiểm tra tương tự cho trang kiểm tra như được cung cấp bên dưới -
Cú pháp
browser.button(id: 'btnsubmit').wait_until(&:enabled?)
//here the wait is on the button with id : btnsubmit to be enabled.
testwait.html
<html>
<head>
<title>Testing UI using Watir</title>
</head>
<body>
<script type = "text/javascript">
function wsentered() {
setTimeout(function() {
document.getElementById("btnsubmit").disabled = false; }, 3000);
}
function wsformsubmitted() {
document.getElementById("showmessage").style.display = "";
}
</script>
<div id = "divfirstname">
Enter First Name :
<input type = "text" id = "firstname" name = "firstname" onchange = "wsentered()" />
</div>
<br/>
<br/>
<button id = "btnsubmit" disabled onclick = "wsformsubmitted();">Submit</button>
<br/<
<br/<
<div id = "showmessage" style = "display:none;color:green;font-size:25px;">l;
Button is clicked
</div>
</body>
</html>
Đầu ra
Khi bạn nhập văn bản vào hộp văn bản, bạn sẽ phải đợi 3 giây để nút được bật.
Khi bạn nhấp vào nút Gửi, văn bản sau được hiển thị:
Bây giờ vì chúng tôi đã thêm độ trễ để kích hoạt nút, nên rất khó để tự động hóa xử lý các trường hợp như vậy. Bất cứ khi nào chúng ta có sự chậm trễ hoặc phải đợi một sự kiện hoặc thuộc tính nào đó của phần tử được định vị, chúng ta có thể sử dụng wait_until như hình dưới đây:
Mã Watir sử dụng wait_until
require 'watir'
b = Watir::Browser.new :chrome
b.goto('http://localhost/uitesting/testwait.html')
t = b.text_field(name: 'firstname')
t.exists?
t.set 'Riya Kapoor'
b.screenshot.save 'waittestbefore.png'
t.value
t.fire_event('onchange')
btn = b.button(id: 'btnsubmit').wait_until(&:enabled?)
btn.fire_event('onclick');
b.screenshot.save 'waittestafter.png'
Tiếp theo, sử dụng lệnh sau
btn = b.button(id: 'btnsubmit').wait_until(&:enabled?)
Watir sẽ đợi cho nút được kích hoạt và sau đó sẽ kích hoạt sự kiện nhấp chuột. Ảnh chụp màn hình đã chụp được hiển thị bên dưới -