我在填表时遇到问题。我有两列,都有数据,我为此做了一个循环,但我想要第2列的内循环,就像首先从第1列中选择第2行然后从第2列中选择数据直到第2列结束。 / p>
例如,我在第一列有10个条目,第二列有20个条目
以下是代码:
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
答案 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的网络自动化,尽管我还没有尝试过。为了以防万一,只是抛出一些其他选项。我当然希望我早些时候知道它们!