2010-10-19 77 views
1

我在vb.net程序的工作,我要點擊網頁上的超鏈接,來源是這樣的:Vb.net點擊鏈接查找字符串!

<a href="user_messages_view.php?id=23112">messages for Today, 2010-10-19 </a> 

我要每天檢查一下呢!

我試着用下面的方法點擊(兩者不能點擊鏈接!):

Dim theElementCollection As HtmlElementCollection 
    Dim ctrlIdentity As String 
    theElementCollection = WebBrowser1.Document.GetElementsByTagName("a") 
    For Each curElement As HtmlElement In theElementCollection 
    ctrlIdentity = curElement.GetAttribute("innerText").ToString 
    If ctrlIdentity = Today.Date.ToString(Today.Date.ToString("dd")) Then 
    curElement.InvokeMember("click") 
    End If 
    Next 

,我想這也代碼:

 If Me.WebBrowser1.Document.Links(i).InnerHtml.Contains(Today.Date.ToString("dd")) Then 
    Me.WebBrowser1.Document.Links(i).InvokeMember("Click") 
    End If 
    Next 

任何幫助,將不勝感激!謝謝!

+0

這是一個Forms應用程序或ASP .NET應用程序嗎? – 2010-10-19 16:52:38

+0

這是表單應用程序.net – Beho86 2010-10-19 17:41:32

回答

0

我發現點擊WebBrowser中鏈接的最佳方式是使用javascript。嘗試這樣的:

WebBrowser1.Navigate("javascript:function%20x(){document.getElementById('foo').click()}x()") 

你需要用JavaScript重寫上述代碼,但這是小菜一碟。您可以通過將其直接複製粘貼到瀏覽器的地址欄來測試您的JavaScript。這也是填寫表格的可靠方法。

注意事項:

  • 注意如何,我想要做的工作被包裹在一個函數。如果您希望JavaScript執行多個語句,則這是必需的。包裝在一個函數中,然後調用該函數。
  • 您無法導航到超過500個字符的URL。 (這個限制不完全是512,但它接近。)也沒有警告,所以記住它。
  • 確保您一直等到頁面加載完畢。 ReadyState = Complete和IsBusy = False。
  • 像這樣點擊並不總是生成您點擊鏈接時得到的常見事件。
  • 「%20」是十六進制的空格。我不記得這是否在我的代碼中是絕對必要的。嘗試兩種方式。
+0

我喜歡javascript的想法,但我想查找日期字符串,所以它不會點擊錯誤的鏈接。如果我想點擊讓我們說包含「id:333」的前4個鏈接,我能做到這一點! – Beho86 2010-10-20 16:23:20

+0

在javascript中編寫一個循環,類似於(document.getElementsByTagName(「a」)中的var e){if(e.getAttribute(「href」)。test(「id:333」))e.click(); } 或多或少。基本上你是從VB.Net轉換你的代碼到JavaScript。 – Eyal 2010-10-24 09:28:01