我有一個帶有瀏覽器控件的窗體。 (此控件使用IE9,因爲我在註冊表編輯器上設置了值)WebBroswer_DocumentCompleted事件不起作用
此Web瀏覽器導航到特定的URL並填充HTML頁面上的所有字段並提交它們,然後顯示結果頁面。 我的問題是,我只想知道這個reslut頁面何時完全加載或完成,以便我可以獲取一些信息。 我使用WebBroswer_DocumentCompleted事件,該事件適用於第一頁,但不適用於結果頁面,因爲它在加載頁面 頁面之前觸發。
我試過其他的解決方案,它是檢查結果頁面內的div標籤(這個標籤只在結果頁面完全加載時出現),它的工作原理並不總是如此。
我的代碼:
private void WebBroswer_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
HtmlElementCollection elc3 = this.BotBrowser.Document.GetElementsByTagName("div");
foreach (HtmlElement el in elc3)
{
if (el.GetAttribute("id").Equals("Summary_Views")) //this determine i am at the result page
{
// fetch the result
}
}}
該div id爲 「Summary_Views」。 我可以爲您提供該網站的需求鏈接,這只是用於研究目的的BLAST工具和數據庫網站。
我同意你的看法,所以我認爲我即使在DocumentComplted事件觸發後,也應等待頁面完全加載。所以我該如何等待?我使用Thread.Sleep()函數,但它停止頁面和代碼的整個加載。 –
我已經做了一個功能,找到這個Div標籤,並將此函數綁定到一個新線程(通過使用ThreadStart委託)。我只是想啓動這個新線程,並讓DocumentCompleted事件觸發結果頁後休眠幾秒鐘我可以很容易地找到Div標籤。 –
我比較新的Stackoverflow,所以我沒有注意到這個答覆之前。有一種非常簡單的方法可以爲DocumentComplete事件創建一個處理程序;只需雙擊設計器中的WebBrowser控件即可。 DocumentComplete事件是WebBrowser控件的設計器中的默認事件。 –