IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

cliquer un boutton sans ID


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 105
    Par défaut cliquer un boutton sans ID
    Bonjour à toutes et tous,

    Je cherche à cliquer sur un bouton qui n'a pas d'ID. Avec webbrowser je n'ai pas de problème, mais avec la fin d'internet Explorer en juin, il faut passer en webview et la, çà se gâte pour moi !

    Il semble que 'GetElementsByTagName' et 'GetAttribute' ne fonctionnent pas avec webview.

    Voici le code HTML du bouton en question :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <div class="btn-group">
    <button tabindex="5" class="btn btn-primary btn-block btn-large login-button">
    <span class="icon-lock icon-white"></span> Connexion	
    </button>
    </div>


    J'ai essayé ce code (et qq dizaines d'autres !) mais il ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            Dim functionString = String.Format("document.getElementsByClassName('btn btn-primary btn-block btn-large login-button')[5].click()")
            Await WebView21.ExecuteScriptAsync(functionString)
    Je me tourne donc vers vous pour un petit coup de pouce !

    Merci !

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 105
    Par défaut
    J'ai trouvé un code qui fonctionne

    Code visualbasic : Sélectionner tout - Visualiser dans une fenêtre à part
      Dim name As String = Await WebView21.ExecuteScriptAsync("document.getElementsByClassName('btn btn-primary btn-block btn-large login-button')[0].click();")


    Par contre je rencontre un problème sur la sélection dans une liste. Je cherche a sélectionner <option value="3">

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <div class="controls"><select id="jform_catid" name="jform[catid]" data-custom_group_text="Nouvelles catégories" data-no_results_text="Ajouter une nouvelle catégorie" data-placeholder="Taper ou sélectionner une catégorie" data-custom_value_prefix="#new#" class="required chzn-custom-value" required aria-required="true">
    	<option value="1">XXXXX</option>
    	<option value="2">XXXXX</option>
    	<option value="3">XXXXX</option>
    	<option value="4">XXXXX</option>
    	<option value="5">XXXXX</option>	
    </select>
    </div>

    Je n'ai pas trouvé comment faire ma sélection. Auriez-vous une idée ?

    Merci à vous !

  3. #3
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    3 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 001
    Par défaut
    De la même manière que tu as trouvé ton bon bouton avec un sélecteur CSS, tu peux retrouver ton option avec un autre sélecteur CSS
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementsByClassName('#jform_catid:nth-child(3)')

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 105
    Par défaut
    Bonjour Popo et merci pour le retour,

    J'en suis à mon dernier problème d'adaptation avec ce webview2 qui vient remplacer le webbrowser. Je n'arrive pas à attendre la fin du chargement d'une page avant de faire l'action suivante.

    Le schéma est celui-ci

    - navigation
    - attente de fin du chargement
    - Action 1
    - Action 2
    - Clic de sauvegarde
    - attente de fin du chargement
    - navigation vers une nouvelle page etc...

    Je ne comprends pas comment utiliser "WebView21.NavigationCompleted"

    En effet, quand je le place dans le handles d'une sub cela fonctionne à condition que la sub soit terminée. J'ai pensé utiliser un boolean qui me détermine que la page est bien chargée mais cela ne fonctionne pas.

    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
            bLoadPage = False
            WebView21.CoreWebView2.Navigate("https://www.----.com")
     
            Do Until bLoadPage = True        
                    bLoadPage = False
                    ' login
                    WebView21.ExecuteScriptAsync("document.getElementById('mod-login-username').value = 'xxx'")
                    ' Password
                    WebView21.ExecuteScriptAsync("document.getElementById('mod-login-password').value = 'xxx'")
                    ' Login clic Bouton connexion
                    WebView21.ExecuteScriptAsync("document.getElementsByClassName('btn btn-primary btn-block btn-large login-button')[0].click();")
     
                    Do Until bLoadPage = True  
                        bLoadPage = False
                        ' Nom Article
                        WebView21.ExecuteScriptAsync("document.getElementById('jform_title').value = 'Nom article'")                    
     
                        ' Ajout du contenu
                        WebView21.ExecuteScriptAsync("document.getElementById('jform_articletext').value = 'contenu article'")                  
     
                        ' clic Bouton sauvegarde article
                        WebView21.ExecuteScriptAsync("document.getElementsByClassName('btn btn-small button-save')[0].click();")
     
                    Loop       
            Loop
     
        End Sub
     
     
        ' Chargement de la page
        Private Sub LoadPage() Handles WebView21.NavigationCompleted
            bLoadPage = True
        End Sub


    Merci pour votre aide car je patauge !

  5. #5
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 581
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 581
    Par défaut
    Bonsoir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public Enum  READYSTATE
    	READYSTATE_COMPLETE=	4	
    	READYSTATE_INTERACTIVE=	3	
    	READYSTATE_LOADED=	2	
    	READYSTATE_LOADING=	1	
    	READYSTATE_UNINITIALIZED=	0
    end Enum
    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
            bLoadPage = False
            WebView21.CoreWebView2.Navigate("https://www.----.com")
    While  WebView21.CoreWebView2.ReadyState <> READYSTATE_COMPLETE
       Application.DoEvents
    Wend

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 105
    Par défaut
    Bonjour Thumb down et merci pour ce code !

    Après intégration j'ai 2 messages d'erreur :
    1/'ReadyState' n'est pas un membre de 'CoreWebView2
    2/'READYSTATE_COMPLETE' n'est pas déclaré. Il peut être inaccessible en raison de son niveau de protection.

    Je suis débutant pourriez-vous me donner une petite explication sur le fonctionnement du code donné ?

    En tout cas merci beaucoup de prendre du temps pour m'aider.

  7. #7
    Invité de passage
    Femme Profil pro
    Analyse système
    Inscrit en
    Avril 2022
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Avril 2022
    Messages : 1
    Par défaut
    salut essaye cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Sub WaitingFor(ByRef seconds As Double)
     
            Dim Fini As DateTime = Now.AddSeconds(seconds)
     
            While Now < Fini
     
                My.Application.DoEvents()
     
            End While
     
     
     
        End Sub
    et met juste sous la navigation

    Par contre chez moi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     WebView21.CoreWebView2.ExecuteScriptAsync("document.getelementsByTagName('input')(0).value = 'mot de passe")
    ne fonctionne pas. rien n'est renseigner et aucune erreur apparait.
    Quelqu’un a t'il un idée. Faut il déclarer quelque chose de particulier pour que cela fonctionne?

Discussions similaires

  1. Cliquer un élément sans toucher l'écran
    Par Kimly dans le forum Objective-C
    Réponses: 2
    Dernier message: 21/07/2014, 10h46
  2. Raccourci boutton sans texte
    Par ites dans le forum SWT/JFace
    Réponses: 1
    Dernier message: 24/01/2009, 20h58
  3. Réponses: 1
    Dernier message: 07/08/2007, 18h45
  4. double cliquer un jar sans installer java
    Par SGJ dans le forum Général Java
    Réponses: 4
    Dernier message: 28/05/2007, 09h57
  5. [VB6] Déplacer la form sans cliquer sur la barre de titre
    Par Ingham dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 14/11/2002, 02h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo