Watir - Automatische Wartezeiten

Lassen Sie uns in diesem Kapitel die Wartezeiten im Detail verstehen. Um das automatische Warten zu verstehen, haben wir eine einfache Testseite erstellt. Wenn der Benutzer Text in das Textfeld eingibt, wird ein Änderungsereignis ausgelöst und nach 3 Sekunden wird die Schaltfläche aktiviert.

Watir hat einen API-Aufruf wait_unit , der auf ein bestimmtes Ereignis oder eine bestimmte Eigenschaft wartet. Wir werden das gleiche für die Testseite wie unten angegeben testen -

Syntax

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;"&gtl;
         Button is clicked
      </div>
   </body>
</html>

Ausgabe

Wenn Sie den Text in das Textfeld eingeben, müssen Sie 3 Sekunden warten, bis die Schaltfläche aktiviert ist.

Wenn Sie auf die Schaltfläche Senden klicken, wird der folgende Text angezeigt:

Da wir nun die Verzögerung für die Aktivierung der Schaltfläche hinzugefügt haben, ist es für die Automatisierung schwierig, solche Fälle zu behandeln. Immer wenn wir eine Verzögerung haben oder auf ein Ereignis oder eine Eigenschaft des zu lokalisierenden Elements warten müssen, können wir wait_until wie unten gezeigt verwenden -

Watir-Code mit 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'

Verwenden Sie als Nächstes den folgenden Befehl

btn = b.button(id: 'btnsubmit').wait_until(&:enabled?)

Watir wird warten, bis die Schaltfläche aktiviert wird, und später darauf warten, dass das Klickereignis ausgelöst wird. Die aufgenommenen Screenshots sind unten dargestellt -

Waittestbefore.png

waittestafter.png