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

VB .Net 2008 Express - Clic dans 1 Webbrowser

6 réponses
Avatar
Bonjour,

Dans le code source d'une page web, j'ai 2 boutons qui portent le même nom,
mais renvoient 2 valeurs différentes.

<input type="hidden" name="nom1" value="valeur1" />
<input type="submit" value="valeur2" />

<input type="hidden" name="nom1" value="valeur3" />
<input type="submit" value="valeur4" />

J'ai essayé sans succès de cliquer sur le 1er bouton :
WebBrowser1.Document.All("nom1").InvokeMember("click")

Ceci ne fonctionne pas non plus :

WebBrowser1.Document.All("nom1").SetAttribute("nom1", "valeur1")

WebBrowser1.Document.All("nom1").InvokeMember("click")

Et ceci provoque 1 erreur :

WebBrowser1.Document.All("nom1").All.Item(0).InvokeMember("click")

car WebBrowser1.Document.All("nom1").All.Count = 0


Comment cliquer le 1er bouton ?


Merci d'avance,
Stéphane

6 réponses

Avatar
Jérémy Jeanson
Bonjour Stéphane,

Tu ne vas surment pas être surpris si je te dis qu'il est déconseiller
d'utiliser ce genre d'approche (deux fois le même nom, ce n'est pas
forcément terrible). Mais si tu veux t'en sortir je pense que le
solution peut être de rechercher dans un premier temps le conteneur du
premier contrôle puis le conteneur du second. En utilisant par exemple
des conteneurs nommés de type div.

Notes au passage qu'il semble maintenant que la norme XHTML voudrait que
l'on utilise des Id et nom plus des Name (ce qui explique le chois d'Id
comme identifiant des contrôles serveur aspx)
--
Jérémy JEANSON
MCP
http://www.jjeanson.fr
Avatar
Merci Jérémy,

Petit soucis... C'est pas moi qui fait le code HTML (ou autre)...

J'ai également remarqué que le 1er bouton est encapsuler dans :
<form id="id1" action="url1" method="post">Et le 2e dans :
<form action="url1" method="post">Ce qui donne :<form id="id1" action="url1"
method="post"><input type="hidden" name="nom1" value="valeur1" /><input
type="submit" value="valeur2" /></form><form action="url1"
method="post"><input type="hidden" name="nom1" value="valeur3" /><input
type="submit" value="valeur4" /></form>Au total, il y a :2 forms : 1 avec
id="id1" et l'autre sans id, les 2 avec la même url en action et la même
méthode post.2 input de type hidden avec le même name "nom1" et 2 valeurs
différentes2 input de type submit sans nom et avec 2 valeurs différentes
Merci d'avance pour votre aide,Stéphane
"Jérémy Jeanson" a écrit dans le message de news:

Bonjour Stéphane,

Tu ne vas surment pas être surpris si je te dis qu'il est déconseiller
d'utiliser ce genre d'approche (deux fois le même nom, ce n'est pas
forcément terrible). Mais si tu veux t'en sortir je pense que le solution
peut être de rechercher dans un premier temps le conteneur du premier
contrôle puis le conteneur du second. En utilisant par exemple des
conteneurs nommés de type div.

Notes au passage qu'il semble maintenant que la norme XHTML voudrait que
l'on utilise des Id et nom plus des Name (ce qui explique le chois d'Id
comme identifiant des contrôles serveur aspx)
--
Jérémy JEANSON
MCP
http://www.jjeanson.fr


Avatar
Le mail est mal parti (peut être à cause des balises). Je le renvoie.
_____________________________________________________

Petit soucis... C'est pas moi qui fait le code HTML (ou autre)...

J'ai également remarqué que le 1er bouton est encapsuler dans :
<form id="id1" action="url1" method="post">

Et le 2e dans :
<form action="url1" method="post">

Ce qui donne :
<form id="id1" action="url1" method="post">
<input type="hidden" name="nom1" value="valeur1" />
<input type="submit" value="valeur2" />
</form>

<form action="url1" method="post">
<input type="hidden" name="nom1" value="valeur3" />
<input type="submit" value="valeur4" />
</form>

Au total, il y a :
2 forms : 1 avec id="id1" et l'autre sans id, les 2 avec la même url en
action et la même méthode post.
2 input de type hidden avec le même name "nom1" et 2 valeurs différentes
2 input de type submit sans nom et avec 2 valeurs différentes


Merci d'avance pour votre aide,
Stéphane



<Stéphane> a écrit dans le message de news:
%
Merci Jérémy,

Petit soucis... C'est pas moi qui fait le code HTML (ou autre)...

J'ai également remarqué que le 1er bouton est encapsuler dans :
<form id="id1" action="url1" method="post">Et le 2e dans :
<form action="url1" method="post">Ce qui donne :<form id="id1"
action="url1" method="post"><input type="hidden" name="nom1"
value="valeur1" /><input type="submit" value="valeur2" /></form><form
action="url1" method="post"><input type="hidden" name="nom1"
value="valeur3" /><input type="submit" value="valeur4" /></form>Au total,
il y a :2 forms : 1 avec id="id1" et l'autre sans id, les 2 avec la même
url en action et la même méthode post.2 input de type hidden avec le même
name "nom1" et 2 valeurs différentes2 input de type submit sans nom et
avec 2 valeurs différentes
Merci d'avance pour votre aide,Stéphane
"Jérémy Jeanson" a écrit dans le message de news:

Bonjour Stéphane,

Tu ne vas surment pas être surpris si je te dis qu'il est déconseiller
d'utiliser ce genre d'approche (deux fois le même nom, ce n'est pas
forcément terrible). Mais si tu veux t'en sortir je pense que le solution
peut être de rechercher dans un premier temps le conteneur du premier
contrôle puis le conteneur du second. En utilisant par exemple des
conteneurs nommés de type div.

Notes au passage qu'il semble maintenant que la norme XHTML voudrait que
l'on utilise des Id et nom plus des Name (ce qui explique le chois d'Id
comme identifiant des contrôles serveur aspx)
--
Jérémy JEANSON
MCP
http://www.jjeanson.fr






Avatar
Jérémy Jeanson
Bonjour Stéphane,

Pas facile de te suivre, j'ai enfin compris le contexte de ton code :

tu as une application winform en vb qui utilise un control webbrowser et
tu veux manipuler un page web externe à ton projet :)

Rien de bien compliqué en fait :

Pour ton cas, pour changer la valeur de l'un des tes champs caché :

- Dans le cas ou tu as l'id de ton Form
Me.WebBrowser1.Document.Forms("id1").All("nom1").SetAttribute("value",
"ma valeur")

- Sans id tu peux utiliser un index (attention base 0 pour l'index)
Me.WebBrowser1.Document.Forms(1).All("nom1").SetAttribute("value", "ma
valeur")

- Et pour déclancher le click sur ton bouton :
' Lister les éléments de ton form
Dim elements As HtmlElementCollection =
Me.WebBrowser1.Document.Forms("id1").Children()

'Le bouton est le dernier élément de ton form donc on prend l'index du
dernier control pour trouver ce fameux bouton
Dim bouton As HtmlElement = elements(elements.Count - 1)

If (bouton IsNot Nothing) Then
bouton.InvokeMember("click")
End If

Et voila!

PS: donc au passage pour le click sur ton second form qui n'a pas d'id
on prend le second form (index 1):
' Lister les éléments de ton form
Dim elements As HtmlElementCollection =
Me.WebBrowser1.Document.Forms(1).Children()

'Le bouton est le dernier élément de ton form donc on prend l'index du
dernier control pour trouver ce fameux bouton
Dim bouton As HtmlElement = elements(elements.Count - 1)

If (bouton IsNot Nothing) Then
bouton.InvokeMember("click")
End If
--
Jérémy JEANSON
MCP
http://www.jjeanson.fr
Avatar
Merci Jérémy,

Je vais bientôt regarder ca.

Stéphane

"Jérémy Jeanson" a écrit dans le message de news:

Bonjour Stéphane,

Pas facile de te suivre, j'ai enfin compris le contexte de ton code :

tu as une application winform en vb qui utilise un control webbrowser et
tu veux manipuler un page web externe à ton projet :)

Rien de bien compliqué en fait :

Pour ton cas, pour changer la valeur de l'un des tes champs caché :

- Dans le cas ou tu as l'id de ton Form
Me.WebBrowser1.Document.Forms("id1").All("nom1").SetAttribute("value", "ma
valeur")

- Sans id tu peux utiliser un index (attention base 0 pour l'index)
Me.WebBrowser1.Document.Forms(1).All("nom1").SetAttribute("value", "ma
valeur")

- Et pour déclancher le click sur ton bouton :
' Lister les éléments de ton form
Dim elements As HtmlElementCollection =
Me.WebBrowser1.Document.Forms("id1").Children()

'Le bouton est le dernier élément de ton form donc on prend l'index du
dernier control pour trouver ce fameux bouton
Dim bouton As HtmlElement = elements(elements.Count - 1)

If (bouton IsNot Nothing) Then
bouton.InvokeMember("click")
End If

Et voila!

PS: donc au passage pour le click sur ton second form qui n'a pas d'id on
prend le second form (index 1):
' Lister les éléments de ton form
Dim elements As HtmlElementCollection =
Me.WebBrowser1.Document.Forms(1).Children()

'Le bouton est le dernier élément de ton form donc on prend l'index du
dernier control pour trouver ce fameux bouton
Dim bouton As HtmlElement = elements(elements.Count - 1)

If (bouton IsNot Nothing) Then
bouton.InvokeMember("click")
End If
--
Jérémy JEANSON
MCP
http://www.jjeanson.fr


Avatar
Ca marche parfaitement bien !

Encore Merci !

Stéphane


"Jérémy Jeanson" a écrit dans le message de news:

Bonjour Stéphane,

Pas facile de te suivre, j'ai enfin compris le contexte de ton code :

tu as une application winform en vb qui utilise un control webbrowser et
tu veux manipuler un page web externe à ton projet :)

Rien de bien compliqué en fait :

Pour ton cas, pour changer la valeur de l'un des tes champs caché :

- Dans le cas ou tu as l'id de ton Form
Me.WebBrowser1.Document.Forms("id1").All("nom1").SetAttribute("value", "ma
valeur")

- Sans id tu peux utiliser un index (attention base 0 pour l'index)
Me.WebBrowser1.Document.Forms(1).All("nom1").SetAttribute("value", "ma
valeur")

- Et pour déclancher le click sur ton bouton :
' Lister les éléments de ton form
Dim elements As HtmlElementCollection =
Me.WebBrowser1.Document.Forms("id1").Children()

'Le bouton est le dernier élément de ton form donc on prend l'index du
dernier control pour trouver ce fameux bouton
Dim bouton As HtmlElement = elements(elements.Count - 1)

If (bouton IsNot Nothing) Then
bouton.InvokeMember("click")
End If

Et voila!

PS: donc au passage pour le click sur ton second form qui n'a pas d'id on
prend le second form (index 1):
' Lister les éléments de ton form
Dim elements As HtmlElementCollection =
Me.WebBrowser1.Document.Forms(1).Children()

'Le bouton est le dernier élément de ton form donc on prend l'index du
dernier control pour trouver ce fameux bouton
Dim bouton As HtmlElement = elements(elements.Count - 1)

If (bouton IsNot Nothing) Then
bouton.InvokeMember("click")
End If
--
Jérémy JEANSON
MCP
http://www.jjeanson.fr