Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

vb6, mshtml , bouton click

9 réponses
Avatar
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.

9 réponses

Avatar
parci
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.
Avatar
bahn po
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.
Avatar
bahn po
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 ?
Avatar
Martin.boucher
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.



Avatar
bahn po
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++
Avatar
Martin.boucher
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++



Avatar
bahn po
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.
Avatar
Vincent Guichard
> 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
Avatar
bahn po
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!