Fonction aléatoire dans Imacros

Signaler
Messages postés
3
Date d'inscription
jeudi 11 juin 2009
Statut
Membre
Dernière intervention
11 juin 2009
-
Messages postés
3
Date d'inscription
jeudi 11 juin 2009
Statut
Membre
Dernière intervention
11 juin 2009
-
Bonjour,
j'ai créé un macro pour internet, mais j'aimerais faire en sorte qu'une des case "CONTENT=" ai une variable aléatoire, de sorte qu'à chaque fois que je lance la macro, le contenu soit différent...

J'avais trouvé un script en javascript pour créé une fonction aléatoire :








<script language="javascript">
/*
*/
alphabet = new Array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9");
caracteres = 8;
// Entrez ci-dessus le nombre de caractères composant le mot de passe

var longueur = alphabet.length;
function generate()
{
document.generateur.affichage.value = '';
for(i = 0; i < caracteres; i++)
{
y = Math.floor(Math.random()*2);
x = Math.floor(Math.random()*longueur);
res = alphabet[x];
    if(y == 0)
    {
    res2 = res.toUpperCase();
    }
    else
    {
    res2 = res.toLowerCase();
    }
document.generateur.affichage.value = document.generateur.affichage.value+res2;
}
}
</script>









<form name="generateur">

 
</form>





Le problème est qu'il créé la variable dans une case (car c'est un script au départ pour une page web) et moi je voudrais qu'il l'affecte à un contenu "CONTENT=", bien sur si vous connaissez plus simple je suis preneur!!

Merci d'avances de vos réponses, je reste près de mon ordi pour vous donnez plus de précisions!!

5 réponses

Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
Bonjour,

>>j'ai créé un macro pour internet,
ah bon ? ça existe ça ? sans langage ?

>>
J'avais trouvé un script en javascript
ah... tu causes javascript !
ça tombe bien, on est sur le forum adéquat

en javascript, la fonction "aléatoire" c'est

Math.random() qui<title>SELFHTML: JavaScript / Référence objet / Mat</title> retourne un nombre aléatoire entre 0 et 1.
                         ( un nombre décimal, par
exemple 0.3834417857195922 )
après, de ce résultat, tu en fais ce que tu veux
un petit calcul te permet d'en fixer le mini et le maxi
tu peux t'en servir comme index d'une table.....

Cordialement
Messages postés
3
Date d'inscription
jeudi 11 juin 2009
Statut
Membre
Dernière intervention
11 juin 2009

>>

j'ai créé un macro pour internet,
ah bon ? ça existe ça ? sans langage ?



Je l'ai écris dans le titre mais j'ai oublié de préciser que je l'avais créé avec Imacros...



>>



J'avais trouvé un script en javascript
ah... tu causes javascript !


ça tombe bien, on est sur le forum adéquat



C'est pour ça que je m'y suis adressé

J'essayerais avec random un peu plus tard, si ma fonction ne marche pas... Car le problème, c'est que je ne connais pas le langage javascript... Donc j'improvise un peu avec ce que je trouve...

alphabet = new Array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9");
caracteres = 8;
// Entrez ci-dessus le nombre de caractères composant le mot de passe

var longueur = alphabet.length;
function generate()
{
document.j_username.affichage.value = '';
for(i = 0; i < caracteres; i++)
{
y = Math.floor(Math.random()*2);
x = Math.floor(Math.random()*longueur);
res = alphabet[x];
    if(y == 0)
    {
    res2 = res.toUpperCase();
    }
    else
    {
    res2 = res.toLowerCase();
    }
document.j_username.affichage.value = document.j_username.affichage.value+res2;
}
}
iimSet ("menu", XXXX );
iimPlay("mamacro.iim");

Et dans mamacro.iim :

CONTENT={{menu}}


Ce qui fait que j'appelle la variable "menu" et ce que j'espérerais avoir c'est mon code XXXX généré par le script plus haut... Donc j'aimerais savoir ce qu'il faudrait mettre à la place de XXXX pour que mon script créé un mot de passe avec les caractères que je lui ai donnés à cet endroit et qui serait renvoyé à ma case CONTENT...

Merci d'avance de vos réponses!!
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
>>J'essayerais avec random un peu plus tard, si ma fonction ne marche pas.
bah... ta fonction s'en sert !
et utilise le résultat sur un array.

>>iimSet ("menu", XXXX );
et comment on te répond ? c'est quoi iimSet ?

>>ce que j'espérerais avoir c'est mon code XXXX généré par le script plus haut
ben ... renvoie le résultat dans la fonction,
tu en feras ce que tu veux !

au lieu de
document.j_username.affichage.value = document.j_username.affichage.value+res2;
fait return (res2);

et à l'appel :
là où tu veux mettre le résultat, variable, élément.html... = generate();
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
je me suis assez mal exprimé !
document.j_username.affichage.value = document.j_username.affichage.value+res2;

ça ajoute des caractères dans .j_username.affichage
ajoute dans une variable et en fin, retorune cette variable

function generate()
{    var res,x,y,ret="";
    for( var i = 0; i < caracteres; i++)
    {    y = Math.floor(Math.random()*2);
        x = Math.floor(Math.random()*longueur);
        res = alphabet[x];
        if (y == 0)
                {    res = res.toUpperCase();    }
        else    {    res2 = res.toLowerCase();    }
        ret+=res2;
    }
    return ret;
}
par exemple ( pas testé ! )
Messages postés
3
Date d'inscription
jeudi 11 juin 2009
Statut
Membre
Dernière intervention
11 juin 2009

Comme je l'ai déjà dit, je m'y connais pas trop, mais en ce qui concerne les fonctions "iimXXX", ce sont des fonctions de macro, exemple (c'est un exemple que le constructeur fournis) :

SI-Run-Test.js :

//imacros-js:showsteps no

// With the imacros-js:showsteps command you can tell iMacros to show or
// not show the Javascript commands during the execution.
// Showing steps is useful for debugging, but adds an artificial delay to each step.

// This command overrides the global settings in the Option Dialog.

// Note that the command is *inside* a comment "//", since it is no
// official Javascript command and is used in the iMacros JS interpreter only.

// There can be only one such command per JS file and it affects the complete file.

var i, s;

iimDisplay ("Test script running");
iimSet ("NAME", "T. Test");
iimSet ("MENU", "Pizza");
iimSet ("DRINK", "water");
iimSet ("DESSERT", "Fruits");
iimSet ("IS_CUSTOMER", "Yes");
iimSet ("PASSWORD", "abcabc");
iimSet ("REMARKS", "Form filled");
iimSet ("WAIT", "3");

i = iimPlay("SI-Test-Macro1",60);

/* Check for error */
if (i < 0) {
    s = iimGetLastError();
    alert (s);
};

/* Submission completed, now check if the result page is ok */
/* We do this by checking if the ordered menu is indeed "Pizza"  */

iimDisplay ("Verify form output");
i = iimPlay("SI-Test-Macro2",60);

if (i < 0) {
    s = iimGetLastError();
    alert (s);
};

s = iimGetLastExtract();

if (s.indexOf ("Pizza") != -1)
    iimDisplay ("Test OK");
else
    iimDisplay ("Problem detected :"+s);

SI-Test-Macro1.iim

VERSION BUILD =200003
TAB T=1    
TAB CLOSEALLOTHERS 
URL GOTO=http://www.iopus.com/imacros/demo/v6/f1/form.asp 
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:TestForm ATTR=NAME:Name CONTENT={{NAME}}
'
'$ indicates the use of text instead of the index# for the select box selection
TAG POS=1 TYPE=SELECT FORM=NAME:TestForm ATTR=NAME:main CONTENT=${{MENU}}
TAG POS=1 TYPE=SELECT FORM=NAME:TestForm ATTR=NAME:drink CONTENT=${{DRINK}}
TAG POS=1 TYPE=INPUT:CHECKBOX FORM=NAME:TestForm ATTR=NAME:C7&&VALUE:ON CONTENT=YES
TAG POS=1 TYPE=SELECT FORM=NAME:TestForm ATTR=NAME:dessert CONTENT=${{DESSERT}}
TAG POS=1 TYPE=INPUT:RADIO FORM=NAME:TestForm ATTR=NAME:Customer CONTENT={{CUSTOMER}}
TAG POS=1 TYPE=INPUT:PASSWORD FORM=NAME:TestForm ATTR=NAME:Reg_code CONTENT={{PASSWORD}}
TAG POS=1 TYPE=TEXTAREA FORM=NAME:TestForm ATTR=NAME:Remarks CONTENT={{REMARKS}}
TAG POS=1 TYPE=INPUT:SUBMIT FORM=NAME:TestForm ATTR=NAME:SendButton&&VALUE:Click<SP>to<SP>order<SP>now 


Ce qui fait qu'en lançant le fichier javascript (le premier) ce qui fait que les variables dans "CONTENT" sont appelés du fichier en javascript par la ligne :

iimSet ("DESSERT", "Fruits");

Et donc remplace dans le deuxième fichier la valeur "DESSERT" par "Fruits"
.
Donc j'avais tenté de faire
:


iimSet ("MENU", "generate();");


Ce qui n'a évidemment pas marché... De même quand je met generate(); dans l'objet "CONTENT ="

Voilà, sachant que les deux écritures ne peuvent cohabiter dans un seul fichier (le fichier javascript ne comprends pas les instruction Imacros et inversement)

Merci d'avance de vos (ta!!) réponses.