2012-02-07 23 views
0

我試圖從網站上下載信息,並且在漫長而勞累的旅程中打開(又一個)磚牆以獲得開發成果。WebBrowser控件編程文檔頁面中的選項卡查詢

我有一個使用WebBrowser控件登錄到網站程序 - 一個有效的用戶名和密碼 - therby讓我建立它一個合法的連接,並從中檢索信息(我自己)。

從登錄後提交給我的初始頁面,我可以用WebBrowser.Document.GetElementsByTagName("A")WebBrowser.Document.GetElementById("Some Id")等工作我的網站周圍的道路,並處理所有DocumentCompleted事件返回,直到......我在出現一個頁面到達在其中嵌入一個TabControl

我需要能夠選擇此控件的中間選項卡,並檢索它所包含的信息。當我「正常」訪問這些信息時(例如,從IE瀏覽器而不是從我的程序)我可以點擊三個標籤中的每一個,並且適時地顯示信息 - 所以它在那裏,很誘人......但是我可以從這些標籤我的計劃?我覺得它應該是可能的,但我不明白我該怎麼做。

的問題表現,因爲當我在處理其擁有的選項卡在裏面我的代碼的網頁看起來是這樣的:

static void wb_TabPage(object sender, WebBrowserDocumentCompletedEventArgs e) 
{ 
    WebBrowser wb = (WebBrowser)sender; 
    HtmlElement element; 

    element = wb.Document.GetElementById("Bills"); // Find the "Bills" tab 
    element.InvokeMember("Click");     // Click the "Bills" tab 

    // Unhook THIS routine from DocumentCompleted delivery 
    wb.DocumentCompleted -= new WebBrowserDocumentCompletedEventHandler(wb_TabPage); 
    // Hook up this routine - for the next 'Document Completed' delivery - which never arrives! 
    wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_Bills); 

    return; 
} 

而這就是問題所在 - 沒有更多的文件是不斷「已完成」對我來說,進程,即使在InvokeMember(「Click」)之後。世界各地的人都認爲Tabs正在更新,並且沒有任何刷新(Refresh)或導航或事件處理的數量會允許我到達某個地點或從中獲取數據的位置

有沒有人知道我如何做到這一點?有誰知道如何操縱WebBrowser中的Tabs?如果你提前致謝...

+0

在正常使用情況下,點擊標籤頁是否重新加載頁面?如果不是在單擊選項卡時加載到背景中的數據,還是在最初加載頁面時出現在背景中? – 2012-02-07 16:40:02

+0

是的,當我訪問網站 - 說IE瀏覽器 - 並找到頁面並單擊標籤,數據更改(每個標籤顯示不同的數據btw)。我點擊了每個標籤頁時查看了HTML源代碼,它們都是不同的,因此數據在每個Tab點擊的背景中被刷新,當頁面初始加載時,它不是全部 – 2012-02-07 17:00:39

回答

1

嘗試在你的頁面上使用findcontrol功能。您可能需要鑽取選項卡控件本身才能找到選項卡頁面及其中包含的控件。

相關問題