imacros javascript循环通过csv

时间:2013-02-20 23:44:03

标签: javascript imacros

我的1first.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=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}}

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

它必须循环这个csv大约50次。

然后我需要加载另一个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}}

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

我需要多次遍历csv。 等等大约80次。

是否可以指定每个csv文件要经过多少csv行? 或者也许可以说循环通过100行,但是如果你遇到EOF(错误代码-951)然后停止运行这个宏并移动到下一个

可以逐行设置数据源

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}}

但如果还有其他方法,我宁愿不逐行浏览文件。

2 个答案:

答案 0 :(得分:3)

万一有人需要更详细的答案,这就是我发现的:

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);
}

通过这种方式,您可以执行一次登录部分,然后根据需要循环遍历csv文件。

WAIT SECONDS = 5只是占位符,让我有时间暂停或停止宏运行。

如果有人能改进我的解决方案,我会非常感激。 编辑: 我忘了添加。将其保存为yournewjsfile.js并单击“播放”,就像对任何其他iim文件一样

答案 1 :(得分:1)

所有这些只能使用javascript或类似方法完成。您可以在循环中定义部分代码并运行不同的宏并跟踪错误。

运行不同的脚本;

iimPlay("Test.iim");

循环代码:

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