2012-01-02 11 views
0

ロードイベントのテキストボックスにテキストボックスが1つあります。有効にするには、テキストボックスを有効にします。 watinで10秒待つ方法。 私はこのコードテキストボックスが有効になるまで待つ方法

IE ie = new IE("http://localhost:2034/WebForm3.aspx"); 
     ie.ShowWindow(WatiN.Core.Native.Windows.NativeMethods.WindowShowStyle.Maximize); 
     ie.TextField("TextBox1").TypeText("Fer"); 

にしようと思いますが、それはTextBox1テキストボックスはので、私はいくつかの時間を待つしたい無効ですエラーが発生します。 これを行うにはどうすればいいですか? 私を助けてください?

+0

のですか?またはサーバー側のコードまたは他のスクリプト?また、質問を明確にしてください。 – dotNETbeginner

答えて

0

あなただけのテストを待つようにするためには一定の時間のためのスレッドをスリープ状態にすることができます

  System.Threading.Thread.Sleep(10000); 

時間はミリ秒です。おそらくその数を少し増やす必要があるかもしれませんが、これでもうまくいくはずです。

+0

睡眠時間は任意ですが、大丈夫ですが、必要以上に長い時間待つと効率が悪くなります。作品は素晴らしいですが。 – OCary

0

Webページのロードがあなたがおそらくこれを使用することができたときにそれが実行された場合:要素とフレームの全てが次のタスクを実行する前にロードされるまで、完全なため

ie.WaitForComplete(); 

待ちは、テスト待ちを行いますあなたのケースでは、入力のためのテキストボックスを見つける。

私がスレッドをスリープ状態にする唯一の問題は、必要以上に時間がかかります。このようにして、ページが完了するとすぐに実行されていることがわかります。 (多少異なる場合があります)。

0

2つのより良い長いThread.Sleep()を使用して、スクリプトやasnyc呼び出しのためにフィールドが有効になるのを待つのではなく、 Ajaxなど。 (注:私は私のコードで持っている長いThread.Sleeps()を認めて恥ずかしいだろう)

以下は両方ともチェックボックスを参照していますが、同じコンセプトはテキストボックスなどでうまくいくはずですコントロール。

1)無効な属性を確認してください。

myPage.myCheckbox.WaitUntil("disabled", false.ToString()) 

2)フィールドをポーリングし、各チェックで短い時間をスリープ状態にします。上記の単純なライナーがうまくいかなかったので、この投票パターンを実行しました。私はそれがかなり長い間、なぜ覚えていないのですか? JavaScriptを掲載しているどのようなコードは

int sleepTime = 100; 
int numberOfPolls = 50; 

for (int i = 0; i < 50; i++) 
{ 
    if (myPage.myCheckbox.Enabled == false) 
    { 
     Thread.Sleep(100); 
    } 
    else 
    { 
     break; 
    } 
} 
0

あなたはこれを試みることができる...

ie.Element("TextBox1").WaitUntil<Element>(element => element.Enabled); 
関連する問題