iMacros EVAL не дает надлежащего вывода

Итак, я пытаюсь получить некоторую информацию с веб-сайта, чтобы попытаться интерпретировать значение, подобное 11/22 [50%]. Я могу гарантировать, что значение будет как минимум минимально требуемым размером подстроки. Пока код работает, чтобы найти данные, извлечь их и установить для них значение !VAR1. Однако по какой-то причине я не могу заставить его вставить !VAR2 в поле ввода на странице. Переключается правильно, находит поле ввода и вводит "Результаты извлечения: " и все.

Итак, мой ввод 11/22 [50%], мне нужно только 11. Поэтому я разделяю строку с позиции 1,2, получая 11.

Согласно вики iMacros, мой синтаксис правильный, макрос работает, и я просто не получаю ожидаемого результата, я полагаю, из-за моей строки EVAL. Кто-нибудь знает, почему? Также будет очень признателен за объяснение.

VERSION BUILD=7601105 RECORDER=FX
TAB T=1
'Go to website
URL GOTO=http://xxxxxxxxxxxxxxxxxxxx

'Set tag to refer to next
TAG POS=1 TYPE=TD ATTR=TXT:Nerve:

'Get the relative position of something that cannot be tagged and extract the cell's info
TAG POS=R1 TYPE=TD ATTR=TXT:* EXTRACT=TXT

'Set VAR1 to Extracted info (For debugging)
SET !VAR1 {{!EXTRACT}}

'Issue must be here, this is trying to run javascript substring on the information harvested.
SET !VAR2 EVAL("var s=\"{{!EXTRACT}}\"; s=s.substring(1,2); s;")

"Extract to null value to be referenced later
SET !EXTRACT NULL

'Test VAR2 by going to another page and posting the info in a textbox.
URL GOTO=http://xxxxxxxxxxxxxxxxxxxx
TAG POS=1 TYPE=INPUT ATTR=NAME:search[id] CONTENT=Extraction<SP>results:{{!VAR2}}

person Brandon    schedule 02.03.2013    source источник
comment
Я не уверен, что я изменил, я скопировал код, который я разместил здесь, в новый iMacro и запустил его, и это сработало. Изменил подстроку, чтобы получить то, что я хотел. Не уверен, в чем проблема.   -  person Brandon    schedule 02.03.2013
comment
Тем не менее, это не будет работать для всех входных данных. Попробуйте мой обновленный ответ с обратной косой чертой.   -  person howderek    schedule 02.03.2013


Ответы (1)


Попробуйте использовать

SET !VAR2 EVAL("var s=\"{{!EXTRACT}}\"; s=s.split(\"/\")[0];s;")

Функция String.split() разбивает строку на массив, причем каждая часть отделяется, когда находит то, что вы даете в качестве аргумента, который будет либо RegExp, либо String.

Первым объектом в массиве ([0]) будет текст до того, как был найден первый «/».

Затем я return s, поэтому eval(); вернет правильный вывод.

person howderek    schedule 02.03.2013
comment
К сожалению, это не компилируется, выдает ошибку, указывающую на эту строку кода. Я не знаю, поддерживается ли разделение в iMacros. - person Brandon; 02.03.2013
comment
SyntaxError: неправильный формат команды SET, строка: 7 (Код ошибки: -910) - person Brandon; 02.03.2013
comment
SyntaxError: возврат не в функции, строка: 7 (код ошибки: -1001) Я удалил оператор возврата, и он работал с \. Значит, вам пришлось убегать от них из команды, чтобы заставить работать раздельно? - person Brandon; 02.03.2013
comment
Да, я думаю, вам придется сделать это для любой строки. - person howderek; 02.03.2013
comment
Хорошо, большое спасибо. Помогли мне понять, почему некоторые мои EVAL не работали должным образом. - person Brandon; 02.03.2013