iMacro!来自命令行的{LOOP

时间:2015-06-02 22:16:54

标签: javascript bash loops firefox imacros

我不确定如何解释这个问题,然后描述问题,并希望有人能指出我正确的方向。我编写了一个从iMacros调用宏的bash脚本。宏如下所示:

VERSION BUILD=8920312 RECORDER=FX
TAB T=1
URL GOTO=http://www.event.com/schedual
SET !EXTRACT_TEST_POPUP NO
SET !ERRORIGNORE YES

TAG POS={{!LOOP}} TYPE=A ATTR=TXT:02 EXTRACT=HTM

SAVEAS TYPE=EXTRACT FOLDER=/root/Desktop FILE=TodaysEvents.csv
TAB CLOSE

当使用播放循环按钮从浏览器运行时,宏工作。但是,当我尝试在bash脚本中运行宏时,它只提取循环中的第一个实例并退出。我运行的命令如下所示:

iceweasel "imacros://run/?m=TodaysEvents.iim"

是否有一个特殊的语法来从终端运行涉及循环的imacros?我正在使用Debian并使用iMacros Firefox扩展,如果有帮助的话。

1 个答案:

答案 0 :(得分:0)

正如Shugar所指出的,唯一的解决方案是使用javascript。 iMacros Browser附带的脚本界面与Firefox iMacros中内置的JavaScript解释器不同。 iMacros浏览器仅适用于Windows,因此它对Linux用户来说很糟糕,但Firefox附加组件是通用的。以下步骤将帮助任何人在发布"!LOOP"从命令行失败。

`Step 1)  Record your macro as you would normally. You can look at the above for an example.`
`Step 2)  Write a JavaScript file like below and save in the same folder as the rest of your imacros scripts (~/iMacros/Macros), with the .js extention.`


const L = "\n";
iimPlayCode("TAB T=1" + L + "URL GOTO=http://www.event.com/schedual" + L);

for (i = 1; i < 130; i++) {
    iimSet("loop", i);
    iimPlayCode("SET !ERRORIGNORE YES" + L + "TAG POS={{loop}} TYPE=A ATTR=TXT:02 EXTRACT=HTM" + L + "SAVEAS TYPE=EXTRACT FOLDER=/root/Desktop FILE=TodaysEvents.csv" + L);
}

诀窍是你必须回到你的TodaysEvents.iim(原始示例)脚本并将所有代码放入上面的iimPlayCode声明中,并将&#34; {{!LOOP}}更改为&#34; {{环}}&#34 ;.另外,万一你想知道&#34; i&lt; 130&#34;在JavaScript中意味着您希望脚本循环最多130次并且#34; URL GOTO&#34;必须在for循环之外声明。 然后,您可以使用以下命令从命令行运行循环:

firefox "imacros://run/?m=TodaysEvents.js"