VB .Net 2008 Express - Clic dans 1 Webbrowser

Le
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
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
Jérémy Jeanson
Le #18303091
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
Le #18310191
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"
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


Le #18310181
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"
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






Jérémy Jeanson
Le #18312971
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
Le #18334021
Merci Jérémy,

Je vais bientôt regarder ca.

Stéphane

"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


Le #18349651
Ca marche parfaitement bien !

Encore Merci !

Stéphane


"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


Publicité
Poster une réponse
Anonyme