Savoir si un webbrowser a bien navigué ! [Résolu]

Marneus73 344 Messages postés mercredi 24 janvier 2007Date d'inscription 27 octobre 2008 Dernière intervention - 18 juin 2008 à 20:21 - Dernière réponse :  vincent3004
- 4 oct. 2010 à 18:43
Bonjour à tous, je voudrais savoir comment faire pour savoir si un contrôle webbrowser a bien navigué.
Par exemple, si je met :
WebBrowser1.navigate(www.google.fr)
Comment faire pour savoir si la page est bien ouverte.?
Merci d'avance.
Afficher la suite 

Votre réponse

27 réponses

Meilleure réponse
cs_antho2005 153 Messages postés samedi 8 avril 2006Date d'inscription 1 mai 2012 Dernière intervention - 24 juin 2008 à 16:46
1
Merci
Eurêka !!
Voilà la solution:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click              WebBrowser1.Navigate("http://www.vbfrance.com/infomsg_SAVOIR-SI-WEBBROWSER-BIEN-NAVIGUE_1156204.aspx?p=3")
        Do While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
            Threading.Thread.Sleep(1)
            Application.DoEvents()
        Loop
        'Dim debut As Long = Environment.TickCount
        'Do While (Environment.TickCount - debut) / 1000 < 10
        '    System.Threading.Thread.Sleep(1)
        '    Application.DoEvents()
        'Loop
        MsgBox("Chargement terminé !")
        'Suite des instructions ...
    End Sub

A+

Antho 25
------------------------------------
Rien n'empêche Melba

Merci cs_antho2005 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de cs_antho2005
cs_antho2005 153 Messages postés samedi 8 avril 2006Date d'inscription 1 mai 2012 Dernière intervention - 18 juin 2008 à 21:11
0
Merci
Tu vas dans l'événement :

Private
Sub WebBrowser1_DocumentCompleted(
ByVal sender
As System.Object,
ByVal e
As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs)
Handles WebBrowser1.DocumentCompleted
   MsgBox(
"Le WebBrowser a bien navigué à la page :" + vbCrLf + e.Url.AbsoluteUri)

End
Sub

Antho 25
------------------------------------
Rien n'empêche Melba
Commenter la réponse de cs_antho2005
Marneus73 344 Messages postés mercredi 24 janvier 2007Date d'inscription 27 octobre 2008 Dernière intervention - 19 juin 2008 à 12:33
0
Merci
Ok merci,
et si je veu le faire lors d'un clique sur un bouton ?
Commenter la réponse de Marneus73
cs_antho2005 153 Messages postés samedi 8 avril 2006Date d'inscription 1 mai 2012 Dernière intervention - 20 juin 2008 à 20:27
0
Merci
Alors:

Private Sub Command1_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles Command1.Click
  
WebBrowser1.navigate("http://www.google.fr")
    'Ou WebBrowser1.GoHome etc.

End Sub
Private Sub WebBrowser1_DocumentCompleted(
ByVal sender
As System.Object,
ByVal e
As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs)
Handles WebBrowser1.DocumentCompleted
   MsgBox (
"Le WebBrowser a bien navigué à la page :" + vbCrLf + e.Url.AbsoluteUri)

End Sub

Voilà ^^
Si c'est pas ça que tu voulais dire (honte à moi -_-'), dis-le moi ?

Antho 25
------------------------------------
Rien n'empêche Melba
Commenter la réponse de cs_antho2005
Marneus73 344 Messages postés mercredi 24 janvier 2007Date d'inscription 27 octobre 2008 Dernière intervention - 22 juin 2008 à 19:14
0
Merci
Re bonjour,
J'ai encore un pb:
Dans mon appli j'ai une liste de liens. Lors d'un clique sur un bouton de mon programme les liens sont lancés les uns après les autres (boucle for) dans un webbrowser en marquant une pause de 10 secondes entre chacun des liens. Avant de lancer la minuterie de 10 secondes je vérifie que la page est complétement chargée  grâce à ta méthode.
Le souci est que le code pour le temps d'attente est dans la fonction que tu m'a donné :

Private Sub WebBrowser1_DocumentCompleted(
ByVal sender
As System.Object,
ByVal e
As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs)
Handles WebBrowser1.DocumentCompleted
   MsgBox (
"Le WebBrowser a bien navigué à la page :" + vbCrLf + e.Url.AbsoluteUri)

End Sub

Toutes les pages se lancent les unes après le sautres sans aucun temps d'attente puisque le code est dans la fonction ! Et si je n'utilise pas ton code, parfois le chargement de la page peut être un peu long et les dix secondes coupent la page avant la fin.

Il n'existe pas une technique pour vérifier la navigation avec une fonction conditionelle ? Du genre:

IfWebBrowser1.DocumentCompleted 
Then
'mes instruction
End if

Merci d'avance.
Commenter la réponse de Marneus73
cs_antho2005 153 Messages postés samedi 8 avril 2006Date d'inscription 1 mai 2012 Dernière intervention - 22 juin 2008 à 21:54
0
Merci
Salut ,
Alors, voila ce que tu peux faire (je l'ai fais vite fait avec un bouton, il faut que tu l'adapte avec ton timer et tes parametres):

Private
Sub Button1_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles Button1.Click
   
If WebBrowser1.Url.AbsoluteUri = "http://www.vbfrance.com/"

Then
      WebBrowser1.GoHome()
   
Else
      WebBrowser1.Navigate(
"http://www.vbfrance.com/")
   
End
If
   Do
      Application.DoEvents()
   
Loop
While WebBrowser1.StatusText =
""
   MsgBox(
"Page chargée")

End
Sub

Private Sub Form1_Load(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles
MyBase.Load
   WebBrowser1.GoHome()

End Sub

En esperant que c'est ce que tu cherchais à faire
A+

Antho 25
------------------------------------
Rien n'empêche Melba
Commenter la réponse de cs_antho2005
cs_antho2005 153 Messages postés samedi 8 avril 2006Date d'inscription 1 mai 2012 Dernière intervention - 22 juin 2008 à 21:56
0
Merci
Arf, les espaces bugs  ...
bon, alors ça fait:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
   If WebBrowser1.Url.AbsoluteUri = "http://www.vbfrance.com/"
Then
      WebBrowser1.GoHome()
   
Else
      WebBrowser1.Navigate("http://www.vbfrance.com/")
   End
If
   Do
      Application.DoEvents()
   Loop While WebBrowser1.StatusText =
""
   MsgBox("Page chargée")
End
Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
   WebBrowser1.GoHome()
End Sub

Antho 25
------------------------------------
Rien n'empêche Melba
Commenter la réponse de cs_antho2005
Marneus73 344 Messages postés mercredi 24 janvier 2007Date d'inscription 27 octobre 2008 Dernière intervention - 22 juin 2008 à 23:09
0
Merci
En ce qui concerne --> WebBrowser1.StatusText =
""

Il manque toujours des éléments sur la page ! J'ai des objects graphiques et en php qui ne sont pas affichés alors que j'ai la messagebox qui me dit que la page est chargée.
Il n'y a pas un moyen de vérifier si tous les éléments sont affichés comme sur IE ? (la barre en bas à droite qui dit "3 éléments restants" par exemple)
Merci
Commenter la réponse de Marneus73
cs_antho2005 153 Messages postés samedi 8 avril 2006Date d'inscription 1 mai 2012 Dernière intervention - 23 juin 2008 à 18:07
0
Merci
Je teste et je t'informe

Antho 25
------------------------------------
Rien n'empêche Melba
Commenter la réponse de cs_antho2005
cs_antho2005 153 Messages postés samedi 8 avril 2006Date d'inscription 1 mai 2012 Dernière intervention - 23 juin 2008 à 18:45
0
Merci
Alors, voila vite fait ce que ça peut donner:

    Dim DoitAllerA As Integer = 0
    Dim ListeAddresses As String() = {" http://www.google.fr/ ", "http://www.vbfrance.com/", "http://www.codes-sources.com/"}

    Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        If e.Url.AbsoluteUri = ListeAddresses(DoitAllerA) Then
            Debug.Print("Bien navigué à: " + ListeAddresses(DoitAllerA))
            Dim debut As Long = Environment.TickCount
            Do While (Environment.TickCount - debut) / 1000 < 10
                System.Threading.Thread.Sleep(1)
                Application.DoEvents()
            Loop
            DoitAllerA += 1
            If DoitAllerA = ListeAddresses.Length Then
                MsgBox("Fin de la multiple navigation")
                Exit Sub
            End If
            WebBrowser1.Navigate(ListeAddresses(DoitAllerA))
        End If
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        DoitAllerA = 0
        WebBrowser1.Navigate(ListeAddresses(DoitAllerA))
    End Sub

Normalement, ça devrait aller ...
A+

Antho 25
------------------------------------
Rien n'empêche Melba
Commenter la réponse de cs_antho2005
Marneus73 344 Messages postés mercredi 24 janvier 2007Date d'inscription 27 octobre 2008 Dernière intervention - 23 juin 2008 à 21:37
0
Merci
J'ai essayé ton code,
mais j'ai toujours cette saleté de truc en php qui ne s'affiche pas alors que le compteur se lance !!!
Comment faire pour savoir si ABSOLUMENT tous les contrôles de la page sont affichés ?
Commenter la réponse de Marneus73
cs_antho2005 153 Messages postés samedi 8 avril 2006Date d'inscription 1 mai 2012 Dernière intervention - 23 juin 2008 à 21:43
0
Merci
Arf ...
Je peux avoir ta page pour que je puisse faire des tests chez moi

Antho 25
------------------------------------
Rien n'empêche Melba
Commenter la réponse de cs_antho2005
Marneus73 344 Messages postés mercredi 24 janvier 2007Date d'inscription 27 octobre 2008 Dernière intervention - 23 juin 2008 à 21:45
0
Merci
Je viens d'essayer avec la propriété "IsBusy" mais ça ne marche pas.
Sinon, j'ai trouvé ça:
http://msdn.microsoft.com/fr-fr/library/system.windows.forms.webbrowser_properties(VS.80).aspx
Mais je ne sais pas trop quelle propriété utiliser...
Commenter la réponse de Marneus73
Marneus73 344 Messages postés mercredi 24 janvier 2007Date d'inscription 27 octobre 2008 Dernière intervention - 23 juin 2008 à 21:58
0
Merci
Je t'aurais bien envoyé la page, mais c'est l'aide pour un autre programme, et je ne l'ai pas encore mis en ligne, je vais essayer de te l'envoyer avec mon code vb pour que tu vois.
Commenter la réponse de Marneus73
cs_antho2005 153 Messages postés samedi 8 avril 2006Date d'inscription 1 mai 2012 Dernière intervention - 23 juin 2008 à 22:23
0
Merci
Oui, je veux bien, merci

Antho 25
------------------------------------
Rien n'empêche Melba
Commenter la réponse de cs_antho2005
Marneus73 344 Messages postés mercredi 24 janvier 2007Date d'inscription 27 octobre 2008 Dernière intervention - 23 juin 2008 à 22:48
0
Merci
Et sinon, on ne pourrait pas jouer sur le téléchargement de données ? Je suis tombé sur une discussion sur ce forum ou une personne avait un pb similaire, et ils avaient pensé au fait que le webbrowser télécharge les données relatives à la page.
Il n'y a pas un moyen de savoir quand le webbrowser a fini de télécharger les données du serveur ?
Commenter la réponse de Marneus73
Marneus73 344 Messages postés mercredi 24 janvier 2007Date d'inscription 27 octobre 2008 Dernière intervention - 24 juin 2008 à 07:07
0
Merci
J'ai essayé avec l'URL du forum, et j'ai le même problème. J'ai la messageBox "Le navigateur a bien navigué à ..." avant que le site soit affiché, pour te dire à l'instant ou le message apparait, j'ai juste la bannière du haut !
Commenter la réponse de Marneus73
Marneus73 344 Messages postés mercredi 24 janvier 2007Date d'inscription 27 octobre 2008 Dernière intervention - 24 juin 2008 à 07:45
0
Merci
Je viens de comprendre mon pb en fait, il y a plusieurs messageBox qui s'affichent car une page est constituée de plusieurs URL, moi je croiyais que le programme affichait le message uniquement quant toutes les URL avaient été lues ! Je n'attendais donc pas assez longtemps pour voir la seconde !!!
Mais bien sur, un problème se régle, et un autre apparait !!!
Dans l'événement document complete, j'ai une variable boolean qui passe à vrai quand toutes les pages sont chargées. Et dans mon code principal, j'ai une boucle qui attends que cette variable passe à true pour continuer.
Lorsque j'utilise des messageBox, tout se passe bien mais si j'utilise un lable pour afficher : "Le navigateur a bien navigué à la page ..." (Dans Document Complete) même pb qu'au début, il peut y avoir plusieurs valeurs (Donc pluieurs URL) mais le programme s'en fout et passe ma variable à true ! Alors que pour les MessageBox, il attends bien la dernière !
Commenter la réponse de Marneus73
cs_antho2005 153 Messages postés samedi 8 avril 2006Date d'inscription 1 mai 2012 Dernière intervention - 24 juin 2008 à 13:46
0
Merci
J'ai une petite question ...
Est-ce que la page affichée est toujours la même ?

A+

Antho 25
------------------------------------
Rien n'empêche Melba
Commenter la réponse de cs_antho2005
cs_antho2005 153 Messages postés samedi 8 avril 2006Date d'inscription 1 mai 2012 Dernière intervention - 24 juin 2008 à 13:47
0
Merci
J'ai oublié de dire dans le message précédent qu'il faudrait peut-être chercher du côté de l'événement ProgressChanged ...

Antho 25
------------------------------------
Rien n'empêche Melba
Commenter la réponse de cs_antho2005

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.