[?]   dans   mode   trier par   

[<] 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