iMacros vs Javascript
Возможности и сравнение iMacros и Javascript рассматриваются в рамках ипользования программы iMacros.
Встроенный функционал iMacros невелик, и всё же позволяет решать задачи автоматизации любой сложности, в том числе создание ботов и парсеров.
Заложенная разработчиками возможность написания макросов на языке Javascript значительно расширяет возможности iMacros, добавляя нашим макросам гибкость и скорость работы.
Встроенный функционал iMacros против Javascript.
iMacros : URL GOTO=http://www.imacros.org
JS: window.location = 'http://www.imacros.org'
iMacros предлагает для этой цели команду iMacros URL. Команда синхронная, то есть код, написанный после нее, исполнится только тогда, когда страница загрузится или истечет таймаут. Таймаут можно настроить, например вот так:
iimPlayCode('SET !TIMEOUT 10\nURL GOTO=http://www.imacros.org/');
iMacros : SET !VAR1 hello<SP>world
JS: var var1= 'hello world';
В iMacros можно использовать встроенные переменные или задать ограниченное количество пользовательских переменных. В бесплатной версии iMacros мы ограничены как в имени пользовательских переменных (VAR0 — VAR9), так и в их количестве.
С переменными JS мы можем писать код любого уровня сложности и использовать всю мощь Javascript.
Вместе с тем, в ряде случаев, использование встроенных возможностей iMacros более удобно.
Например, извлечение данных через iimGetExtract().
iMacros : SET !DATASOURCE example.csv; SET !LOOP 2; SET !DATASOURCE_LINE {{!LOOP}}
Всё что связано с чтением\сохранением в CSV, TXT, Json а также реализация циклов, подходит для простых задач, но слишком громоздко и неудобно, чтобы использовать при реализации сложных. Встроенные средства iMacros можно использовать при работе с сайтами, при взаимодействии с которыми требуется имитации простых действий реального пользователя.
Там где требуется обработка и анализ большого объёма данных и важна скорость работы, однозначно следует использовать Javascript. В JS работа с массивами в поисках нужной строки занимает секунды, а при использовании связки JS + JSON в качестве формата хранения все операции происходят несравнимо быстрей, чем при использовании встроенных команд.
iMacros : TAG POS=1 TYPE=DIV ATTR=CLASS:submeta EXTRACT=TXT
JS: window.document.querySelector(‘.submeta’).textContent; //Тут вариантов много как искать селектор
Мы будем использовать TAG для кликов по кнопкам, ссылкам и т.д. А также будем иногда использовать EXTRACT — он жизненно необходим, когда нужно выдрать картинку или какие-то данные из iframe — в этих случаях одним JS не обойдемся.
iMacros : ONDOWNLOAD FOLDER=c:/btc FILE=image.jpg WAIT=YES TAG POS=1 TYPE=DIV ATTR=class:ava CONTENT=EVENT:SAVE_ELEMENT_SCREENSHOT');
Это одна из важнейших стандартных возможностей iMacros — сохранение любого элемента страницы в файл. Javascript здесь не конкурент.
iMacros : SET !VAR1 EVAL("Math.floor(Math.random()*10 + 1); ")
JS: var rndNumber = Math.floor(Math.random()*10 + 1);
EVAL из iMacros нам ни к чему. В JS есть свой eval(), и мы его будем использовать для некоторых редких ситуаций, где по-другому никак. Например при подгрузке стороннего макроса через Ajax и его выполнение.
iMacros : WAIT SECONDS=3
JS: setTimeout(function () {/*Do something*/}, 3000); //ms
В iMacros эта функция синхронная и значит код, написанный после нее, исполнится только через указанное количество секунд, это очень удобно, поэтому мы ее будем использовать.
iMacros : FRAME F=2
Это одна из важнейших стандартных возможностей. Если не использовать функционал iMacros, при помощи JS мы не сможем бессовестно ковыряться в чужих фреймах, вытаскивать и вставлять в них любое содержимое.
iMacros : 'TAB CLOSEALLOTHERS'; 'TAB T=1';
При помощи JS мы просто не можем переключаться между табами, никак.
Мы можем не только писать свои скрипты на JS+iMacros, но при этом еще и использовать огромную часть функционала API, как если бы мы писали расширение для браузера — а это полноценный файловый ввод-вывод, информация о системе, взаимодействие с другими приложениями и процессами и многое другое.