Watir-automatic-waits

提供:Dev Guides
移動先:案内検索

Watir-自動待機

この章では、待機を詳細に理解しましょう。 自動待機を理解するために、簡単なテストページを作成しました。 ユーザーがtextbox onchangeイベントにテキストを入力すると、3秒後にボタンが有効になります。

Watirには、特定のイベントまたはプロパティを待機する_wait_unit_ api呼び出しがあります。 以下に示すように、テストページについても同じテストを行います-

構文

browser.button(id: 'btnsubmit').wait_until(&:enabled?)
//here the wait is on the button with id : btnsubmit to be enabled.

testwaitl

<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>

出力

自動待機

テキストボックスにテキストを入力すると、ボタンが有効になるまで3秒間待つ必要があります。

自動待機

[送信]ボタンをクリックすると、次のテキストが表示されます-

送信ボタン

ボタンを有効にするための遅延が追加されたため、自動化がこのようなケースを処理することは困難です。 何らかの遅延がある場合、または特定のイベントやプロパティのプロパティで待機する必要がある場合は、以下に示すようにwait_untilを使用できます-

wait_untilを使用したWatirコード

require 'watir'
b = Watir::Browser.new :chrome
b.goto('http://localhost/uitesting/testwaitl')
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'

次に、次のコマンドを使用します

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

Watirは、ボタンが有効になるのを待ち、後でクリックイベントが発生するのを待ちます。 キャプチャされたスクリーンショットは以下に示されています-

Waittestbefore.png

Waittestbefore

waittestafter.png

waittestafter