imacros中第2列的内部循环

时间:2015-03-17 19:10:51

标签: loops csv vbscript nested-loops imacros

我在填表时遇到问题。我有两列,都有数据,我为此做了一个循环,但我想要第2列的内循环,就像首先从第1列中选择第2行然后从第2列中选择数据直到第2列结束。 / p>

例如,我在第一列有10个条目,第二列有20个条目

  • 外环列1
  • 内环列2
  • 如果未找到第2列中的数据
  • ,则内部循环结束
  • 再次重复

以下是代码:

VERSION BUILD=10022823
TAB T=1
SET !DATASOURCE F:\tgif.csv
SET !LOOP 2
SET !DATASOURCE_LINE {{!LOOP}}
URL GOTO={{!COL1}}
SIZE X=1392 Y=863
WAIT SECONDS=2.797
DS CMD=CLICK X=589 Y=396 CONTENT=
WAIT SECONDS=2
DS CMD=KEY CONTENT={{!COL2}}
WAIT SECONDS=5
TAG POS=1 TYPE=BUTTON:SUBMIT FORM=ACTION:/ajax/updatestatus.php?av=100009092062416 ATTR=TXT:Post
WAIT SECONDS=5

1 个答案:

答案 0 :(得分:1)

对于更复杂的iMacro脚本(例如使用循环等),您可以使用iMacro Firefox插件来运行Javascript脚本。此外,一般来说,为了更好地控制,使用TAG定位更具体的元素属性(例如,类,id等)而不是位置更好。

您想要做的事情听起来像是可以通过嵌套循环来完成。如果firstField和secondField是数组,那么您可以执行以下操作:

for (var i=0, alength = firstField.length; i < alength; i++){
    //select first column
    for (var j=0, blength = secondField.length; j < blength; j++){
        //select cell in second column, with the same first column #
    }
}

要通过javascript播放iMacro代码,您可以使用iimPlay

iimPlay("CODE: " + m)    //for mac, for windows, you can take out the "CODE: " part, if I remember correctly. Or it might be the other way around!

我正在改进它,所以包含部分还没有工作(并且某些功能尚未被完全添加)......但我正在使用javascript库来与iMacros合作。你可以在这里看到它:

https://github.com/anonmily/iMacroLibrary

如果需要,您可以使用代码段或仅作为如何将Javascript与iMacros一起使用的帮助。要立即使用它,您只需复制iMacroLibrary.js文档中的内容,然后再添加您自己的代码。您可以在&#34;定义不安全窗口&#34;之后缩小库中的所有内容。那么这就是&#39;一条线,节省空间。然后,您可以使用CSS选择器选择页面上的元素并与它们进行交互。您也可以导入和导出CSV数据。

var Year = $M('.yearinput');
var Make = #M('.makeinput');

//or 

var Year = $M('select',1); //the first dropdown (select) element
var Make = $M('select',2); //the second dropdown (select) element

Year.click();
Year.extract('TXT')
Make.extract('TXTALL'); //the same as Make.extractAll()

导出或导入CSV数据:

exportcsv = function(csvarray, filename);
importcsv = function(file_name, line_num, fields_num);

图书馆的旧版本(在我再次开始调整之前......)是提交#:8b6045ecf9559fa7c9e13492d69af067c86a61b5

最后有点乱,因为那里我放了一些代码进行测试,但你可以看到它是如何以这种方式实现的。仅供参考!

P.S。但是为了自动化,我一直在使用Python库Splinter,它在某些方面比iMacros更容易使用。代码也更容易编写!我已经开始将我的一些旧的iMacros转换为Python了;这肯定有更多的力量和灵活性。在我看来,iMacros非常适合简单/快速记录的简单任务。对于网页抓取,Beautiful Soup也非常有用。此外,我也听说过Selenium的网络自动化,尽管我还没有尝试过。为了以防万一,只是抛出一些其他选项。我当然希望我早些时候知道它们!