Как сделать шаг 2 с циклом iMacros?Как выбрать любой другой раздел? - PullRequest
4 голосов
/ 12 апреля 2011

У меня есть этот фрагмент кода iMacros

VERSION BUILD=7200328 RECORDER=FX
TAB T=1
URL GOTO=http://feedburner.google.com/fb/a/myfeeds
SET !LOOP 1
TAG POS={{!LOOP}} TYPE=A ATTR=HREF:http://feedburner.google.com/fb/a/dashboard?id=*
TAG POS=1 TYPE=A ATTR=TXT:Publicize
TAG POS=1 TYPE=SPAN ATTR=TXT:Socialize
TAG POS=1 TYPE=SELECT FORM=NAME:editFeedActionForm ATTR=ID:postFields CONTENT=$Title<SP>and<SP>Body
WAIT SECONDS=2
TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:mainForm ATTR=VALUE:Save
TAG POS=1 TYPE=A ATTR=TXT:FeedBurner

Приведенный выше скрипт извлечет hrefs, соответствующие правилу http://feedburner.google.com/fb/a/dashboard?id=*, и попытается перейти далее по странице.

Однако на странице есть две ссылки с одинаковым материалом, и я хочу зациклить только нечетные значения. Как 1,3,5,7, как установить пользовательское значение шага для цикла?

Ответы [ 2 ]

5 голосов
/ 19 августа 2011

Такая простая арифметика также может быть выполнена на языке iMacros:

'Store the value of !loop in a variable
SET !VAR1 {{!LOOP}}
ADD !VAR1 {{!LOOP}}
'now !var1 = 2*!loop. Subtract 1 to get odd numbers.
ADD !VAR1 -1
TAG POS={{!VAR1}} TYPE=A ATTR=HREF:http://feedburner.google.com/fb/a/dashboard?id=*

С уважением,

Марсия

4 голосов
/ 18 апреля 2011

... и я хочу зациклить только нечетные значения

Язык iMacros сам по себе является описательным языком (аналог HTML) и не содержит условныхоператоры или что-то необычное.

Поэтому вместо использования кнопки LOOP iMacros используйте для запуска цикла встроенную поддержку сценариев Javascript поддержку iMacros для Firefox.Внутри цикла вы можете вызывать ваш макрос с помощью iimPlay (и использовать iimSet для определения значений).

Примерно так должно работать:

iimDisplay("Start loop...);

for (i = 0; i < 100; i=i+2) {
    iimDisplay("Step "+(i+1));
    retcode = iimPlay("your macro name here");
    if (retcode < 0) {
        report += ": "+iimGetLastError();
        alert ( report );
    }
}
iimDisplay("complete");
...