2012-05-11 15 views
0

這裏單擊某個元素下載數據的情況是:我在程序中使用WebBrowser,我要檢測的是瀏覽器下載從目標服務器中的數據時,就可以點擊一個HTML元素。如何檢測網頁瀏覽器從目標服務器時,在C#

這就是我想要做的:

HtmlElement element = browser.GetOneElement 
element.InvokeMember("click"); 
if(will download data from the server?) 
{ 
    //do something 
} 
else 
{ 
    //do other thing 
} 

目前,我的解決辦法是設置一個標誌,要注意的是下載,並延長了WebBrowser控制的OnProgressChanged,設置該標誌爲真在那裏。

下面是代碼:

private bool _isInteractive; 
    public bool IsInteractive 
    { 
     set 
     { 
      _isInteractive = true; 
     } 
     get 
     { 
      Thread.Sleep(1000); 
      return _isInteractive; 
     } 
    } 

然後使用它是這樣的:

HtmlElement element = browser.GetOneElement 
browser.IsInteractive = false; 
element.InvokeMember("click"); 
if(browser.IsInteractive) 
{ 
    //do something 
} 
else 
{ 
    //do other thing 
} 

但我認爲這不是那麼好,甚至很爛。有什麼建議麼?

+0

幫助,幫助...... –

回答

1

怎麼樣WebBrowser.IsBusy財產?

+0

這裏是從源代碼註釋獲取指示System.Windows.Forms.WebBrowser控件當前是否加載一個新的文檔的值。我認爲它會首先下載數據然後加載文件,對吧?所以我們應該等一會兒再點擊一下,然後檢測IsBusy,應該等多久? –

+0

PS:加載完成後 –

+0

@ Yunfei.Xiao不,你不應該等待,而絕對不是你想的瀏覽器需要一個隨機量將被設置爲假。我不知道你準備完成什麼。你想檢測瀏覽器是否正在下載數據,對吧?那就是「加載一個新文件」,所以IsBusy將會是真的。 – CodeCaster

相關問題