AppleScript cliquez sur le lien Safari <th>

-1

Sur la base de cette balise HTML, comment puis-je cliquer sur View from TrustedMachines?

Je sais comment le faire de document.getElementById ou nom mais pas sûr de savoir comment faire cela

<td>
    <a data-auto-test-id="ViewTrustedMachines" href="/WebObjects/support.woa/wo/iKK52GLbH8yXxkrGGvN4M/4.4.5.53.7.5.0.447.0.0.1">View</a>
</td>

Tag plus complet:

<tbody>
    <tr>
        <th>Geo</th>
        <td>USA</td>
    </tr>
    <tr>
        <th>Download Queue</th>
        <td>0</td>
    </tr>
    <tr>
        <th>Wish List</th>
        <td>0</td>
    </tr>

    <tr>
        <th>Something else</th>
        <td>
            <a data-auto-test-id="ViewSomethingelse" href="/WebObjects/support.woa/wo/iKK52GLbH8yXxkrGGvN4M/4.4.5.15.1.7.0.142.0.0.1">View</a>
        </td>
    </tr>

    <tr>
        <th>Trusted Machines</th>
        <td>
            <a data-auto-test-id="ViewTrustedMachines" href="/WebObjects/support.woa/wo/iKK52GLbH8yXxkrGGvN4M/4.4.5.53.7.5.0.447.0.0.1">View</a>
        </td>
    </tr>

Voici mon clic normal pour id:

tell application "Safari"
    do JavaScript "document.getElementById('ViewTrustedMachines').click();" in tab 1 of window 1
end tell
Kevin
la source
Veuillez vérifier et corriger votre message pour qu'il affiche correctement la partie HTML.
nohillside
1
Utilisez le sélecteur de requête. Votre vie sera toujours plus facile dans js.
JBis
C'est plus de js question. btw. Voir ma réponse ci-dessous.
JBis
@nohillside Ici, tu vas: jsfiddle.net/wbruga37
JBis
1
@ nohillside Cette question sera crucifiée à SO. Je ne recommanderais certainement pas de le mettre là dans son état actuel.
JBis

Réponses:

2

Ne pas utiliser getElementById. C'est une douleur dans le ** et ne fonctionne presque jamais pour ce que vous voulez. De plus, aucun de vos éléments n’a d’identifiant, il n’est donc pas utile de l’utiliser. Utilisez plutôt des scripts Java beaux et utiles querySelector. Vous pouvez utiliser les sélecteurs CSS pour sélectionner un seul élément et faire ce que vous voulez à partir de là.

L'élément que vous essayez de sélectionner possède un attribut de données unique. L'attribut de données est data-auto-test-id= et le contenu de cet attribut est ViewTrustedMachines afin que nous puissions le sélectionner simplement avec document.querySelector('a[data-auto-test-id="ViewTrustedMachines"]'). Enfin, nous ajoutons simplement le .click() pour ... eh bien ... cliquez dessus.

tell application "Safari"
   do JavaScript "document.querySelector('a[data-auto-test-id=\"ViewTrustedMachines\"]').click();"
end tell

Corrigez également votre code HTML:

<table>


    <tbody>
        <tr>
            <th>Geo</th>
            <td>USA</td>
        </tr>
        <tr>
            <th>Download Queue</th>
            <td>0</td>
        </tr>
        <tr>
            <th>Wish List</th>
            <td>0</td>
        </tr>

        <tr>
            <th>Something else</th>
            <td>
                <a data-auto-test-id="ViewSomethingelse" href="/WebObjects/support.woa/wo/iKK52GLbH8yXxkrGGvN4M/4.4.5.15.1.7.0.142.0.0.1">View</a>
            </td>
        </tr>

        <tr>
            <th>Trusted Machines</th>
            <td>
                <a data-auto-test-id="ViewTrustedMachines" href="/WebObjects/support.woa/wo/iKK52GLbH8yXxkrGGvN4M/4.4.5.53.7.5.0.447.0.0.1">View</a>
            </td>
        </tr>
        </tbody>
        </table>

Finalement, voici un violon pour le montrer en action.

JBis
la source
1
Merci, semble bon mais je ne peux pas compiler, avant document.querySelector vous devez ajouter faire JavaScript "non?
Kevin
@ Kevin Yep. Fixé.
JBis
Les citations de @Kevin doivent être évitées. Voir au dessus
JBis
@ Kevin Glad je pourrais aider :)
JBis