# Selectionner une fenetre avec "editeur de script" sous safari



## johny12 (6 Avril 2008)

Bonjour,

Comment selectionner une fenêtre svp 

(en admétant que j'en ai 3 d'ouvertes, les unes sur les autres et qu'elles aient le même nom: par ex. google)


----------



## ceslinstinct (6 Avril 2008)

johny12 a dit:


> Bonjour,
> 
> Comment selectionner une fenêtre svp
> 
> (en admétant que j'en ai 3 d'ouvertes, les unes sur les autres et qu'elles aient le même nom: par ex. google)


Si tu donnais une explication de ce que tu veut faire?

window 1, 2, 3 par ordre de création des fenêtres tu fait ton choix (il faut alors rendre invisible le script qui se retrouve en premier et profitons en faire un contrôle si entre temps tu as pas fait un clic sur le bureau)

Ta façon de faire aidez moi, mais sur quoi?

Tu nous dit, je veut que mon script fasse ça, ça et ça alors ont a une base pour te donner une réponse.

@+


----------



## johny12 (6 Avril 2008)

désolé, j'aurais du donner plus de précisions ^^


mon script est donc:

set x to random number from 15 to 25
repeat
	activate application "Safari"

	tell application "System Events"
		tell application process "Safari 2.0"
			-- commande pour selectionner la fenetre voulue--
			keystroke "(" using {command down}
			delay x

		end tell
	end tell
	tell application "System Events"
		tell application process "Safari 2.0"

			keystroke "(" using {command down}
			delay x
		end tell
	end tell
	tell application "System Events"
		tell application process "Safari 2.0"

			keystroke ")" using {command down}
			delay x
		end tell
	end tell
	tell application "System Events"
		tell application process "Safari 2.0"

			keystroke ")" using {command down}
			delay x
		end tell
	end tell
	tell application "System Events"
		tell application process "Safari 2.0"

			keystroke return
			delay x
		end tell
	end tell
end repeat


/j'ai à chaque fois remis de selectionner safari, etc ou cas ou je cliquerais autre part que sur safari/


----------



## ceslinstinct (7 Avril 2008)

johny12 a dit:


> désolé, j'aurais du donner plus de précisions ^^


Bonjour

Une temporisation avec random est utile si elle change.

Je suis avec Safari 3, j'ai pas trouvé de correspondance de *keystroke "("* avec Safari.

Ton script si c'est pour contrôler la modification des pages il fonctionne mais il faut lui ajouter le rafraîchissement pour qu'elles soit à jour.

Pour ouvrir une URL avec Safari en Applescript ceci fonctionne bien:


```
open location "http://www.apple.com/applescript/"
```

Ton script ne fonctionne que si il démarre sur une page qui en suit une autre et contrôle 2 pages.

Tes keystroke "(", keystroke "(", keystroke ")" , keystroke ")"
pour moi c'est keystroke "(", keystroke ")", keystroke "(" , keystroke ")"

Bon j'ai réécrit ton script, *je sais c'est pas ce que tu cherche* c'est juste pour te donner des idées.


```
set compteur to 1
repeat with j from 1 to 6 -- Pour mes tests
	set x to random number from 15 to 25
	activate application "Safari"
	
	set y to "[" as string -- Pour un nombre impair
	set pair to ((compteur mod 2) = 0) -- Contrôle si c'est un nombre pair
	if pair is true then set y to "]" as string
	
	tell application "System Events"
		tell application process "Safari"
			keystroke y using {command down} -- Affiche la page
			delay 1
			
			keystroke "r" using {command down} -- La met à jour
			delay x
			set compteur to compteur + 1 -- Mise à jour du compteur
		end tell
		if compteur is 100 then set compteur to 0 -- Pour éviter des trop gros nombres
	end tell
end repeat
```
  

Pour des pages différentes faut passer par le premier code.

@+


----------



## johny12 (9 Avril 2008)

Merci, cela marche très bien.

Ce que je cherchais en fait, c'est un moyen pour selectionner la fenêtre à reactualiser

/si j'ai bien compris votre premier message, cette commande est donc:"

Tell window 2 -- dans cet exemple pour la 2ème fenêtre à avoir été ouverte

Et aussi, pourriez-vous m'expliquer quel est la commande pour le rendre invisible svp /

Merci de votre réponse et au plaisir d'une prochaine réponse

(pour faire plus simple, ne serait-il pas plus simple de mettre ? :

repeat
set x to random number from 15 to 25
-- puis  le script 
end repeat


----------



## ceslinstinct (9 Avril 2008)

johny12 a dit:


> Merci, cela marche très bien.
> 
> Et aussi, pourriez-vous m'expliquer quel est la commande pour le rendre invisible svp /
> 
> ...


Bonjour

Repeat with... pour pouvoir stopper le script lors de mes test (c'est une boucle sans fin sinon).

Pour afficher 2 pages avec mises à jour (il faut une fenêtre de Safari ouverte).

```
tell application "Safari"
	activate
	repeat with i from 1 to 2
		close front window
		open location "http://forums.macg.co/vbulletin/"
		delay 15
		close front window
		open location "http://forums.macg.co/vbulletin/forumdisplay.php?f=18"
		delay 15
	end repeat
end tell
```
Pour cacher une fenêtre et la réafficher (sans mise à jour):

```
tell application "Safari"
	activate
	set windowName to name of front window
	set nameWindow to windowName -- Mise en mémoire pour la réouverture
	set visible of window (windowName) to false
	delay 3
	set visible of window (nameWindow) to true
end tell
```
Pour placer la fenêtre dans le Dock et la sortir (sans mis à jour):

```
tell application "Safari"
	activate
	set windowName to name of front window
	set (miniaturized of (window windowName)) to true
	delay 3
	set (miniaturized of (window windowName)) to false
end tell
```

J'espère que tu vas trouver au moins une ligne qui va te convenir dans ces trois codes pour faire avancer ton script?  

@+


----------



## johny12 (11 Avril 2008)

Euuu ...

Le but de mon script est:
d'ouvrir une fenêtre, la réactualiser, valider le massage d'"erreur"
selectionner une autre fenêtre et la réactualiser, valider le massage d'"erreur"

dans ce cas, quel serait le "nom" des fenêtres. ( ce qui est marqué en "haut" est le même pour les deux )


----------



## ceslinstinct (11 Avril 2008)

johny12 a dit:


> Euuu ...
> 
> Le but de mon script est:
> d'ouvrir une fenêtre, la réactualiser, valider le massage d'"erreur"
> ...


Ta question c'est quoi?

Tu veut surveiller 2 pages web pour connaître les modifications, toujours les mêmes?

Tu veut surveiller des pages web, c'est suivant ton humeur que la sélection des pages est décidé et quelles soit mises à jour?

Les pages sont ouvertes ou les ouvrir à la demande?

Ou alors tu me dit c'est mon script, tu m'indique la marche à suivre a la demande?

La tu me fait nager dans de l'eau boueuse, sans savoir ou je vais.

Tu m'envoie toutes les explications de ce que tu cherche par MP avec le plus de détails et je verrais si je peut t'aider a trouver une solution.

Le 2 derniers codes c'est pour cacher et ouvrir la même page.

@+


----------



## ceslinstinct (12 Avril 2008)

johny12 a dit:


> Euuu ...
> 
> Le but de mon script est:
> d'ouvrir une fenêtre, la réactualiser, valider le massage d'"erreur"
> ...


Pour pouvoir utiliser l'URL de la fenêtre ouverte avec ton script ceci:


```
set myURL to URL of document 1 of window 1 -- Lecture de l'URL
```

De cette façon tu peut relever les URLs de chaque fenêtres de Safari que tu ouvriras.

@+


----------



## johny12 (12 Avril 2008)

Merci,

."window 1" est donc la première fenêtre que j'ai crée, et pour les suivantes c'est window 2, window 3, etc ... ?


----------



## ceslinstinct (13 Avril 2008)

johny12 a dit:


> Merci,
> 
> ."window 1" est donc la première fenêtre que j'ai crée, et pour les suivantes c'est window 2, window 3, etc ... ?


Oui a une condition de ne fermer aucune fenêtres, mais si tu as relevé les URLs il y a aucun problème pour les rouvrir.

Fait des tests c'est sans danger.

@+


----------



## johny12 (14 Avril 2008)

En fait, si je fait "précédent puis suivant" c'est pour pouvoir réenvoyer les donnée, cela ne marche donc pas si je réouvre une fenêtre avec le même url. C'est pour cela que j'ai besoin de la selectionner selon son url, mais sans la fermer.
pour pouvoir l'utiliser ce serait donc ?:"
set myURL to URL of document 2 of window 2 -- Lecture de l'URL
tell myURL
la commande précédent puis suivant 
end tell


----------

