2016-04-23 77 views
0

我正在編寫一個程序來執行一些基本的測試,我試圖讓它自動登錄。看來,documentComplete事件會被過度使用,如果我不得不在每種可能的情況下使用它。檢查webbrowser是否已經加載了新頁面而沒有完成文檔

我看到了一些瀏覽器ReadyState的例子,但我無法讓他們工作。

我有一個簡單的方法,它查找用戶名元素,輸入用戶名,調用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事件?它將所有的猜測都放在等待頁面加載的地方,而且實際上是正確的方法。您無法真正依靠服務器響應在給定的等待期內完成。通常唯一的保證是客戶端代碼的超時期限,但您不希望強制等待超時最大值。使用線程化請求和偵聽回調的事件將允許您發出請求並繼續爲用戶提供響應式用戶界面。

+0

我該如何訂閱該活動?這是否意味着通過調用方法會從文檔完成事件中得到響應? – tjcinnamon

相關問題