2010-10-19 9 views
1

Je travaille sur un programme de vb.net, je veux cliquer sur un lien hypertexte sur une page, la source ressemble à ceci:Vb.net cliquez sur le lien en recherchant String!

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

Je veux vérifier tous les jours aussi!

J'ai essayé de cliquer avec les méthodes suivantes (les deux ne pouvaient pas cliquer sur le lien!):

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 

et j'ai essayé ce code aussi:

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

Toute aide serait appréciée ! Merci!

+0

Est-ce une application Forms ou une application ASP .NET? –

+0

Il est formulaires app .net – Beho86

Répondre

0

J'ai trouvé que le meilleur moyen de cliquer sur des liens dans un WebBrowser est d'utiliser javascript. Essayez quelque chose comme ceci:

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

Vous devrez réécrire votre code ci-dessus en javascript, mais c'est un morceau de gâteau. Vous pouvez tester votre javascript en le copiant-collant directement dans la barre d'adresse du navigateur. C'est aussi un moyen fiable de remplir des formulaires.

Avertissements:

  • Remarquez comment le travail que je veux faire est enveloppé dans une fonction. Ceci est nécessaire si vous voulez que le javascript fasse plusieurs déclarations. Envelopper dans une fonction, puis invoquer la fonction.
  • Vous ne pouvez pas accéder à une URL de plus de 500 caractères. (La limite n'est pas exactement 512 mais elle est proche.) Il n'y a pas d'avertissement non plus, alors gardez cela à l'esprit.
  • Assurez-vous d'attendre que la page soit chargée. Le ReadyState = Complete et IsBusy = False.
  • Cliquer sur comme ceci ne génère pas toujours les événements habituels que vous obtenez lorsque vous cliquez sur un lien.
  • "% 20" est un hexagone pour l'espace. Je ne me souviens pas si cela était strictement nécessaire dans mon code. Essayez les deux façons.
+0

J'aime l'idée javascript, mais je veux rechercher la chaîne de date, de sorte qu'il ne cliquera pas sur le mauvais lien. Que faire si je veux cliquer sur le premier lien 4 qui contient "id: 333", puis-je faire cela! – Beho86

+0

Écrire une boucle en javascript, quelque chose comme pour (var e dans document.getElementsByTagName ("a")) {if (e.getAttribute ("href"). Test ("id: 333")) e.click(); } Plus ou moins. Fondamentalement, vous convertissez votre code de VB.Net en javascript. – Eyal