2011-11-03 14 views
2

我試圖點擊使用該行的鏈接:如何測試頁面上元素的存在?

webBrowser1.Document.GetElementsByTagName("a")[i].InvokeMember("click"); 

但是,當元素不存在在頁面上它給我的錯誤Value of '0' is not valid for 'index'

我第一次嘗試測試元素的存在:

if (webBrowser1.Document.GetElementsByTagName("a") != null) {...} 

但這似乎並沒有工作。

如何檢查元素是否存在?

+0

它是編譯錯誤還是運行時錯誤(異常)? – Steven

+0

這是什麼'webBrowser1.DocumentCompleted - = new WebBrowserDocumentCompletedEventHandler(download_handler); '行嗎? – KevinDTimm

+0

一旦工作完成,您要求的行刪除處理程序。這種處理程序不會被多次添加,導致程序多次執行相同的操作。 –

回答

2

顯然webBrowser1.Document.GetElementsByTagName("a")產生一個集合。

您的第二個樣本測試null但這是不同的。

使用調試器看到webBrowser1.Document.GetElementsByTagName("a").Count

1

爲什麼不使用...

foreach (HtmlElement elem in elemColl) { } 

和千電子伏該行 - =刪除事件處理程序

+0

GetElelemtsByTageName返回一個可枚舉的HtmlElements集合,而不是使用循環,你可能會爲每個循環使用它。 so foreach(webBrowser1.Document.GetElementsByTagName(「a」)中的HtmlElement ele) – BadWolf

0

肯定有集合中的任何元素?

當你調用

webBrowser1.Document.GetElementsByTagName("a") 

你回來的集合 - 它可能有1,2,100 ...在它0元素。該集合可能是空的。你可以調用.Count()並看看。

相關問題