Marneus73
Messages postés344Date d'inscriptionmercredi 24 janvier 2007StatutMembreDernière intervention27 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.
cs_antho2005
Messages postés150Date d'inscriptionsamedi 8 avril 2006StatutMembreDernière intervention 1 mai 20123 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
cs_antho2005
Messages postés150Date d'inscriptionsamedi 8 avril 2006StatutMembreDernière intervention 1 mai 20123 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
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 ?
Marneus73
Messages postés344Date d'inscriptionmercredi 24 janvier 2007StatutMembreDernière intervention27 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
cs_antho2005
Messages postés150Date d'inscriptionsamedi 8 avril 2006StatutMembreDernière intervention 1 mai 20123 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
Marneus73
Messages postés344Date d'inscriptionmercredi 24 janvier 2007StatutMembreDernière intervention27 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
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
Marneus73
Messages postés344Date d'inscriptionmercredi 24 janvier 2007StatutMembreDernière intervention27 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 ?
Marneus73
Messages postés344Date d'inscriptionmercredi 24 janvier 2007StatutMembreDernière intervention27 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.
Marneus73
Messages postés344Date d'inscriptionmercredi 24 janvier 2007StatutMembreDernière intervention27 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 ?
Marneus73
Messages postés344Date d'inscriptionmercredi 24 janvier 2007StatutMembreDernière intervention27 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 !
Marneus73
Messages postés344Date d'inscriptionmercredi 24 janvier 2007StatutMembreDernière intervention27 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 !