我的代码是:
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,原因是“对象引用未设置为对象的istance”。
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);
}
答案 0 :(得分:1)
点击此链接,可能会对您有所帮助:http://www.codeproject.com/Articles/50544/Using-the-WebBrowser-Control-in-ASP-NET 我有同样的问题,但我正在使用ASP.NET应用程序。
编辑:Atribute“类”很特别。请改为使用“className”。
答案 1 :(得分: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");
}
}
}
}