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 badges2 Answers
Reset to default 3Just 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
}