2016-04-23 5 views
0

基本的なテストを行うプログラムを書いています。私は自動的にログインするようにしています。可能なすべてのシナリオでそれを使用しなければならなかった場合、documentCompleteイベントが過度に使用されるようです。webbrowserがドキュメントなしで新しいページをロードしたかどうか確認してください。

ブラウザのReadyStateでいくつかの例を見ましたが、動作させることができません。

私はusername要素を見つけてユーザー名を入力し、clickメソッドを呼び出し、パスワード要素を見つけてパスワードを入力し、clickメソッドを呼び出す簡単なメソッドを持っています。

メッセージボックスでプロセスを遅らせた場合は、ページの読み込み時間がかかるために機能します。

private void fillInLogin() 
     { 
      browser.Document.GetElementById("des_LoginName").InnerText = "myLogon"; 
      browser.Document.GetElementById("btnLogOn").InvokeMember("click"); 

      //*********WHAT CAN I PUT HERE TO CHECK TO SEE IF THOSE ELEMENTS EXIST*********** 

      browser.Document.GetElementById("des_Password").InnerText = "myPassword"; 
      browser.Document.GetElementById("btnSubmit").InvokeMember("click"); 

     } 

答えて

1

WebBrowser.DocumentCompletedイベントを購読しましたか?ページが読み込まれるのを待つことから推測が外れるわけではなく、実際にそれを行う正しい方法です。一定の待機時間内にサーバーの応答が完了することに本当に頼ることはできません。通常、唯一の保証はクライアントコードのタイムアウト期間ですが、強制的にタイムアウトの最大値に強制したくありません。スレッド化された要求とコールバックをリッスンするイベントを使用すると、要求を行い、応答可能なUIをユーザーに提供し続けることができます。

+0

イベントに登録するにはどうすればよいですか?そのメソッドを呼び出すことによって、そのドキュメントの完了イベントからの応答が得られますか? – tjcinnamon

関連する問題