Watir - Attese automatiche
In questo capitolo, capiamo in dettaglio le attese. Per comprendere le attese automatiche, abbiamo creato una semplice pagina di test. Quando l'utente inserisce del testo nella casella di testo, viene attivato l'evento onchange e dopo 3 secondi il pulsante viene abilitato.
Watir ha una chiamata api wait_unit che attende un particolare evento o proprietà. Testeremo lo stesso per la pagina di test come indicato di seguito:
Sintassi
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>
Produzione
Quando inserisci il testo nella casella di testo, dovrai attendere 3 secondi per abilitare il pulsante.
Quando si fa clic sul pulsante Invia, viene visualizzato il testo seguente:
Ora poiché abbiamo aggiunto un ritardo per l'abilitazione del pulsante, è difficile per l'automazione gestire questi casi. Ogni volta che abbiamo qualche ritardo o dobbiamo aspettare che qualche evento o proprietà dell'elemento venga individuato, possiamo fare uso di wait_until come mostrato di seguito -
Codice Watir utilizzando 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'
Quindi, usa il seguente comando
btn = b.button(id: 'btnsubmit').wait_until(&:enabled?)
Watir aspetterà che il pulsante venga abilitato e in seguito procederà all'attivazione dell'evento clic. Gli screenshot catturati sono mostrati di seguito: