admin管理员组

文章数量:1404768

My 1first.iim file looks like this:

VERSION BUILD=7601105 RECORDER=FX
URL GOTO=https:...logout 'just in case 
URL GOTO=https:...login 'go to login
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:loginform ATTR=NAME:username CONTENT=user1
TAG POS=1 TYPE=INPUT:PASSWORD FORM=NAME:loginform ATTR=NAME:passwd CONTENT=password1
TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:loginform ATTR=ID:loginform_submit

SET !DATASOURCE file1.csv
SET !DATASOURCE_COLUMNS 13
SET !DATASOURCE_LINE {{!LOOP}}

URL GOTO={{!COL1}}
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:form ATTR=NAME:field1 CONTENT={{!COL2}}
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:form ATTR=NAME:field2 CONTENT={{!COL3}}

............

It has to loop through this csv some 50 times.

Then I need to load another iim: 2second.iim

VERSION BUILD=7601105 RECORDER=FX
URL GOTO=https:...logout 'just in case 
URL GOTO=https:...login 'go to login
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:loginform ATTR=NAME:username CONTENT=user2
TAG POS=1 TYPE=INPUT:PASSWORD FORM=NAME:loginform ATTR=NAME:passwd CONTENT=password2
TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:loginform ATTR=ID:loginform_submit

SET !DATASOURCE file2.csv
SET !DATASOURCE_COLUMNS 13
SET !DATASOURCE_LINE {{!LOOP}}

URL GOTO={{!COL1}}
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:form ATTR=NAME:field1 CONTENT={{!COL2}}
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:form ATTR=NAME:field2 CONTENT={{!COL3}}

............

And again I need to loop through the csv a number of times. And so on about 80 more times.

Is it possible to specify how many csv rows to go through from each csv file? Or maybe it would be possible to say loop through 100 rows, but if you run into EOF (error code -951) then stop running this macro and move to the next

It is possible to set the datasource line by line

SET !DATASOURCE file1.csv
SET !DATASOURCE_COLUMNS 13

SET !DATASOURCE_LINE 1

URL GOTO={{!COL1}}
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:form ATTR=NAME:field1 CONTENT={{!COL2}}
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:form ATTR=NAME:field2 CONTENT={{!COL3}}

SET !DATASOURCE_LINE 2

URL GOTO={{!COL1}}
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:form ATTR=NAME:field1 CONTENT={{!COL2}}
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:form ATTR=NAME:field2 CONTENT={{!COL3}}

SET !DATASOURCE_LINE 3

URL GOTO={{!COL1}}
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:form ATTR=NAME:field1 CONTENT={{!COL2}}
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:form ATTR=NAME:field2 CONTENT={{!COL3}}

......... SET !DATASOURCE_LINE 30

URL GOTO={{!COL1}}
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:form ATTR=NAME:field1 CONTENT={{!COL2}}
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:form ATTR=NAME:field2 CONTENT={{!COL3}}

But if there is another way, I'd rather not go through the file line by line.

My 1first.iim file looks like this:

VERSION BUILD=7601105 RECORDER=FX
URL GOTO=https:...logout 'just in case 
URL GOTO=https:...login 'go to login
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:loginform ATTR=NAME:username CONTENT=user1
TAG POS=1 TYPE=INPUT:PASSWORD FORM=NAME:loginform ATTR=NAME:passwd CONTENT=password1
TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:loginform ATTR=ID:loginform_submit

SET !DATASOURCE file1.csv
SET !DATASOURCE_COLUMNS 13
SET !DATASOURCE_LINE {{!LOOP}}

URL GOTO={{!COL1}}
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:form ATTR=NAME:field1 CONTENT={{!COL2}}
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:form ATTR=NAME:field2 CONTENT={{!COL3}}

............

It has to loop through this csv some 50 times.

Then I need to load another iim: 2second.iim

VERSION BUILD=7601105 RECORDER=FX
URL GOTO=https:...logout 'just in case 
URL GOTO=https:...login 'go to login
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:loginform ATTR=NAME:username CONTENT=user2
TAG POS=1 TYPE=INPUT:PASSWORD FORM=NAME:loginform ATTR=NAME:passwd CONTENT=password2
TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:loginform ATTR=ID:loginform_submit

SET !DATASOURCE file2.csv
SET !DATASOURCE_COLUMNS 13
SET !DATASOURCE_LINE {{!LOOP}}

URL GOTO={{!COL1}}
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:form ATTR=NAME:field1 CONTENT={{!COL2}}
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:form ATTR=NAME:field2 CONTENT={{!COL3}}

............

And again I need to loop through the csv a number of times. And so on about 80 more times.

Is it possible to specify how many csv rows to go through from each csv file? Or maybe it would be possible to say loop through 100 rows, but if you run into EOF (error code -951) then stop running this macro and move to the next

It is possible to set the datasource line by line

SET !DATASOURCE file1.csv
SET !DATASOURCE_COLUMNS 13

SET !DATASOURCE_LINE 1

URL GOTO={{!COL1}}
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:form ATTR=NAME:field1 CONTENT={{!COL2}}
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:form ATTR=NAME:field2 CONTENT={{!COL3}}

SET !DATASOURCE_LINE 2

URL GOTO={{!COL1}}
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:form ATTR=NAME:field1 CONTENT={{!COL2}}
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:form ATTR=NAME:field2 CONTENT={{!COL3}}

SET !DATASOURCE_LINE 3

URL GOTO={{!COL1}}
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:form ATTR=NAME:field1 CONTENT={{!COL2}}
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:form ATTR=NAME:field2 CONTENT={{!COL3}}

......... SET !DATASOURCE_LINE 30

URL GOTO={{!COL1}}
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:form ATTR=NAME:field1 CONTENT={{!COL2}}
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:form ATTR=NAME:field2 CONTENT={{!COL3}}

But if there is another way, I'd rather not go through the file line by line.

Share Improve this question edited Feb 21, 2013 at 1:07 flish asked Feb 20, 2013 at 23:44 flishflish 5961 gold badge6 silver badges18 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 3

Just in case someone will ever need a more detailed answer, this is what I've found:

var unu;
var doi;
    unu =  "CODE:";
    unu  +=  "VERSION BUILD=7601105 RECORDER=FX" + "\n";
    unu  +=  "URL GOTO=...logout" + "\n";
    unu  +=  "URL GOTO=...login" + "\n";
    unu  +=  "TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:loginform ATTR=NAME:username CONTENT=user" + "\n";
    unu +=  "TAG POS=1 TYPE=INPUT:PASSWORD FORM=NAME:loginform ATTR=NAME:passwd CONTENT=password" + "\n";
    unu +=  "TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:loginform ATTR=ID:loginform_submit" + "\n";

    doi =  "CODE:";
    doi +=  "SET !DATASOURCE file1.csv" + "\n";
    doi +=  "SET !DATASOURCE_COLUMNS 3" + "\n";


    doi +=  "SET !DATASOURCE_LINE {{i}}" + "\n";
    doi +=  "URL GOTO={{!COL2}}" + "\n";
    doi +=  "TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:formular ATTR=NAME:field1 CONTENT={{!COL1}}" + "\n";
    doi +=  "TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:formular ATTR=ID:field2 CONTENT={{!COL3}}" + "\n";
    doi +=  "WAIT SECONDS = 5" + "\n";

iimPlay(unu);
for(i=1;i<4;i++){
iimSet("i",i);
iimPlay(doi);
}

This way you do the login part once, then it loops through the csv file as many times as you need it to.

The WAIT SECONDS = 5 is just a placeholder to give me time to either pause or stop the macro from running.

If anybody can improve on my solution I would appreciate that very much. Edit: I forgot to add. Save this as yournewjsfile.js and click play just like you do for any other iim file

all this can be done only using javascript or similar. you can define part of code in the loop and run different macros and track errors.

running different script;

iimPlay("Test.iim");

looping code:

for(i=1;i<max_loop number){
your_code_here
}

本文标签: imacros javascript loops through csvStack Overflow