2017-06-14 71 views
1

我的應用程序有一個功能,用於檢查是否有一個Internet Explorer選項卡在URL中用特定字符串打開,如果找到,則從特定元素中刪除innerText值該頁面。用C#打開IE瀏覽器標籤中的數據#

以下代碼基於代碼,該代碼適用於我的應用程序的另一部分,其中數據包含在iFrame中包含的元素中,但不是所涉及的功能(即所涉及的不包含iFrame)中的情況。這段代碼拋出一個'未設置對象實例的對象引用'。嘗試顯示請求元素的innerText值時發生異常,可能是因爲找不到該元素。

SHDocVw.ShellWindows shellWindows = new ShellWindows(); 

     foreach (SHDocVw.WebBrowser ie in shellWindows) 
     { 
      if (ie.LocationURL.ToString().IndexOf("MyPage.aspx") != -1) 
      { 

       mshtml.HTMLDocument currentTab = ie.Document as mshtml.HTMLDocument; 

//The below line throws an 'Object reference not set to an instance of an object.' exception. 
MessageBox.Show(currentTab.getElementById("lblFoo").innerText.ToString()); 

break; 
} 
} 

我在做什麼錯?此外,我是新來的網絡抓取,所以我知道這可能不是最新的方式去做這件事。我知道HtmlAgilityPack,但是我一直無法找到如何使用它來搜索元素(並提取它們的值)後,搜索打開的IE標籤中的特定網址的例子。

+0

很可能是因爲currentTab.getElementById(「lblFoo」)沒有返回對象。首先檢查存在。 – Quintium

+0

感謝您的回覆。 「lblFoo」肯定存在於我定位的標籤的源HTML中。 –

回答