[<] Sujet : [AS] Fly with Safari
De : Yves CiBERT <anonyme@...>
Date : 2010-03-31 17:44:33
Sujet : Re: [AS] Fly with Safari
De : FredoMkb <anonyme@...>
Date : 2010-04-19 17:20:08
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
anonyme@...
http://listes.patpro.net/mailman/listinfo/applescript_fr
Apple, AppleScript, AppleScript Studio, AppleTalk, AppleWorks, ColorSync, Finder, HyperCard, iBook, iLife, iMac, iWork, Keynote, Mac, Macintosh, Mac OS, Pages, Panther, PowerBook, Power Mac, Power Macintosh, QuickTime, Safari, Tiger, Xcode sont des marques déposées par Apple Computer, Inc., enregistrées aux Etats-Unis et dans les autres pays. Liste officielle