Watir - Esperas automáticas
En este capítulo, entendamos las esperas en detalle. Para comprender las esperas automáticas, hemos creado una página de prueba simple. Cuando el usuario ingresa texto en el cuadro de texto, se activa un evento de cambio y después de 3 segundos se habilita el botón.
Watir tiene una llamada api wait_unit que espera en un evento o propiedad en particular. Probaremos lo mismo para la página de prueba como se indica a continuación:
Sintaxis
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>
Salida
Cuando ingrese el texto en el cuadro de texto, deberá esperar 3 segundos para que se habilite el botón.
Al hacer clic en el botón Enviar, se muestra el siguiente texto:
Ahora que hemos agregado un retraso para que se habilite el botón, es difícil que la automatización maneje tales casos. Siempre que tengamos algún retraso o tengamos que esperar por algún evento o propiedad del elemento a ubicar, podemos hacer uso de wait_until como se muestra a continuación:
Código Watir usando 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'
A continuación, use el siguiente comando
btn = b.button(id: 'btnsubmit').wait_until(&:enabled?)
Watir esperará a que el botón se habilite y luego irá a que se active el evento de clic. Las capturas de pantalla capturadas se muestran a continuación: