循环创建Imacros

问题描述 投票:0回答:1

我为我的英语道歉。

我在 Imacros 中有两个 JavaScrypt 脚本。每个循环都单独执行自己的循环并且工作不会出现任何问题。 但连续第五天我试图将这两个脚本合并为一个。使这个过程自动化。但不幸的是我一次又一次地失败。为此我开始研究JavaScrypt。我头晕目眩。

脚本1。它适用于链接。

var macro;
macro =  "CODE:";
macro +=  "SET !EXTRACT_TEST_POPUP NO" + "\n"; 
macro +=  "SET !ENCRYPTION NO" + "\n"; 
macro +=  "SET !ERRORIGNORE YES" + "\n"; 
macro +=  "'Подключаем наш файл" + "\n"; 
macro +=  "SET !DATASOURCE D:\\iMacros\\Datasources\\Ok\\URLs.csv" + "\n"; 
macro +=  "SET !DATASOURCE_COLUMNS 1" + "\n"; 
macro +=  "'данные с нужной строки" + "\n"; 
macro +=  "SET !DATASOURCE_LINE {{i}}" + "\n";
macro +=  "URL GOTO={{!COL1}}" + "\n"; 
macro +=  "WAIT SECONDS=2" + "\n"; 

for(i=1;i<=34;i++)

{ 
iimSet("i",i)
iimPlay(macro)
}

script2 转到 script1 拉出的链接。

var macro;
macro =  "CODE:";
macro +=  "FILTER TYPE=IMAGES STATUS=ON" + "\n"; 
macro +=  "TAG POS={{i}} TYPE=A ATTR=CLASS:link__91azp<SP>photo-link__79ad9<SP>__primary__91azp*     EXTRACT=HREF" + "\n"; 
macro +=  "'PROMPT {{!EXTRACT}}" + "\n"; 
macro +=  "TAB OPEN" + "\n"; 
macro +=  "TAB T=2" + "\n"; 
macro +=  "URL GOTO={{!EXTRACT}}" + "\n"; 
macro +=  "WAIT SECONDS=5" + "\n"; 
macro +=  "EVENT TYPE=KEYPRESS SELECTOR=* KEY=35" + "\n";
macro +=  "WAIT SECONDS=2" + "\n"; 
macro +=  "TAB CLOSE" + "\n"; 
for(i=1;i<=20;i++){ 
iimSet("i",i);
iimPlay(macro);
}
iimPlay(macro)
 

此脚本2访问此链接成员的个人资料。 我放了20个人。

正如我所说,两个脚本都可以很好地执行其功能,但只是单独执行。我的任务是将这两个脚本合并为一个脚本。 script1 拉了一个链接 - script2 访问了 20 人 - script1 拉了第二个链接 - script2 访问了 20 人等等.... 我将感谢您的帮助。

我所能达到的最大值是 script1 加载 34 个链接中的第一个链接。 script2 只访问了 20 个人中的 1 个人,并且循环重新开始。也就是说,script1 提取第二个链接,script2 访问第二个人,依此类推。我希望一切都是循环的。即 script1 提取了第一个链接 - script2 经过 20 个配置文件,然后循环重新开始,其中 script1 提取第二个链接,而 script2 继续访问 20 个配置文件,依此类推......

javascript loops imacros
1个回答
0
投票

您需要两个不同的宏变量名称。

您需要两个不同的索引变量名称。

然后将第二个循环移到第一个循环内。

请注意,我不使用 iMacros,所以我无法测试它,但看起来是正确的。

// Script1. It works with links.
var macro1;
macro1 =  "CODE:";
macro1 +=  "SET !EXTRACT_TEST_POPUP NO" + "\n"; 
macro1 +=  "SET !ENCRYPTION NO" + "\n"; 
macro1 +=  "SET !ERRORIGNORE YES" + "\n"; 
macro1 +=  "'Подключаем наш файл" + "\n"; 
macro1 +=  "SET !DATASOURCE D:\\iMacros\\Datasources\\Ok\\URLs.csv" + "\n"; 
macro1 +=  "SET !DATASOURCE_COLUMNS 1" + "\n"; 
macro1 +=  "'данные с нужной строки" + "\n"; 
macro1 +=  "SET !DATASOURCE_LINE {{i}}" + "\n";
macro1 +=  "URL GOTO={{!COL1}}" + "\n"; 
macro1 +=  "WAIT SECONDS=2" + "\n"; 


// script2 goes to the link that script1 pulled out.
var macro2;
macro2 =  "CODE:";
macro2 +=  "FILTER TYPE=IMAGES STATUS=ON" + "\n"; 
macro2 +=  "TAG POS={{i}} TYPE=A ATTR=CLASS:link__91azp<SP>photo-link__79ad9<SP>__primary__91azp*     EXTRACT=HREF" + "\n"; 
macro2 +=  "'PROMPT {{!EXTRACT}}" + "\n"; 
macro2 +=  "TAB OPEN" + "\n"; 
macro2 +=  "TAB T=2" + "\n"; 
macro2 +=  "URL GOTO={{!EXTRACT}}" + "\n"; 
macro2 +=  "WAIT SECONDS=5" + "\n"; 
macro2 +=  "EVENT TYPE=KEYPRESS SELECTOR=* KEY=35" + "\n";
macro2 +=  "WAIT SECONDS=2" + "\n"; 
macro2 +=  "TAB CLOSE" + "\n"; 

for(i=1;i<=34;i++) { 
  iimSet("i",i)
  iimPlay(macro1)

  // I changed i to pos for this loop, since you are using i in the outer loop
  for(pos=1;pos<=20;pos++){ 
    iimSet("i",pos);
    iimPlay(macro2);
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.