1

誰かがテキスト ボックスに整数を入力すると、データベースからデータを取得する Web ページがあります。データは最終的にいくつかのテキスト入力コントロールになります。簡単です。ajax を起動するセレンは次のとおりです。

<tr>
    <td>fireEvent</td>
    <td>ctl00_ContentPlaceHolder1_Wiz1_Control1_TextBox1</td>
    <td>blur</td>
</tr>

ぼかしイベントの後、ページにはテキストが含まれる 6 つの入力があります。テキストが入力に存在するのを待ち、それらが存在すると主張したいと思います。これを行う効果的な方法は何ですか?

私はもう試した:

  • waitForExpressionjquery 呼び出しを使用 ($('...').val() != ''ただし、jquery がページに読み込まれているにもかかわらず、これが jquery のために機能するかどうかは疑わしい); xpathも試しましたが、それもうまくいきませんでした
  • waitForText(ロケータ、パターン)、これは最も明白なもののように見えますが、実際には機能しません。フィールドは入力であるため、私は疑っています

クエリしている要素はinputコントロールであるため、ここで別のアプローチが必要ですか?

4

2 に答える 2

1

解決策(Selenium googleグループのユーザーによって提供される)は、waitForTextの代わりにwaitForValueを使用することです。一方では、これは理解するのがはるかに簡単だったかもしれません。一方、テストしていたDOMオブジェクトについてもっと知ることができました。

<tr>
  <td>waitForValue</td>
  <td>ctl00_ContentPlaceHolder1_TheTextBox</td>
  <td>regexp:.+</td>
</tr>

>>>Googleグループリンク

于 2011-01-19T17:58:59.447 に答える
0

このようなことをします。これは、すべての TextBoxes の値を最大 60 秒間待機します。それらのすべてに値がある場合は、それらをチェックしてループから抜け出します。そうしないと、60 秒後に失敗します。

for (int second = 0;; second++) {
  if (second >= 60) fail("timeout");
  try { 
    if (selenium.getValue("TextBox1") != "" && selenium.getValue("TextBox2") !="" )) 
      { Your Logic here..
         break;
       } 
   } catch (Exception e) {}
  Thread.sleep(1000);
}
于 2011-01-19T02:26:46.470 に答える