0

我的代码是:

 WebBrowser browser = new WebBrowser();
            browser.Navigate("http://myurl");
            var links = browser.Document.GetElementsByTagName("a");
            foreach (HtmlElement link in links)
            {
                if (link.GetAttribute("class") == "expand-chain no-tracks")
                {
                    MessageBox.Show("Click here");
                    link.InvokeMember("click");
                }
            }

我需要使用“扩展链无轨道”类获取所有 html 元素,然后我需要单击它。

我的问题是我总是得到一个 NullReferenceException 原因“对象引用未设置为对象的实例”。

html代码是:

<a class="expand-chain no-tracks" data-chain-id="ZYZ" href="#" style="display: none;">
<span>
Some text
</span>
</a>

请帮我!谢谢

编辑 我也尝试使用此代码,但它从不执行 browser_DocumentCompleted 函数

 public void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            WebBrowser browser = sender as WebBrowser;
            var links = browser.Document.GetElementsByTagName("a");

                foreach (HtmlElement link in links)
                {
                    if (link.GetAttribute("class") == "expand-chain no-tracks")
                    {
                        MessageBox.Show("Here");
                        link.InvokeMember("click");
                    }
                }
        }

        public void cazz()
        {
            WebBrowser browser = new WebBrowser();
            browser.Navigate("http://myurl");
            browser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(browser_DocumentCompleted);
        }
4

2 回答 2

1

检查此链接,可能对您有所帮助:http: //www.codeproject.com/Articles/50544/Using-the-WebBrowser-Control-in-ASP-NET 我遇到了同样的问题,但我使用的是 ASP.NET 应用程序.

编辑:属性“类”是特殊的。改用“className”。

于 2013-06-05T20:58:10.173 回答
0

在继续之前,当“浏览器”不为空时,您可以尝试添加条件检查器吗?我认为该事件稍后会回来,您的“浏览器”将被完全初始化。

        public void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            WebBrowser browser = sender as WebBrowser;

            if(browser.Document != null)
            {
                var links = browser.Document.GetElementsByTagName("a");

                foreach (HtmlElement link in links)
                {
                    if (link.GetAttribute("class") == "expand-chain no-tracks")
                    {
                        MessageBox.Show("Here");
                        link.InvokeMember("click");
                    }
                }
             }
        }
于 2013-05-28T09:29:54.053 回答