Forum Clubic

VB attendre chargement page webbrowser

Bonjour,
je suis sur VB et je cherche un code simple qui me permette d’attendre la fin du chargement de la page d’un webbrowser pour ensuite effectuer la suite du programme. J’aimerais en effet lancer une page web fixe, attendre la fin de chargement de la page, PUIS remplir des cases de saisie à l’aide de la commance sendkeys etc mais le probleme est cette fameuse attente qui ne marche pas :

  • Sans attente les commandes sendkeys se font dans le vide
  • j’ai essayé sleep mais pdt ce temps la page ne se charge pas
  • j’ai essayé l’evenement “documentcompleted” mais il n’a pas marché
    Voila, merci de m’aider :slight_smile:

Je suis sur Windows XP

Si le documentcompleted n’a pas marché c’est que tu à un problème car moi si je fait par exemple:

BUTTON1_click(byval …

webbrowser1.navigate(“www.facebook.com”)

WEBBROWSER1_DOCUMENTCOMPLETED

webbrowser1.document.getelementbyid(“id_désirée”).setattribute(“value”, textbox1.text) ’ Attribue la valeur “1” qu’il y à dans mon textbox1 :slight_smile:
webbrowser1.document.getelementbyid(“id_désirée”).setattribute(“value”, textbox2.text) ’ Attribue la valeur “2” qu’il y à dans mon textbox2 :slight_smile:

Et bien, cela charche et me met ensuite les commandes :wink:

Cordialement,

Merci mais la ligne WEBBROWSER1_DOCUMENTCOMPLETED ne marche pas alors il faut que je fasse comme la msdn.microsoft.com… ?

Et aussi, je suis novice là dedans mais à quoi sert webbrowser1.document.getelementbyid(“id_désirée”).setattribute(“value”, textbox1.text) et que represente “id désiré” ?

Voila merci de m’éclairer :slight_smile:

Si ton document completed ne marche pas, reinstalle vb parceque moi je n’ai pas eu à faire ce que tu dit ^^

Sinon, webbrowser1.document.getelementbyid(“id_désirée”).setattribute(“value”, textbox1.text)

Cela veut dire en francais, on obtient un élément par sont ID html par exemple, l’ID que je cherche est id_desirée et je lui attribue une valeur qui est textbox1.text

Cordialement,

alors voila je fais ca :
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
WebBrowser1.Navigate(“www.google.fr”)
WEBBROWSER1_DOCUMENTCOMPLETED()
’ MON CODE
End Sub

mais voila cette ligne WEBBROWSER1_DOCUMENTCOMPLETED() ne marche pas car “WEBBROWSER1_DOCUMENTCOMPLETED n’est pas déclaré”
Peut etre que parce que je ne suis pas sur VB.NET ce code ne marche pas chez moi.

En effet j’ai regardé, cette technique ne marche qu’une seule fois :o

En fait il faudrais donc réinitialiser le webbrowser :wink:

Quelle serait donc la solution à mon problème ?

Bah, j’esssaye de trouver ^^

Regarde la MSDN du webbrowser

Le problème revient donc à son point de départ puisque ce que j’ai trouvé avant de venir poster ici est soit la commande sleep soit WEBBROWSER1_DOCUMENTCOMPLETED ^^
Merci quand même et si tu finis par trouver n’hésite pas à me le dire, je continue à suivre ce sujet :wink:

et si tu combines sleep() avec doevents() ?

aurais-tu un exemple stp

non, je n’ai pas d’exemple tout prêt sous la main.
Et sur ce sujet précis je n’en aurais pas qui datent de moins de 15 ans donc je préfère éviter, les basic ont évolué depuis …

L’idée, c’est de faire un “sleep” relativement court puisqu’il est bloquant, et de le faire boucler sur lui-même jusqu’à ce que tu atteignes le délai qui t’intéresse. Mais dans ta boucle, tu inclus aussi un “doevents” pour que le reste du programme reprenne la main à chaque passage.

en gros :
while timer < t
sleep(50) (ou sleep 50 ?)
doevents
wend

Merci beaucoup je te dirai si cela a marché lorsque je pourrais le tester (dans plus d’une semaine)

la ligne doevents ne marche pas, il faut que je rajoute quelque chose ?

Comment ça ça ne marche pas ?
tu as un message d’erreur ?
ça freeze ?
c’est sans effet ?

voila ce que ca donne exactement : [Photo supprimée]

Là tu donnes ce que tu as écrit, mais tu ne réponds pas à la question.
Ca provoque quoi comme type d’erreur ?

Mais en lisant ton bout de code, je pense savoir d’où ça vient : tu utilises quoi comme VB ?
Parceque doevents n’existe pas en en tant que tel vb.net.
Un petit tour sur Google te donnera les différentes solutions pour récupérer la fonctionnalité.

j’utilise visual studio 2010
alors pour les codes d’erreur :
timer est un type et ne peut pas etre utilisé en tant qu’expression
t n’est pas déclaré
doevents n’est pas déclaré

j’ai trouvé ca :
'Declaration
Public Shared Sub DoEvents
'Usage
Application.DoEvents
end sub

mais cela fait une erreur dans le while

Je n’ai jamais eu l’occasion d’utiliser le VB de Visual studio donc je ne peux pas t’aider beaucoup
Mais il semble que les conseils donnés pour ta situation sont d’utiliser un thread séparé

qu’est ce qu’un thread séparé ?