Savoir si un webbrowser a bien navigué !

Résolu
Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008 - 18 juin 2008 à 20:21
 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.
A voir également:

27 réponses

cs_antho2005 Messages postés 150 Date d'inscription samedi 8 avril 2006 Statut Membre Dernière intervention 1 mai 2012 3
24 juin 2008 à 16:46
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
1
cs_antho2005 Messages postés 150 Date d'inscription samedi 8 avril 2006 Statut Membre Dernière intervention 1 mai 2012 3
18 juin 2008 à 21:11
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
0
Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008
19 juin 2008 à 12:33
Ok merci,
et si je veu le faire lors d'un clique sur un bouton ?
0
cs_antho2005 Messages postés 150 Date d'inscription samedi 8 avril 2006 Statut Membre Dernière intervention 1 mai 2012 3
20 juin 2008 à 20:27
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008
22 juin 2008 à 19:14
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.
0
cs_antho2005 Messages postés 150 Date d'inscription samedi 8 avril 2006 Statut Membre Dernière intervention 1 mai 2012 3
22 juin 2008 à 21:54
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
0
cs_antho2005 Messages postés 150 Date d'inscription samedi 8 avril 2006 Statut Membre Dernière intervention 1 mai 2012 3
22 juin 2008 à 21:56
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
0
Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008
22 juin 2008 à 23:09
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
0
cs_antho2005 Messages postés 150 Date d'inscription samedi 8 avril 2006 Statut Membre Dernière intervention 1 mai 2012 3
23 juin 2008 à 18:07
Je teste et je t'informe

Antho 25
------------------------------------
Rien n'empêche Melba
0
cs_antho2005 Messages postés 150 Date d'inscription samedi 8 avril 2006 Statut Membre Dernière intervention 1 mai 2012 3
23 juin 2008 à 18:45
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
0
Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008
23 juin 2008 à 21:37
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 ?
0
cs_antho2005 Messages postés 150 Date d'inscription samedi 8 avril 2006 Statut Membre Dernière intervention 1 mai 2012 3
23 juin 2008 à 21:43
Arf ...
Je peux avoir ta page pour que je puisse faire des tests chez moi

Antho 25
------------------------------------
Rien n'empêche Melba
0
Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008
23 juin 2008 à 21:45
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...
0
Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008
23 juin 2008 à 21:58
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.
0
cs_antho2005 Messages postés 150 Date d'inscription samedi 8 avril 2006 Statut Membre Dernière intervention 1 mai 2012 3
23 juin 2008 à 22:23
Oui, je veux bien, merci

Antho 25
------------------------------------
Rien n'empêche Melba
0
Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008
23 juin 2008 à 22:48
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 ?
0
Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008
24 juin 2008 à 07:07
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 !
0
Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008
24 juin 2008 à 07:45
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 !
0
cs_antho2005 Messages postés 150 Date d'inscription samedi 8 avril 2006 Statut Membre Dernière intervention 1 mai 2012 3
24 juin 2008 à 13:46
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
0
cs_antho2005 Messages postés 150 Date d'inscription samedi 8 avril 2006 Statut Membre Dernière intervention 1 mai 2012 3
24 juin 2008 à 13:47
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
0
Rejoignez-nous