none
Simuler une action sur la balise SELECT d'une page HTML RRS feed

  • Discussion générale

  • Bonjour à tous,

    Mon appli a base de webbrowser  aboutit parfois sur un page contenant le code suivant :

    <form name="form2" method="post" action="adresse du site.php"> <input type="hidden" name="mode" value=""> <select name="page" onChange="this.form.submit()">

    <option value=1 selected>Page 1</option><option value=2>Page 2</option>

    </select> </form>

    il s'agit d'une sorte de petite combobox permettant de selectionner le numéro de page affichée.

    Je souhaite pouvoir changer de page automatiquement mais sans succès.

    Je pensais utiliser une fonction du style GetElementsbyName mais ça ne m'a mené nulle-part.

    Votre aide sera la bienvenue.


    • Modifié mag2013 mercredi 7 août 2013 16:58
    • Type modifié Aurel Bera mardi 13 août 2013 10:36 Discussion
    mercredi 7 août 2013 16:49

Toutes les réponses

  • Bonjour,

    Si tu crée un tableau de variables, les redirections d'un coté, les form de l'autre, tu peux affecter ta redirection à la variable de ton choix qui sont chargées au load de ta page, ou par base de données. Tu peux ainsi mettre dans un événement l'utilisation de ta variable exemple :

    select case

    case mapagencours

    Response.Redirect(page1 & monadresse, True)

    Si tu as besoin de plus d'explication fais le savoir

    Jacky

    mercredi 7 août 2013 17:31
  • Bonjour,

    "Ne mène nulle part" c'est-à-dire. On n'arrive pas à trouver l'élément nommé "page" de cette façon ?


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    mercredi 7 août 2013 18:28
    Modérateur
  • En fait, quand je veux que mon programme renseigne automatiquement une zone de saisie sur une page web, j'utilise une instruction du style

    wb.Document.GetElementById("Nom").SetAttribute("value", Mon_Nom).

    Etant donné qu'il n'y a pas d'id pour le htmlselect qu'on trouve dans le code html que j'ai mentionné ci-dessus, j'avais un peu le secret espoir de trouver une possibilité du genre

    wb.Document.GetElementByName ("Page").Selected ("Page 2")... mais rien de ce genre.

    Je n'ai donc aucune idée de la facon d'aborder le probleme.

    mercredi 7 août 2013 18:59
  • j'ai trouvé cette indication concernant vba excel... Ma question est donc : quel serait l'équivalent en vb.net

    Sub ListeDeroulante()
    'Selectionner une valeur dans une liste déroulante
    Dim IE As New InternetExplorer
    Dim IEDoc As HTMLDocument
    Dim htmlTagCol As IHTMLElementCollection
    Dim htmlSelectElem As HTMLSelectElement
    
    
       'Ouvre la page Web
       IE.Navigate "http://www.cadastre.gouv.fr/scpc/accueil.do"
       IE.Visible = True
       WaitIE IE
       Set IEDoc = IE.document
    
       'On va sur l'objet qui contient la liste des indices
       Set htmlSelectElem = IEDoc.all("indiceRepetition")
    
       'On sélectionne l'indice "ter" via sa valeur unique
       htmlSelectElem.Value = "T"
    
    '## Autre solution ##
       'On sélectionne l'indice "ter" via l'index
       htmlSelectElem.selectedIndex = 2


    mercredi 7 août 2013 19:11
  • Bonjour mag2013,

    Pour ce dernier ça donnerait avec un WebBrowser :

        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            WebBrowser1.Navigate("http://www.cadastre.gouv.fr/scpc/accueil.do")
        End Sub
    
        Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
            Dim doc As HtmlDocument
            Dim Elem As HtmlElement
    
            doc = WebBrowser1.Document
            Elem = doc.GetElementById("indiceRepetition")
            If Not Elem = Nothing Then
                Elem.SetAttribute("value", "T")
            End If
        End Sub


    Cordialement, Jacques

    jeudi 8 août 2013 09:38
  • Ou si cela ne marche pas à cause du GetElementById voire même si cela marche préférez peut-être :

    WebBrowser1.Document.All.GetElementsByName("page") qui retourne un tableau (vérifiez par exemple que vous avez un seul élement et dans ce cas prenez l'unique élément trouvé) : le fait que GetElementById prenne en compte id ou name est un comportement qui fonctionne en mode "compatible" mais plus en mode "standard" (qui ne prends en compte que l'id), donc autant prendre de bonnes habitudes tout de suite.

    Egalement je suggère un elementTrouvé.RaiseEvent("onchange") après modification de la valeur via elementTrouvé.SetAttribute("value",UnEntier) pour provoquer l'évènement voulu...


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    jeudi 8 août 2013 11:37
    Modérateur
  • Bonjour mag2013

    Est-ce que vous avez testé les solutions proposées ? Merci de partager avec nous les résultats, afin que d'autres personnes avec le même problème puissent profiter de cette solution.

    Cordialement,


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    lundi 12 août 2013 08:15
  • Merci beaucoup à tous et en particulier a patrice dont les indications m'ont permis de trouver une solution simplissime :

    Wb.Document.All.GetElementsByName("page").Item(0).SetAttribute("value", 2)
    Wb.Document.All.GetElementsByName("page").Item(0).RaiseEvent("onchange")


    • Modifié mag2013 samedi 17 août 2013 07:35
    samedi 17 août 2013 07:34