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

JavaScript Discussion :

Recherche un élément puis simuler un clic dessus.


Sujet :

JavaScript

  1. #21
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    je comprend mais pourquoi :
    parce que dans un cas il traite une chaîne et dans l'autre un numérique.

    • Avec le code HTML suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <span id="123" data="123">...</<span>
    Regarde ce qui se passe avec ces codes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    console.log("(0)",document.getElementById("123"));                  // valide
    console.log("(1)",document.getElementById(123));                    // valide
     
    console.log("(2)",document.querySelector('#\\31 23'));              // valide en échappant le premier chiffre suivi d'un espace
    console.log("(3)",document.querySelector('[data=\\31 23]'));        // valide en échappant le premier chiffre suivi d'un espace
    console.log("(4)",document.querySelector('[data=\\31\\32\\33]'));   // valide en échappant chaque chiffre
    console.log("(5)",document.querySelector('[data="123"]'));          // valide avec guillemets
    console.log("(6)",document.querySelector('[data=\'123\']'));        // valide avec échappement des quottes
    • Voir 4.1.3 Characters and case

    Même en mettant les ', le résultat reste incorrecte :/
    l'exemple est traité ci dessus.

  2. #22
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Citation Envoyé par Kametleon Voir le message
    je comprend mais pourquoi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WebControl1.ExecuteJavascriptWithResult("document.querySelector('a[data-tab=provalys]').click()")
    Ca fonctionne. Et pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WebControl1.ExecuteJavascriptWithResult("document.querySelector('img[data-id=523822]').click()")
    C’est juste une hypothèse, mais dans le premier cas le clic est émis sur un lien, et dans le second cas sur une image. Peut-être que ça ne marche qu’avec les liens.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #23
    Futur Membre du Club Avatar de Kametleon
    Homme Profil pro
    Marin
    Inscrit en
    Avril 2018
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Marin
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2018
    Messages : 19
    Points : 8
    Points
    8
    Par défaut
    Avec vos infos j'ai donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    document.querySelector('#anewacts').querySelector('div[data-id=\\538476]').click() 
    document.querySelector('#anewacts').querySelector('div[data-id=\'538476\']').click()
    J'ai bien mis les ' et \ au bon endroit ?
    Je test dés que possible
    EDIT: Malgré tout les forme d’écriture, il ne se passe rien ... Je commence à croire que .click() ne fonctionne que sur des liens et pas sur des img ou bouton...

    Je me suis posé la même question que @Watilin...
    C’est juste une hypothèse, mais dans le premier cas le clic est émis sur un lien, et dans le second cas sur une image. Peut-être que ça ne marche qu’avec les liens.

  4. #24
    Futur Membre du Club Avatar de Kametleon
    Homme Profil pro
    Marin
    Inscrit en
    Avril 2018
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Marin
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2018
    Messages : 19
    Points : 8
    Points
    8
    Par défaut
    Bon j'ai réussit avec une chinoiserie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.querysSelector('#agrid > div > div:nth-child(8) > div.uicon.round > img.icon.round')
    Mais le soucis (sinon sa serait trop simple) c'est que le div:nth-child(8) n'est pas toujours le 8 ...
    il y aurait moyen de compter pour trouver le bon numéro ?

  5. #25
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Mais le soucis (sinon sa serait trop simple) c'est que le div:nth-child(8) n'est pas toujours le 8
    • à quoi ressemble ton code HTML pour ces éléments ?
    • tu ne peux pas le cibler autrement en modifiant tes ID par exemple ?

  6. #26
    Futur Membre du Club Avatar de Kametleon
    Homme Profil pro
    Marin
    Inscrit en
    Avril 2018
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Marin
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2018
    Messages : 19
    Points : 8
    Points
    8
    Par défaut
    La page web n'est pas de mon fait. Sauf erreur de ma part je ne peux donc pas changer les ID ou autres éléments de la page...
    Je sais que les <div> et que le code HTML est mit en place suivant des critères (rempli ou non).
    Au chargement de la page il doit aller vérifier certaines choses puis il m'affiche en conséquence les éléments que je doit remplir.

    Le code HTML général reste le même mais les "Childs" sont différents suivant les critères de chargement de la pages qui changent de temps à autres...
    le code est comme je citais dans mes précédents messages :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <div id ="agrid">
    <div2>
    ...
    <divX>
     
    <p id="sel" class="">
    <img class="round vessel" data-id="523822" src="/img/provalys.png" title="Provalys"> 
    <img class="round vessel" data-id="953485" src="/img/gaselys.png" title="Gaselys">
     </p>
     
    </divX>
    ...
    </div2>
    </div>

    Le code suivant fonctionne pour "appuyer" sur une image contenu dans le 8iéme div
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.querysSelector('#agrid > div > div:nth-child(8) > div.uicon.round > img.icon.round')
    Mais ... La page se chargeant suivant certains critères que je n'ai pas ce n'est pas toujours le 8iéme... Donc le code ne fonctionne que si j'arrive à trouver que se que je cherche est dans le 8iéme child...
    PS: Le code ci-dessus je l'ai eu en "inspectant" mon élément avec Chrome et en copiant le Selector proposé par ce dernier.

    DANS LE MEILLEUR DES MONDES ^^ :
    Le code idéal serait comme pour la simulation de clic comme sur un lien <a> (Le code dessous fonctionne très bien):
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a ref=" trucbidule" data-tab="provalys"> Texte </a>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WebControl1.ExecuteJavascriptWithResult("document.querySelector('a[data-tab=provalys]').click()")
    Donc j'ai garder la même "idée" pour cliquer sur une <img> ou un <button> mais gros fail...
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <img ref=" trucbidule" data-tab="speed"> Texte </a>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WebControl1.ExecuteJavascriptWithResult("document.querySelector('img[data-tab=speed]').click()")
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <button ref=" trucbidule" data-tab="course"> Texte </a>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WebControl1.ExecuteJavascriptWithResult("document.querySelector('button[data-tab=course]').click()")
    Le truc chiant est que dans le code WebControl1.ExecuteJavascriptWithResult() je ne peux pas mettre de guillemet " ...je suis limité à des '

  7. #27
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Je vais peut-être enfoncer des portes ouvertes mais j’aimerais lever toute ambiguïté et être sûr que tu es au courant des points suivants :

    1. Dans un code HTML, il y a des balises en deux parties, la partie ouvrante et la partie fermante ; et il y a les balises en une seule partie. <img> est une balise en une seule partie. Pour la lisibilité on peut ajouter un slash à la fin : <img />.
    Quand tu as ce code :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <img ref=" trucbidule" data-tab="speed"> Texte </a>
    Tu as en réalité une image contenue dans un lien, dont la partie ouvrante est absente ; l’image est voisine d’un nœud de texte contenant Texte, elle ne le contient pas.

    2. NoSmoking l’a déjà dit mais je vais le répéter : pour échapper un guillemet dans une chaîne, précède-le d’un antislash : '\''. La coloration syntaxique de ce forum devrait t’aider.

    3. Un clic n’aura évidemment d’effet que sur un élément qui est prévu pour ça. Soit c’est un élément naturellement interactif tel qu’un lien, un bouton ou un contrôle de formulaire, soit les scripts de la page y ont ajouté un gestionnaire d’évènement. Si tu veux vraiment cliquer sur une image, vérifie qu’elle a un gestionnaire de click, sinon c’est probablement que tu te trompes d’élément.
    Note que l’évènement clic « remonte » (on dit qu’il bouillonne) vers le parent de l’élément ciblé, puis vers ses grands-parents, etc. jusqu’à la racine du document.




    À présent, je voudrais que tu testes les commandes suivantes dans ton environnement, une à la fois, et que tu me dises ce que tu reçois en résultat :
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    WebControl1.ExecuteJavascriptWithResult("document.querySelectorAll('#agrid img.icon.round')")
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    WebControl1.ExecuteJavascriptWithResult("document.querySelectorAll('#agrid img.icon.round').length")
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    WebControl1.ExecuteJavascriptWithResult("Array.from(document.querySelectorAll('#agrid img.icon.round'))")
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

Discussions similaires

  1. Simulation de clic
    Par seiryujay dans le forum Agents de placement/Fenêtres
    Réponses: 7
    Dernier message: 31/08/2005, 17h05
  2. [JToggleButton] simuler un clic
    Par norkius dans le forum Composants
    Réponses: 4
    Dernier message: 30/05/2005, 16h35
  3. [VB.NET] Ouvrir fichier dans appli par double-clic dessus
    Par vynce dans le forum Windows Forms
    Réponses: 4
    Dernier message: 29/03/2005, 16h43
  4. [SET]Recherche d'éléments communs à 2 sets
    Par CappCorp dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 03/01/2005, 17h03
  5. [JDOM] Recherche d'éléments en JDOM
    Par newfsch dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 09/04/2004, 18h33

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