[...] Bouton radio/checkbox

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
maxounou
Niveau 1
Niveau 1
Messages : 4
Enregistré le : ven. 27 août 2010 15:00
Status : Hors ligne

[...] Bouton radio/checkbox

#1

Message par maxounou »

Bonjour à tous,
petit nouveau sur autoit et sur ce forum, je fais face à un problème dans le cadre d'automatisation de mes logiciels!
J'ai commencé par mettre en silencieux les logiciels de base qui devraient selon moi faire partie intégrante de windows, bref.

Mon problème est le suivant:
je suis sur l'automatisation de winamp et je cheche à décocher certaines checkbox, j'ai essayer différentes lignes de code et je n'arrive a rien de concluant! Par chance (ou pas) une fois cela s'est produit mais une seule fois, cela ne s'est jamais reproduit par la suite!
► Afficher le texte


_ j'ai mis une temporisation parce que j'ai l'impression que l'éxecution des taches est trop rapides 2 bip pour une fenêtre (si cela vous parle :( ).
_ et le programme ne se ferme pas a la fin le click ne s'effectue pas sur le bouton fermer!

liens ci dessous pour window info:
1_http://img153.imageshack.us/i/wininfo1.jpg/
2_http://img202.imageshack.us/i/wininfo2.jpg/
3_http://img844.imageshack.us/i/wininfo3.jpg/
4_http://img833.imageshack.us/i/wininfo4.jpg/
Avatar du membre
SrBelial
Niveau 7
Niveau 7
Messages : 335
Enregistré le : jeu. 22 juil. 2010 11:29
Localisation : 81 et 31
Status : Hors ligne

Re: [..] Bouton radio/checkbox

#2

Message par SrBelial »

Dans le cadre d'une automatisation le plus gros problème est le temps de réponse de l'application concernée ...
déjà une bonne chose : c'est très bien de tester avec WinWaitActive si la fenêtre est active, seulement il arrive que cela ne suffise pas ... (la fenêtre reste la même donc est considérée comme active et elle n'a pas encore fini de se réafficher après avoir cliqué sur suivant)

les timer c'est une bonne solution, facile, pratique, seulement le jour ou le pc rame il faudrait que les valeurs soient plus élevées pour parer à toute éventualité .... alors comment faire !

hé bien c'est très simple, vous choisissez le nouveau bonux et c'est le mimi, le mimi, le miracle !

trêve de rire, il va falloir apprendre à déterminer de façon sûre si ce que l'on veut faire est possible ou non ...
la procédure est la suivante :
vérifier avec des fonctions de manipulation des controles que les controles que l'on veut manipuler existent bel et bien.

pour moi le plus sage est d'utiliser la fonction suivante :

Code : Tout sélectionner

ControlCommand ( "title", "text", controlID, "command" [, "option"] )
en l'appelant 2 fois, une fois avec la "command" = "IsVisible"
et une autre fois avec la "command" = "IsEnabled"

et dans les deux cas il faut que ça retourne 1, sinon c'est soit que le controle recherché est invisible ou n'est pas disponible .... donc inutile d'essayer le traficoter ....

=> nouvelle problématique : comment identifier un ou deux controles qui me permettront de savoir si je suis au bon stade de mon installeur (par exemple)

la réponse est toute bête : Avec AutoIt Window Info Tool (Ctrl + F6) on inspecte la fenêtre, et on choisit un ou deux controles sur lesquels on fera les tests ... si on veut que nos tests soient fiables, il faut trouver un ou deux controles dont le couple de propriétés [CLASS:NomDeLClasse; INSTANCE:999] n'apparaisse ni dans la page précédente ni dans la page suivante ....

Ainsi on peut être SÛR et CERTAIN que si le controle existe et qu'il est visible et disponible, alors on est bien dans la bonne fenêtre et on peut manipuler ce qu'on veut ^___^

voila ....ça serait ma démarche !

Sinon autre point : pour décocher des checkbox un moyen efficace c'est de donner le focus au controle et d'envoyer un espace avec Send("{SPACE}"), pour certains controles, le ControlClick ne fonctionne bien que si on donne en plus des coordonnées x et y exprimées à partir du coin supérieur gauche du controle ...
certains controles ne réagissent aux clics que dans certaines zones ..... !!!!
.-SrB-. The One
  • NON ! AutoIt n'est PAS un langage réservé à la réalisation de bots !
  • OUI ! AutoIt est un langage à part entière !
  • Dans SciTE sélectionnez 1 mot puis F1
  • Don't want english doc ?? go to documentation française !! >>ICI<<
[/size]
Avatar du membre
GELDROC
Niveau 6
Niveau 6
Messages : 295
Enregistré le : sam. 10 oct. 2009 10:15
Status : Hors ligne

Re: [..] Bouton radio/checkbox

#3

Message par GELDROC »

pourquoi s'embêté avec des Control alors que la plupart des installation possède leur propre commande d'installation automatique et silencieuse

PS: Essaye nonduficher.exe /? ou help
maxounou
Niveau 1
Niveau 1
Messages : 4
Enregistré le : ven. 27 août 2010 15:00
Status : Hors ligne

Re: [..] Bouton radio/checkbox

#4

Message par maxounou »

Merci SrBelial pour tes informations, je testerais ça ce soir en rentrant du travail! je pensais effectivement à un problème de lenteur de mon pc lors des test, d'une part!
Et je ne savais pas que le nom de la fenêtre (toujours récurent dans ce cas) pouvais pose un problème pour le script!


Pour te répondre GELDROC, certaines applications installent des composants supplémentaires que je ne souhaites pas posséder tel que (pour le cas présent) winamp toolbar search et autre!

Sinon pour les autres applications je les ai créer avec leur mode silencieux /S ou /VerySilent.
Avatar du membre
SrBelial
Niveau 7
Niveau 7
Messages : 335
Enregistré le : jeu. 22 juil. 2010 11:29
Localisation : 81 et 31
Status : Hors ligne

Re: [..] Bouton radio/checkbox

#5

Message par SrBelial »

de rien ^__^

lorsque tu auras réussi à faire ce que tu veux pense à marquer le sujet comme résolu !
(balise [R] dans le titre du premier message)
.-SrB-. The One
  • NON ! AutoIt n'est PAS un langage réservé à la réalisation de bots !
  • OUI ! AutoIt est un langage à part entière !
  • Dans SciTE sélectionnez 1 mot puis F1
  • Don't want english doc ?? go to documentation française !! >>ICI<<
[/size]
Avatar du membre
SrBelial
Niveau 7
Niveau 7
Messages : 335
Enregistré le : jeu. 22 juil. 2010 11:29
Localisation : 81 et 31
Status : Hors ligne

Re: [..] Bouton radio/checkbox

#6

Message par SrBelial »

Pas de réponse .... ça veut dire que ça marche ? ...

je passe en [R]
.-SrB-. The One
  • NON ! AutoIt n'est PAS un langage réservé à la réalisation de bots !
  • OUI ! AutoIt est un langage à part entière !
  • Dans SciTE sélectionnez 1 mot puis F1
  • Don't want english doc ?? go to documentation française !! >>ICI<<
[/size]
maxounou
Niveau 1
Niveau 1
Messages : 4
Enregistré le : ven. 27 août 2010 15:00
Status : Hors ligne

Re: [R] Bouton radio/checkbox

#7

Message par maxounou »

non, pas tout a fait, j'ai pas eu beaucoup de temps pour m'en occuper!

alors j'ai regardé et les fenêtres sont toutes actives.
j'ai essayé d'une manière différente et d'après mes différents tests, je crois que le fait d'intervertir certaines fonctions tel que le control click et une autre permet de cocher et décher les boutons, seulement je manque encore de précision dans le programme!

Voila le programme mis a jour avec encore quelques disfonctionnements!

Code : Tout sélectionner

[spoiler=];1
Run ("winamp558_full.exe")
WinWaitActive ("Langue de l'installation")
ControlCommand ("Installation de Winamp", "", "[Class:ComboBox;Instance:1]", "SelectString", 'Français')
ControlClick ("Français","","OK")
Send ("{enter}")

;2
WinWait ("Installation de Winamp")
WinWaitActive ("Installation de Winamp")
Send ("!S")

;3
WinWait ("Installation de Winamp")
WinWaitActive ("Installation de Winamp")
Send ("!c")

;4
WinWait ("Installation de Winamp")
WinWaitActive ("Installation de Winamp")
Send ("!S")
;5
WinWait ("Installation de Winamp")
WinWaitActive ("Installation de Winamp")
Send ("{up}")
Send ("{up}")
Send ("{up}")
Send ("{up}")
WinWaitActive ("Installation de Winamp")
Send ("!S")

[b][i]WinWaitActive ("Installation de Winamp") ; ne fonctionne pas 
ControlClick ("installation de Winamp","",449,441)
ControlClick ("installation de Winamp","",501,460)
Send ("!S")[/i][/b]

[b]WinWaitActive ("Installation de Winamp")   ;fonctionne parfaitement
ControlClick( "Installation de Winamp", "",1205)
ControlClick( "Installation de Winamp","",1209 )
Send ("!I")[/b]

;[b]end program ; il y a un chekbox a cocher mais je le laisse de coté
WinWaitActive("installation de Winamp", "Installation terminée"), et la fenètre ne se ferme pas!
Send("!F")[/b]

; Attend que Winzip ce charge, puis le ferme.
WinWaitActive("Winamp")
WinClose("Winamp")[/spoiler]

par contre la séquence de la fin ne fonctionne pas je ne sais pourquoi! le programme refuse de fermer la fenêtre d'installation!

Une question supplémentaire:
Dans une de tes explications précédentes tu m'as indiqué:
pour décocher des checkbox un moyen efficace c'est de donner le focus au controle et d'envoyer un espace avec Send("{SPACE}"), pour certains controles, le ControlClick ne fonctionne bien que si on donne en plus des coordonnées x et y exprimées à partir du coin supérieur gauche du controle ...

quelle type de ligne de commande cela donne t il, et les coordonnées X,Y du coin supérieur gauche sont indiqués ou exactement dans la fenêtre window info?

De plus je n'ai pas trop compris l'utilisation des commandes suivantes:
en l'appelant 2 fois, une fois avec la "command" = "IsVisible"
et une autre fois avec la "command" = "IsEnabled"


Merci
Avatar du membre
SrBelial
Niveau 7
Niveau 7
Messages : 335
Enregistré le : jeu. 22 juil. 2010 11:29
Localisation : 81 et 31
Status : Hors ligne

Re: [R] Bouton radio/checkbox

#8

Message par SrBelial »

question supplémentaire 1 :
Le controlClick devrait fonctionner ainsi : (à toi de mettre les bons paramètres)

Code : Tout sélectionner

ControlClick("[CLASS:ClasseDeLaFenetre]","", "[CLASS:ClasseDuControl; INSTANCE:1]", "left", 1, 10, 10)
Je passe sur les 3 premiers paramètres, c'est chaque fois les même pour toutes les fonctions de manipulation des controles/fenêtres.
le 4eme : "left" si clic gauche / "right" si clic droit / "middle" si clic molette
le 5eme : 1, 2 ou 3 ou plus suivant le nombre de clics voulus
le 6eme et 7eme : les coordonnées cliquées DANS le controle .... dans le cas d'un bouton, ça cliquera comme si on avait placé la souris à 10 pixels à droite et 10 pixels en dessous du premier coin du controle ...
par défaut si ces paramètres ne sont pas utilisés, la fonction clique AU MILIEU du controle ...

question supplémentaire 2 :
hé bien c'est très simple il fallait remplacer le paramètre "command" par les valeurs que j'avais donné ensuite ...
ça donnerait quelque chose comme ça :

Code : Tout sélectionner

While ControlCommand ( "title", "text", "controlID", "IsVisible") + ControlCommand ( "title", "text", "controlID", "IsEnabled") <> 2
    sleep(500)
Wend
En gros ça permet de rester dans la boucle tant que le controle n'est pas visible ou pas utilisable ...
.-SrB-. The One
  • NON ! AutoIt n'est PAS un langage réservé à la réalisation de bots !
  • OUI ! AutoIt est un langage à part entière !
  • Dans SciTE sélectionnez 1 mot puis F1
  • Don't want english doc ?? go to documentation française !! >>ICI<<
[/size]
Répondre