iMacros JavaScript循环遍历CSV。

3

我的第一个.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}}

需要循环50次遍历这个csv文件。

接着我需要加载另一个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文件中遍历多少行? 或者也许可以说循环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个回答

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

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

运行不同的脚本;

iimPlay("Test.iim");

循环代码:
for(i=1;i<max_loop number){
your_code_here
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接