Re: [AS] Fly with Safari

Page principale
Supprimer ce message
Répondre à ce message
Auteur: FredoMkb
Date:  
À: La liste AppleScript Francophone
Sujet: Re: [AS] Fly with Safari
Bonjour à tous :-)

Le 31 mars 10 à 17:44, Yves CiBERT a écrit :

> Hello à tous
>
> 1) Peut-on créer ou supprimer des onglets et des signets dans
> l'application "Safari"


Tout dépend de quelle version de Safari je pense, en tout cas, en ce
qui concerne les onglets (tabs), ça ne marche qu'à partir de la
version 3 (si mes souvenirs sont bons), pour les signets (bookmarks)
en revanche, je ne sais pas, je n'ai jamais essayé (j'ai quand-même
un doute).

Donc, pour les onglets (testé avec la version 4 de Safari) :

- Ajouter un onglet :

tell application "Safari"
    tell first window
        make new tab at end with properties {URL:"http://www.adresse.url"}
    end tell
end tell


- Supprimer un onglet :

tell application "Safari"
    tell first window
        delete tab 3 -- Par son numéro d'index ou par son nom (titre de la  
page)
    end tell
end tell


- Fermer un onglet (même effet que la suppression mais plus propre à
mon avis... quoi-que, comme aurait dit Jean-Luc, ça se discute ;-) :

tell application "Safari"
    tell first window
        close tab 3 -- Par son numéro d'index ou par son nom (titre de la  
page)
    end tell
end tell




> 2) Y a-t-il un autre moyen de récupérer les propriétés des objets
> contenus dans une page Web qe:
> "System Events"
> "Safari"
> "Ui elements"
> Attention ! la propriété "Text" of document" qui m'amène à peu près
> toutes les données écrites d'une page ne me permet pas de connaître
> la fonction dissimulée sous la chaîne de caractères.


Je ne sais pas ce que tu entends exactement par : "propriétés des
objets contenus dans une page Web".

En gros, AppleScript n'a aucun moyen direct d'inter-agir avec les
contenus Html des pages Web, il faut donc passer par d'autres moyens,
le "System Events" donnant la possibilité de "virtualiser" des
actions utilisateur, mais avec les contraintes qu'on connaît : savoir
la position exacte du curseur, délai de pose entre chaque action
(surtout si changement de Url), pas efficace à 100 % et très peu
pérenne (les pages Web ont une fâcheuse tendance à changer
régulièrement).

Une autre piste, est celle d'utiliser du JavaScript, Safari propose
d'ailleurs une commande spéciale "do JavaScript", qui permet
d'exécuter tout code présent dans le code source de la page qui soit
matérialisé sous forme de fonction autonome, ou tout code JavaScript
libre qu'on peut donner comme argument à la commande.

Ceci-dit, pour pouvoir utiliser du JavaScript, il faut que les objets
Html du code source de la page, comportent des identifiants uniques,
afin de les cibler de manière sûre et agir sur eux.

Par exemple, admettons que nous avons un objet "input", de type
bouton, dans un formulaire quelconque :

<form>
<input type="boutton" name="valider" id="valider" value="Valider"
onclick="alert('Coucou les amis ;-)');" />
</form>

Voici comment on pourrait utiliser la commande "do JavaScript" de
Safari :

tell application "Safari"
    activate
    tell current tab of first window
        do JavaScript "document.getElementById('valider').onclick()"
    end tell
end tell


En exécutant ce bout de code AS, la commande "do JavaScript" va
lancer la fonction "onclick" de l'objet "input", le dialogue "alert"
sera alors affiché.

Si le code source de la page Web contient déjà un script JS sous
forme de fonction, on peut l'appeler aussi, par exemple :

- Le code Html :

<html>
<head>
<title>Test As-JavaScript</title>
<script type="text/javascript">
function js_test(theId) {
    document.getElementById(theId).onclick();
}
</scriipt>
</head>
<body>
<form>
<input type="boutton" name="valider" id="valider" value="Valider"  
onclick="alert('Coucou les amis ;-)');" />
</form>
</body>
</html>


- Le code AS

tell application "Safari"
    activate
    tell current tab of first window
        do JavaScript "js_test('valider')"
    end tell
end tell



Voilà, je sais, il faut connaître un peu les trois langages (As, Html
et JS), mais avec quelques essais on arrive à faire des petites
choses bien pratiques... maintenant, tout n'est pas possible non
plus, comme valider par AS un formulaire Web sécurisé utilisant la
technologie AJAX par exemple... dans tout les cas, il faut faire des
tests je pense...

J'espère que ça aide un peu :-)

@+ ;-)
Fredo
_______________________________________________
Applescript_fr mailing list
Applescript_fr@???
http://listes.patpro.net/mailman/listinfo/applescript_fr