我的应用程序有一项功能,旨在检查是否在URL中打开了一个带有特定字符串的Internet Explorer选项卡,如果找到,则从该页面上的特定元素中删除innerText值。
以下代码基于适用于我的应用程序的另一部分的代码,其中数据包含在iFrame中包含的元素中,但是在所讨论的特征中不是这种情况(即,不涉及iFrame)。此代码抛出一个未设置为对象实例的' Object引用。'尝试显示所请求元素的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标签中的特定网址后,无法找到如何使用它来搜索元素(并提取其值)的示例。