vb6, mshtml , bouton click

Le
bahn po
Hello,

Je ne trouve pas la solution à un problème: j'essaye d'automatiser le
remplissage d'une formulaire sur une page web et pour valider il faut
cliquer sur un bouton/image. J'arrive à remplir le zone de texte
(input) à cocher des cases, mais pas moyen de trouver comment envoyer
l'info pour cliquer.

Voici un bout du code de la page

<div id="erase_button_text">Annuler</div><div
id="validate_button_text">Enregistrer


C'est donc "validate_button_text" qui l'interesse et c'est ce dernier
qui valide la saisie.


Pour l'instant, pour cocher une case j'utilise ça

Private Sub Command3_Click()
Dim objHtmlDocument As mshtml.IHTMLDocument2
'Fait référence au document du WebBrowser
Dim objbaliseInput As mshtml.IHTMLInputElement
Set objHtmlDocument = wb.Document

Set objbalises = objHtmlDocument.All.tags("input")


For Each objbaliseInput In objbalises



If objbaliseInput.Name = "frm_wlanenabled" Then

wb.SetFocus
objbaliseInput.Select
objbaliseInput.Value = "1"


SendKeys " ", True
End If


Next objbaliseInput


Si quelqu'un a une idée, merci.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
parci
Le #17725981
bahn po a écrit :
Hello,

Je ne trouve pas la solution à un problème: j'essaye d'automatiser le
remplissage d'une formulaire sur une page web et pour valider il faut
cliquer sur un bouton/image. J'arrive à remplir le zone de texte (input)
à cocher des cases, mais pas moyen de trouver comment envoyer l'info
pour cliquer.

Voici un bout du code de la page

<div id="erase_button_text">Annuler</div><div
id="validate_button_text">Enregistrer


C'est donc "validate_button_text" qui l'interesse et c'est ce dernier
qui valide la saisie.


Pour l'instant, pour cocher une case j'utilise ça

Private Sub Command3_Click()
Dim objHtmlDocument As mshtml.IHTMLDocument2
'Fait référence au document du WebBrowser
Dim objbaliseInput As mshtml.IHTMLInputElement
Set objHtmlDocument = wb.Document

Set objbalises = objHtmlDocument.All.tags("input")


For Each objbaliseInput In objbalises



If objbaliseInput.Name = "frm_wlanenabled" Then

wb.SetFocus
objbaliseInput.Select
objbaliseInput.Value = "1"


SendKeys " ", True
End If


Next objbaliseInput


Si quelqu'un a une idée, merci.



Tu retrouves le formulaire dans le document (collection Forms) et
retourne les données avec la méthode submit du formulaire en question.
bahn po
Le #17725971
parci avait prétendu :


Tu retrouves le formulaire dans le document (collection Forms) et retourne
les données avec la méthode submit du formulaire en question.



Je vais tenter mais pour une raison inconnu je n'arrete pas d'avoir des
erreurs d'execution de type "-1 (ffffffe) " avec visual basic lorsque
je lance le webbrowser.navigate "url.....". Du coup ça plante tout le
temps :(

Galère.
bahn po
Le #17726121
parci avait écrit le 02/11/2008 :


Tu retrouves le formulaire dans le document (collection Forms) et retourne
les données avec la méthode submit du formulaire en question.



Est-ce que je suis obligé de charger la page avec webbrowser ou est-il
possible de la charger en mémoire et exécuter des commandes ?
Martin.boucher
Le #17734561
Bonjour,

Pour soumettre un formulaire sur le clique d'un bouton, voici ce que
je fait dans un de mes projets.


Private WithEvents HTMLButtonElement As
MSHTML.HTMLButtonElement

'Soumettre
For Each objbaliseInput In objbalises

If UCase(objbaliseInput.Name) = UCase("cmdSubmit") Then
Set HTMLButtonElement = objbaliseInput
HTMLButtonElement.Click
End If

Next objbaliseInput


A+
Martin

On Sun, 02 Nov 2008 16:35:01 +0100, bahn po wrote:

Hello,

Je ne trouve pas la solution à un problème: j'essaye d'automatiser le
remplissage d'une formulaire sur une page web et pour valider il faut
cliquer sur un bouton/image. J'arrive à remplir le zone de texte
(input) à cocher des cases, mais pas moyen de trouver comment envoyer
l'info pour cliquer.

Voici un bout du code de la page

<div id="erase_button_text">Annuler</div><div
id="validate_button_text">Enregistrer


C'est donc "validate_button_text" qui l'interesse et c'est ce dernier
qui valide la saisie.


Pour l'instant, pour cocher une case j'utilise ça

Private Sub Command3_Click()
Dim objHtmlDocument As mshtml.IHTMLDocument2
'Fait référence au document du WebBrowser
Dim objbaliseInput As mshtml.IHTMLInputElement
Set objHtmlDocument = wb.Document

Set objbalises = objHtmlDocument.All.tags("input")


For Each objbaliseInput In objbalises



If objbaliseInput.Name = "frm_wlanenabled" Then

wb.SetFocus
objbaliseInput.Select
objbaliseInput.Value = "1"


SendKeys " ", True
End If


Next objbaliseInput


Si quelqu'un a une idée, merci.



bahn po
Le #17737661
Martin Boucher a émis l'idée suivante :
Bonjour,

Pour soumettre un formulaire sur le clique d'un bouton, voici ce que
je fait dans un de mes projets.


Private WithEvents HTMLButtonElement As
MSHTML.HTMLButtonElement

'Soumettre
For Each objbaliseInput In objbalises

If UCase(objbaliseInput.Name) = UCase("cmdSubmit") Then
Set HTMLButtonElement = objbaliseInput
HTMLButtonElement.Click
End If

Next objbaliseInput


A+
Martin




Merci beaucoup, je vais des essais des que j'en aurai fini avec des
erreurs -1 -2 -3 ou -4 avec webbrowser :(

A++
Martin.boucher
Le #17738611
C'est pas banal ces erreur là.

Est-ce que tu as les mêmes erreur quand tu tapes l'adresse dans ton
navigateur normal ?
Si tu veux, fournis nous l'URL, pour qu'on l'essai de notre côté.


On Mon, 03 Nov 2008 19:09:47 +0100, bahn po wrote:

Martin Boucher a émis l'idée suivante :
Bonjour,

Pour soumettre un formulaire sur le clique d'un bouton, voici ce que
je fait dans un de mes projets.


Private WithEvents HTMLButtonElement As
MSHTML.HTMLButtonElement

'Soumettre
For Each objbaliseInput In objbalises

If UCase(objbaliseInput.Name) = UCase("cmdSubmit") Then
Set HTMLButtonElement = objbaliseInput
HTMLButtonElement.Click
End If

Next objbaliseInput


A+
Martin




Merci beaucoup, je vais des essais des que j'en aurai fini avec des
erreurs -1 -2 -3 ou -4 avec webbrowser :(

A++



bahn po
Le #17738911
Il se trouve que Martin Boucher a formulé :
C'est pas banal ces erreur là.

Est-ce que tu as les mêmes erreur quand tu tapes l'adresse dans ton
navigateur normal ?
Si tu veux, fournis nous l'URL, pour qu'on l'essai de notre côté.



l'url de mon projet sur 192.168.1.1 qui est l'adresse de la livebox.
Hier j'ai pu bidouiller pendant des heures avec VB sans soucis.

Maintenant webbrowser merde à mort, même avec google.

Le code est minimaliste, c'est

Call WebBrowser1.Navigate("www.google.fr")

que j'appelle avec un bouton. Le plus fou, si je crée un nouveau projet
j'ai une erreur -1 après un click. Si je récupère un vieux projet avec
un webbrowser et que j'efface tous le code, ça marche mais après 5
click sur le bouton j'ai erreur -3 ou -5 (suivant le nombre de click
avant plantage). La dll de webbrowser est la même, les composants
aussi. Mais plus j'en enlève (d'un vieux projet) plus je m'approche de
l'erreur -x (ou x est variable suivant ce qui reste sur la feuille),
donc grosse galère :(

Je me demande si il y a un cache pour ce webbrowser, si oui est-il le
même que IE6 installé sur la machine ? Peut être un cookie ou un
certificat qui fait planter, mystère complet pour l'instant.
Vincent Guichard
Le #17743821
> Je me demande si il y a un cache pour ce webbrowser, si oui est-il le
même que IE6 installé sur la machine ? Peut être un cookie ou un
certificat qui fait planter, mystère complet pour l'instant.


Probablement, voire même IE5 ou IE4, vu l'age du composant. En tout cas
il réutilise le moteur de IE.

Vincent Guichard
bahn po
Le #17778321
Martin Boucher a écrit :
Bonjour,

Pour soumettre un formulaire sur le clique d'un bouton, voici ce que
je fait dans un de mes projets.


Private WithEvents HTMLButtonElement As
MSHTML.HTMLButtonElement

'Soumettre
For Each objbaliseInput In objbalises

If UCase(objbaliseInput.Name) = UCase("cmdSubmit") Then
Set HTMLButtonElement = objbaliseInput
HTMLButtonElement.Click
End If

Next objbaliseInput


A+
Martin




Bon j'ai re-installé XP sur le même DD et re-installé VB6, il
fonctionne donc farpaitement!

Donc, je valide le formulaire avec

Dim objbaliseInput As MSHTML.IHTMLInputElement

'

For Each objbaliseInput In objbalises
If objbaliseInput.Name = "frm_action" Then objbaliseInput.Form.submit
Next objbaliseInput

'
'

Question: Quelle(s) difference(s) entre IHTML et HTML ?

Merci!
Publicité
Poster une réponse
Anonyme