[..] $Variable = à toutes les valeurs possibles !!?

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
lianavan
Niveau 3
Niveau 3
Messages : 37
Enregistré le : ven. 10 sept. 2010 20:44
Status : Hors ligne

[..] $Variable = à toutes les valeurs possibles !!?

#1

Message par lianavan »

Salut,

Est ce que c'est possible d'utiliser _IEFormGetObjByName, pour qu'il cible tous les formulaires de la page, et non pas un seul formulaire du nom donné ?

C'est pour le script très connu que voici, pour remplir des formulaires :
► Afficher le texte
Merci.
lianavan
Niveau 3
Niveau 3
Messages : 37
Enregistré le : ven. 10 sept. 2010 20:44
Status : Hors ligne

Re: [..] $Variable = à toutes les valeurs possibles !!?

#2

Message par lianavan »

Je pense qu'avec cette modification du titre, cela sera beaucoup plus simple à comprendre.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] $Variable = à toutes les valeurs possibles !!?

#3

Message par Tlem »

Sans même prendre le temps d'ouvrir le spoiler de votre message, la réponse est non.

Une variable standard ne peut avoir qu'une seule valeur.
Si vous voulez stocker plusieurs valeurs alors vous devez utiliser une variable tableau. Dans ce cas, chaque élément du tableau aura une valeur qui lui est propre, par contre pour accéder à cette valeur, il faut nommer la variable explicitement ( $Variable[0] pour la valeur 1, $Variable[1] pour la valeur 2, etc ...). Pour votre code, cela implique une boucle de lecture des différentes variables.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
lianavan
Niveau 3
Niveau 3
Messages : 37
Enregistré le : ven. 10 sept. 2010 20:44
Status : Hors ligne

Re: [..] $Variable = à toutes les valeurs possibles !!?

#4

Message par lianavan »

Merci pour votre réponse j'ai encore appris quelque chose, mais je me rends compte qu'il faut vraiment être intelligible sur ce forum.

Sans parler de variable, n'existe pas une valeur, un symbole, qui signifie "tout" ?
De manière plus indirecte, est il possible de faire en sorte que la fonction _IEFormGetObjByName cible tous les cas possibles ?

Edit : peut être est-il possible d'introduire une inconnue dans la variable ?
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] $Variable = à toutes les valeurs possibles !!?

#5

Message par Iste »

Vous prenez le problème a l'envers en fait.
Il ne faut pas chercher comme dire a _IEFormGetObjByName() de prend "tout", mais trouver une autre fonction qui le fait

Si _IEFormGetObjByName() ne marche que pour une valeur, c'est car il a été développé comme ca.
Donc soit vous adapter votre code, soit vous changez de fonction.

Dans ce cas précis, je pense qu'il faudra trouver uen autre fonction.

Et peut etre aussi commencer par des script moins complexes
Signez ici
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] $Variable = à toutes les valeurs possibles !!?

#6

Message par Tlem »

Iste vous a résumé les faits.
Si une fonction ne fait pas ce que vous attendez d'elle, alors créez en une qui en soit capable.
lianavan a écrit :Sans parler de variable, n'existe pas une valeur, un symbole, qui signifie "tout" ?
Mais tout quoi ?
Vous savez ce que vous cherchez ?
Des chaines, des nombres, des objets, etc ...
Le symbole générique en informatique est l'astérisque, mais en la circonstance, il n'est pas adapté à la fonction.
lianavan a écrit :De manière plus indirecte, est il possible de faire en sorte que la fonction _IEFormGetObjByName cible tous les cas possibles ?
Vous auriez du commencé directement par cette question.
La réponse est non.
lianavan a écrit :Edit : peut être est-il possible d'introduire une inconnue dans la variable ?
Ha !!! Vous persistez.
Il n'est pas facile à une fonction de chercher quelque chose d'inconnu ... :lol:
Essayez donc de savoir à quelle profondeur vous avez de l'eau pour votre puis. :roll:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
lianavan
Niveau 3
Niveau 3
Messages : 37
Enregistré le : ven. 10 sept. 2010 20:44
Status : Hors ligne

Re: [..] $Variable = à toutes les valeurs possibles !!?

#7

Message par lianavan »

Il ne faut pas chercher comme dire a _IEFormGetObjByName() de prend "tout", mais trouver une autre fonction qui le fait
Justement je me demandais si je n'allais pas devoir créer une fonction qui recherche toutes les possibilités en regex...
Mais tout quoi ?
Vous savez ce que vous cherchez ?
Des chaines, des nombres, des objets, etc ...
Le symbole générique en informatique est l'astérisque, mais en la circonstance, il n'est pas adapté à la fonction.
Je recherche tous les noms possible, donc "tout" = tous les caractères possibles entre 2 et 10 caractères par exemple...
Vous auriez du commencé directement par cette question.
La réponse est non.
C'est noté.

Dans ce cas ce que je cherche, c'est une fonction qui cherche tous les forms présents sur la page, et tous les querys dans ces forms...
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] $Variable = à toutes les valeurs possibles !!?

#8

Message par Tlem »

lianavan a écrit :Dans ce cas ce que je cherche, c'est une fonction qui cherche tous les forms présents sur la page, et tous les querys dans ces forms...
:cry:

Comme je ne sais plus vraiment comment le dire, je vais essayé comme ceci :
This function does not exist.
Diese Funktion existiert nicht.
Questa funzione non esiste.
Esta función no existe.
هذه المهمة لم تكن موجودة.
这一职能并不存在。
הפונקציה הזאת לא קיימת.
この機能は存在しません。
Esta função não existe.
Aceasta functie nu exista.
Эта функция не существует.

Après, je n'ai guère de solution à vous proposer en dehors de la poudre verte => http://www.poudreverte.org/
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] $Variable = à toutes les valeurs possibles !!?

#9

Message par sylvanie »

lianavan a écrit :
Je recherche tous les noms possible, donc "tout" = tous les caractères possibles entre 2 et 10 caractères par exemple...

Vous pouvez toujours tenter une construction par boucles imbriquées comme suggéré dans votre autre post.
Mais attention, un test exhaustif avec toutes les combinaisons, c'est ce qu'on appelle du brute force. Si vous faites 26 * 26 * 26 connexions (juste pour tester a -> zzz) vous allez être considéré comme un attaquant vis à vis des admins du serveur, puisqu'avec cette méthode il n'y a pas de distingo entre attaque et "petit script gentil", ça peut occasionner un déni de service :evil:
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] $Variable = à toutes les valeurs possibles !!?

#10

Message par sylvanie »

autre élément de réponse (indépendant de mon dernier post).

Vous pouvez analyser le code source pour localiser les formulaires quand ces derniers sont nommés (ce n'est pas le cas à chaque fois)

Dans l'exple Autoit on voit une connection sur google qui pointe vers un formulaire nommé "f".
Voici un script permettant de localiser le nom des formulaires construits avec l'information name=xxxxx :
► Afficher le texte
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
lianavan
Niveau 3
Niveau 3
Messages : 37
Enregistré le : ven. 10 sept. 2010 20:44
Status : Hors ligne

Re: [..] $Variable = à toutes les valeurs possibles !!?

#11

Message par lianavan »

Je vous remercie pour ces informations, je vais choisir la 2eme mais vous vous en doutiez.

J'ai compris une partie du code :

Code : Tout sélectionner

[b][color=#008000]$tab_form=StringRegExp($code_page,[/color]'[color=#FF0000]<(?i)form.+name[/color]=([color=#800080][^\s]+[/color])',[color=#BF4080]3[/color])[/b]
Signifie tous les noms sans espace en regex.
Le nombre de cas traités dans l'array.
Je ne comprends pas ce que cela veut exactement dire.

Cela fonctionne pour google.com, mais si je vais par exemple sur http://www.google.fr/language_tools?hl=fr, il dysfonctionne et me trouve
[0]|hl></FORM>
[1]|ie>
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] $Variable = à toutes les valeurs possibles !!?

#12

Message par sylvanie »

la première interprétation est bonne, pour ce qui concerne [\s]+

par contre , 3 ne signifie pas trois cas à traîté, mais indique à la fonction de générer en retours un tableau constitué uniquement des sélection () demandées dans l'expression (cf aide)

Maintenant réanalysons l'expression

<(?i)form.+name=([^\s]+)'

Je détecte tout ce qui comporte <form de façon non case sensitif , c'est ça le (?i), du coups ça couvre aussi bien <form que <FORM

.+name= Je continue ma détection par n'importe quel caractères (plusieurs) suivis de l'expression name=

et enfin ([^s]+) je sélectionne () tous les caratères concécutifs ne comportant pas d'espace


donc si dans la page on a

<form totototo ffff2222 name=bingo
....
<FORM totitit blablalb name=tada

ça va retourner un tableau comportant bingo et tada
maintenant ceci reste vrai pour la page que j'ai éditer. Sur la votre il faut adapter l'expression régulière.
Comme je n'ai pas beaucoups de temps ce week end, on va dire que ce sera un bon exercice pour lundi ^^
Bonne continuation
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
lianavan
Niveau 3
Niveau 3
Messages : 37
Enregistré le : ven. 10 sept. 2010 20:44
Status : Hors ligne

Re: [..] $Variable = à toutes les valeurs possibles !!?

#13

Message par lianavan »

Merci pour toutes ces informations. Comme les expressions régulières me dépassent pour le moment, je vais chercher une doc et travailler sur la suite de mon script si je n'y arrive pas (dans cet ordre).
lianavan
Niveau 3
Niveau 3
Messages : 37
Enregistré le : ven. 10 sept. 2010 20:44
Status : Hors ligne

Re: [..] $Variable = à toutes les valeurs possibles !!?

#14

Message par lianavan »

J'ai lu http://www.autoitscript.fr/autoit3/docs ... regexp.htm

Ce qui fait que je ne comprends pas comment

Code : Tout sélectionner

$tab_form=StringRegExp($code_page,'<(?i)form.+name=([^\s]+)',3)
Donne uniquement le nom du form, vous n'avez pas exclu (?: (?i)form), donc il devrait retourner FORM NAME = blabla normalement...

Résolu : A quoi correspond le "." (edit : Ah c'est un Joker) après form, et le "+" (edit : "ba+c trouve "bac", ou "baac", "baaac", etc. mais pas "bc"" ni "boc".") après l'expression régulière ? J'en suis là. Doc suivante.

Edit : pour vous http://www.ultrapico.com/Expresso.htm

Edit : j'ai fait de petites modifs au pattern pour commencer :

Code : Tout sélectionner

<(?i)form.+name.[color=#FF0000]+[/color]=[color=#FF0000] ?[/color]([^\s]+)
un espace avant le "?"

Edit : Cela ne fonctionne pas, encore moins même. Je vais devoir comparer les deux codes d'exemple, Google et Google langue.
Edit : je change d'exemple de site à double formulaire... Google langue c'est le merdier. J'en déduis que beaucoup de sites sont sécurisés contre des petites recherches de formulaire, mais pas google.com car il partage son moteur de recherche.
Edit : je me rends compte que beaucoup de form n'ont pas de name, cela peut ne pas influencer sur mon script, mais j'aimerais vraiment qu'il possède une fonction pour trouver tous les query d'un form, quel qu'il soit.
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] $Variable = à toutes les valeurs possibles !!?

#15

Message par sylvanie »

Bonsoir.
Rapidement avant de repartir ... pour le dernier point, effectivement certain formulaire n'ont pas de nom, ce qui n'est pas pratique, je l'admet volontier ...
pour vos travaux personnels sur les regexp, pensez également à * qui veut dire 0 ou plusieurs
ainsi name.*= va aussi bien matcher name= (ce qui n'est pas le cas de name.+=) que name =

pour l'histoire de pourquoi seul le nom du formulaire remonte dans le tableau et pas toute l'expression, c'est la conséquense du mode "3" avec la sélection ()
passez le mode à 2 ou 4 vous verrez les différentes façon de travail de stringregexp
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] $Variable = à toutes les valeurs possibles !!?

#16

Message par sylvanie »

Rebonjour
Après examen du code de la page Google translate, je me suis rendu compte que le soucis viens du fait qu'on enchaîne les répétitions du genre <...name=...><....name=...> .... sur la même ligne

donc pour palier à ceci :

$tab_form=StringRegExp($code_page,'<FORM[^>]+name=([^\s>]+)',3)

au lieu de
$tab_form=StringRegExp($code_page,'<FORM[.]+name=([^\s>]+)',3)

ainsi on s'arrête à la première iterration de name=

ceci dit le problème des formulaires sans nom demeure
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
lianavan
Niveau 3
Niveau 3
Messages : 37
Enregistré le : ven. 10 sept. 2010 20:44
Status : Hors ligne

Re: [..] $Variable = à toutes les valeurs possibles !!?

#17

Message par lianavan »

C'est excellent, cela fonctionne bien sur tous les sites que j'ai testé ! Vous avez bien vu.

Pour retrouver les formulaires sans nom, peut être que c'est possible en passant par leur querys qui eux ont des noms ?
Répondre