使用 javascript 解决 iMacros 错误

Using javascript to solve iMacros error

我在 imacros chrome 版本中使用循环时遇到了一个障碍。我希望有人能帮助我。

我现在正在尝试下载一些关于几个地区和日期的数据。我将特定地区和日期存储在 .csv 文件中。我想 运行 iMacros 循环根据该 .csv 文件中的索引自动下载这些数据。以下是 iMacros 中的代码。

VERSION BUILD=844 RECORDER=CR

TAB OPEN
WAIT SECONDS=2
TAB T=2
WAIT SECONDS=2

SET !DATASOURCE Datasource.csv
SET !DATASOURCE_COLUMNS 3
SET !DATASOURCE_LINE {{!LOOP}}

URL GOTO=http://202.39.224.50/FMS_Plic/#
WAIT SECONDS=2

TAG POS=1 TYPE=A ATTR=TXT:MonitorRecord
WAIT SECONDS=5

FRAME F=2
TAG POS=1 TYPE=A ATTR=ID:ddlDC_Arrow
TAG POS=1 TYPE=LI ATTR=TXT:DC1
WAIT SECONDS=10

TAG POS=1 TYPE=A ATTR=ID:ddlCar_Arrow
TAG POS=1 TYPE=LI ATTR=TXT:{{!COL1}}

TAG POS=1 TYPE=INPUT:TEXT FORM=ID:form1 ATTR=ID:date1 CONTENT={{!COL2}}

TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:form1 ATTR=ID:btnQuery
WAIT SECONDS=60

TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:form1 ATTR=ID:Cexcel
WAIT SECONDS=60

TAB CLOSE
WAIT SECONDS=2

iMacros本身的代码没有问题,运行很顺利。但是,问题是网站不稳定,时不时崩溃。如果崩溃,iMacros将无法找到相关信息报错,然后退出。由于循环必须从 1 到 300000,如果我手动执行,这会花费很多时间。

所以我正在寻找解决此问题的解决方案。 如果出现错误,则重新开始当前循环,而不是跳过(我注意到有人建议使用!ERRORIGNORE。但是如果我使用它,则当前循环将被跳过,而不是我所期望的)。从网上的一些说明来看,javascript 似乎是一个解决方案。但是,我对 java 以及如何将 javascript 与 iMacros 一起使用一无所知。如果这可以在 Chrome 以外的其他浏览器上解决,也请告诉我该怎么做。

我真诚地感谢对此的任何建议!非常感谢!:)

我认为这个问题不仅可以通过 'iMacros for Firefox'(及其 JavaScript 脚本接口)解决,也可以通过 'iMacros for Chrome' 解决。建议使用!ERRORIGNORE。让我们定义 myLoop 变量,以便在出现错误时重新启动当前循环。我假设这相当于没有找到元素 TAG POS=1 TYPE=A ATTR=TXT:MonitorRecord 的文本。这是尝试改进的代码:

TAB OPEN
WAIT SECONDS=2
TAB T=2
WAIT SECONDS=2

SET myLoop EVAL("if ('{{myLoop}}' == '__undefined__') ml = 1; else if ('{{!EXTRACT}}' == '' || '{{!EXTRACT}}' == '#EANF#') ml = ml; else ml = ++ml; ml;")
SET !EXTRACT NULL

SET !DATASOURCE Datasource.csv
SET !DATASOURCE_COLUMNS 3
SET !DATASOURCE_LINE {{myLoop}}

SET !ERRORIGNORE YES
URL GOTO=http://202.39.224.50/FMS_Plic/#
WAIT SECONDS=2
TAG POS=1 TYPE=A ATTR=TXT:MonitorRecord EXTRACT=TXT

TAG POS=1 TYPE=A ATTR=TXT:MonitorRecord
WAIT SECONDS=5

FRAME F=2
TAG POS=1 TYPE=A ATTR=ID:ddlDC_Arrow
TAG POS=1 TYPE=LI ATTR=TXT:DC1
WAIT SECONDS=10

TAG POS=1 TYPE=A ATTR=ID:ddlCar_Arrow
TAG POS=1 TYPE=LI ATTR=TXT:{{!COL1}}

TAG POS=1 TYPE=INPUT:TEXT FORM=ID:form1 ATTR=ID:date1 CONTENT={{!COL2}}

TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:form1 ATTR=ID:btnQuery
WAIT SECONDS=60

TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:form1 ATTR=ID:Cexcel
WAIT SECONDS=60

TAB CLOSE
WAIT SECONDS=2
SET !ERRORIGNORE NO