imacros javascript在csv中循环

imacros javascript loops through csv

本文关键字:循环 csv javascript imacros      更新时间:2023-09-26

我的1first.im文件如下所示:

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:2秒.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}}

设置!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}}

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

为了防止有人需要更详细的答案,我发现了以下内容:

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只是一个占位符,用于给我暂停或停止宏运行的时间。

如果有人能改进我的解决方案,我将不胜感激。编辑:我忘了加。将其保存为您的newjsfile.js,然后单击播放,就像您对任何其他iim文件所做的那样

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

运行不同的脚本;

iimPlay("Test.iim");

循环代码:

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