2010-10-19 80 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