Wiki‎ > ‎

iMacros vs Javascript

Отправлено 4 июн. 2020 г., 10:53 пользователем Норрин Радд
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 в качестве формата хранения все операции происходят несравнимо быстрей, чем при использовании встроенных команд.

Извлечение данных из HTML-тэгов

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 здесь не конкурент.


Преобразование текстовой строки в исполняемый код EVAL()

iMacros : SET !VAR1 EVAL("Math.floor(Math.random()*10 + 1); ")
JSvar rndNumber = Math.floor(Math.random()*10 + 1);

EVAL из iMacros нам ни к чему. В JS есть свой eval(), и мы его будем использовать для некоторых редких ситуаций, где по-другому никак. Например при подгрузке стороннего макроса через Ajax и его выполнение.


Задержка на определенное время

iMacrosWAIT SECONDS=3
JSsetTimeout(function () {/*Do something*/}, 3000); //ms

В iMacros эта функция синхронная и значит код, написанный после нее, исполнится только через указанное количество секунд, это очень удобно, поэтому мы ее будем использовать.


Работа с фреймами

iMacrosFRAME F=2

Это одна из важнейших стандартных возможностей. Если не использовать  функционал iMacros,  при помощи JS мы не сможем бессовестно ковыряться в чужих фреймах, вытаскивать и вставлять в них любое содержимое.


Переключение и закрытие табов

iMacros : 'TAB CLOSEALLOTHERS'; 'TAB T=1';

При помощи JS мы просто не можем переключаться между табами, никак.


Возможности iMacros + JavaScript + Firefox Extensions API

Мы можем не только писать свои скрипты на JS+iMacros, но при этом еще и использовать огромную часть функционала API, как если бы мы писали расширение для браузера — а это полноценный файловый ввод-вывод, информация о системе, взаимодействие с другими приложениями и процессами и многое другое.