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

AppleScript Discussion :

comment intéragir avec <class svg ?


Sujet :

AppleScript

  1. #1
    Membre très actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 370
    Par défaut comment intéragir avec <class svg ?
    bonjour,

    Dans l'inspecteur d'une page web,j'ai trouvé cet extrait en cliquant sur un bouton spécifique:
    <svg class="champs1 champs 2 champs 3 ....." viewBox="0 0 24 24"><title></title><path d="..............................."></path></svg>

    J'ai beau avoir lu ceci:
    https://v4.mui.com/api/svg-icon/

    Cette documentation me fournit les méthodes pour interagir avec du HTML:
    https://developer.mozilla.org/fr/doc...mentsByTagName

    A l'aide de ce genre de code en AppleScript:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    tell application "Safari"
    	activate
    	open location "http://site_bidon"
    	set the bounds of the first window to {0, 0, 1440, 900}
    	delay 10
    	do JavaScript "document.getElementsById('??????????????????????').click();"
    	do JavaScript "document.getElementsByTagName('svg').click();"
    end tell
    je n'arrive pas à lier via AppleScript:
    do Javascript
    à cet extrait de code

    Peut-on m'aider?


    merci

  2. #2
    Membre émérite

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 606
    Par défaut
    Bonjour Tabkelm,
    Je ne suis pas spécialisé en matière de javasrcipt, mais la méthoide .click doit en principe être utilisé sur un bouton.
    D'après ce que tu as indiqué, il semble que ce sur quoi tu cherches à atteindre est en fait un dessin graphique de type SVG.

    Tu n'indiques pas le site web, mais, comme la viewbox est de 24x24, je suppose qu'il s'agit d'un icône...?
    Si cette image vectorielle n'est pas définie par le concepteur du site web comme un bouton, tu ne pourras pas cliquer dessus.
    (pardon: tu pourras, mais cela sera sans effet !)
    Mais si elle est bien définie comme un bouton, alors tu peux cliquer dessus à condition de connaître son nom.

    J'ai observé que tous les objets d'une page de site n'ont pas toujours de nom défini. Dans ce cas, il faut les atteindre via un index de leur class. C'est peut être le cas de ta page qui contient plusieurs objets de class SVG

    Par exemple, une page contient 4 objets de la class 'maClass' et je souhaite cliquer sur le 3ème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dio JavaScript "document.getElementsByClassName('maClass')[3].click()"
    Est ce que cela t'aide ?

    Par ailleurs, je vois que tu as utilisé un délai de 10 secondes, sans doute pour attendre que l'intégralité de la plage soit chargée.
    Il est préférable et plus fiable d'utiliser la fonction "document.readystate" qui est renvoyée lorsque la page est totalement chargée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    tell application "Safari"
        activate
        delay 1
        repeat
            if (do JavaScript "document.readyState" in document 1) is "complete" then exit repeat
            delay 1 -- attend 1 seconde avant de vérifier de nouveau le statut de la page
        end repeat
    end tell
    Attention, il faut aussi que le nom du document Safari contienne celui du nouveau site, sinon c'est la page actuelle (précédente) qui sera déjà complète

    Cordialement

Discussions similaires

  1. Comment travailler avec des classes
    Par Slayes dans le forum NodeJS
    Réponses: 4
    Dernier message: 22/01/2019, 10h51
  2. Comment intéragir avec la souris?
    Par Sunsawe dans le forum C++
    Réponses: 3
    Dernier message: 08/05/2010, 10h20
  3. Comment intéragir avec cmd.exe ?
    Par exempt154 dans le forum C++
    Réponses: 3
    Dernier message: 04/01/2008, 22h14
  4. [sockets]Comment intéragir avec une socket php ?
    Par le Daoud dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 31/10/2005, 10h50

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