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");
                }
            }

そして、「expand-chain no-tracks」クラスですべての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

0

続行する前に、「browser」が null でない場合に条件チェッカーを追加してみてください。イベントは後で戻ってきて、「ブラウザ」が完全に初期化されると思います。

        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 に答える