iMacros — это программа, которая позволяет автоматизировать и имитировать действия пользователя в браузере. По словам разработчиков, iMacros загрузили 9 миллионов раз, но лишь 240 тысяч юзеров активно используют приложение. То есть лишь 3% из установивших продукт нашли ему применение. И неслучайно. При первом взгляде на документацию сложно разглядеть его удивительные, поражающие воображение возможности. Эта статья откроет их для тебя.

Рис. 1.  Начало работы iMacros
Рис. 1. Начало работы iMacros
 

Установка

Есть два варианта установки iMacros:

  • в качестве расширения (add-ons) для браузера (Firefox, Chrome или Internet Explorer),
  • как отдельное приложение (только для Windows).

В описанных ниже примерах использован iMacros Firefox add-on.

 

Hello world

Основной прием, которому стоит научиться, — запись действий в браузере и последующее их воспроизведение. Перейдем на вкладку Record на панели в левом нижнем углу экрана и нажмем на кнопку Record Macro. Теперь вобьем в Google «Hello world» и нажмем Enter. Потом кнопку Stop (под кнопкой Record Macro). iMacros сгенерировал код, который можно многократно запускать и редактировать:

VERSION BUILD=7020226 RECORDER=CR
URL GOTO=https://www.google.ru/?gfe_rd=cr&ei=Jw5gU4LuF9CWwAPQuIG4Ag
TAG POS=1 TYPE=INPUT:TEXT FORM=ID:gbqf ATTR=ID:gbqfq CONTENT=hello<SP>world
TAG POS=1 TYPE=BUTTON FORM=ID:gbqf ATTR=ID:gbqfb

Функция записи макросов дает возможность лишний раз не заглядывать в документацию и автоматизировать простейшие задачи, не заморачиваясь написанием кода.

 

WARNING

В браузере Chrome не работает треть iMacros-команд (какие — см. документацию). Поэтому лучше использовать Firefox (90% возможностей) или Internet Explorer (наиболее полный функционал).

 

Работа с данными

Заполнение форм из CSV-файла с данными

Предположим, нам нужно заполнить информацию о товарах интернет-магазина через CMS-админку (конкретный пример написан для Insales). Названия, описания, цены и остатки хранятся в файле CSV. Эту задачу можно мгновенно выполнить с помощью небольшого макроса:

SET !DATASOURCE products.csv ‘подключаем файл CSV (лучше прописывать абсолютный путь)
SET !LOOP 4
'делаем построчный обход файла и для каждый строки выполняем код, приведенный далее 
SET !DATASOURCE_LINE {{!LOOP}}
'открываем страницу добавления товара
URL GOTO=http://example.com/newproduct
'записываем значение первого поля файла CSV в форму для названия товара
TAG POS=1 TYPE=INPUT:TEXT FORM=ID:new_product ATTR=ID:product_title CONTENT= {{!COL1}}
'записываем значение второго поля файла CSV в форму для короткого названия товара
TAG POS=1 TYPE=TEXTAREA FORM=ID:new_product ATTR=ID:product_short_description CONTENT= {{!COL2}}
'третье и четвертое поле — аналогично
TAG POS=1 TYPE=INPUT:TEXT FORM=ID:new_product ATTR=ID:product_variants_attributes__price CONTENT= {{!COL3}}
TAG POS=1 TYPE=INPUT:TEXT FORM=ID:new_product ATTR=ID:product_variants_attributes__quantity CONTENT={{!COL4}}
'после ввода всех данных о товаре сохраняем его в каталог
TAG POS=1 TYPE=INPUT:BUTTON FORM=ID:new_product ATTR=*
// А вот так выглядит products.csv:
"Товар 1","Опиcание товара 1","555","7"
"Товар 2","Опиcание товара 2","722","13"
"Товар 3","Опиcание товара 3","234","9"
"Товар 4","Опиcание товара 4","301","11"

Рис. 2.  Запись макроса
Рис. 2. Запись макроса

Извлечение данных из веб-страниц

А теперь представим обратную ситуацию. Когда нужно просмотреть каталог магазина-конкурента и сохранить информацию о товарах.

'Этот код извлекает текстовое содержимое из абзацев, имеющих атрибут "class", равный "product_description"
TAG POS=1 TYPE=P ATTR=CLASS:product_description  EXTRACT=TXT
'А этот сохраняет его в файл
SAVEAS TYPE=TXT FOLDER="C:\" FILE="product_desc.txt"
'А вот команда для запуска диалогового окна сохранения картинки и нажатия кнопки подтверждения:
TAG POS=1 TYPE=IMG ATTR=ID:product_image CONTENT=EVENT:SAVEITEM 
ONWEBPAGEDIALOG KEYS={down<SP>2}{tab<SP>1}{enter}

Естественно, весь этот код можно использовать в цикле с динамическими переменными.

Рис. 3.  Панель запуска макроса
Рис. 3. Панель запуска макроса
 

Вызов iMacros из кода

Любой макрос можно сохранить в файле с расширением iim и использовать в приложениях, написанных на 16 языках программирования. Только надо не забыть установить полную версию (не аддон) iMacros на компьютер или веб-сервер.

Поддерживаемые языки

  • ASP
  • ASP.NET
  • C#
  • C++
  • Delphi
  • FoxPro
  • Java
  • JavaScript
  • Perl
  • PHP
  • Python
  • Power Shell
  • Ruby
  • TCL
  • VBA
  • VBS

 

WWW

Batch-файлы

Вызов iMacros из батников — наиболее простой и удобный путь автоматизировать их выполнение. Достаточно одной строки для запуска макроса:

"ProgramFiles\iOpus\iMacros\iMacros.exe" -macro "..\..\Macros\Demo\RegExpSearch.iim"

C++

Основная сложность в использовании iMacros под C++ — настройка среды разработки (конкретику по версиям различных сред ищи в документации или спрашивай у саппорта). Принцип работы кода такой же, как в PHP:

IAppPtr app = IAppPtr(__uuidof(App));
Status s = app->iimInit("", true, "", "", "", cTimeout);
s = app->iimPlay("wsh-extract-rate", cTimeout); // Запуск wsh-extract-rate
s = app->iimExit(cTimeout);

Использование JavaScript в макросах

В iMacros можно присваивать переменным результаты выполнения JavaScript-кода c помощью команды EVAL:

SET JSVAR EVAL("var JSVAR = 45+5; JSVAR;")

PHP

iMacros можно запускать с веб-сервера, используя PHP-скрипт. Зачем это может пригодиться? Для пополнения базы данных посредством мониторинга информационных сайтов, генерации онлайн-табло результатов тестирования состояния серверов и так далее. Пример вызова макроса, осуществляющего поиск на странице:

<?php 
    $iimobject = new COM("imacros"); 
    // Обращаемся к компоненту iimRunner (он уже должен 
    // быть предварительно запущен на сервере)
    $imacrosprocess = $iimobject->iimInit("-runner");
    // Получаем код макроса и слова для поиска 
    // из адресной строки
    $imacrosprocess = $iimobject->iimSet
      ("-var_keyword", $_GET["keyword"]);
    $imacrosprocess = $iimobject->iimPlay
      ($_GET["macro"]);
    // Выводим отчет о выполнении макроса (удалось 
    // запустить или нет)
    echo "iimplay=";
    echo $imacrosprocess;
    // и результаты поиска
    echo "extract=";  
    echo $iim1->iimGetLastExtract;     
    $s = $iim1->iimExit(); 
?>
 

Выполнение макросов по расписанию

Для отсрочки выполнения команды на n-е количество секунд существует команда WAIT. Пример:

WAIT SECONDS=10.

Для более сложного планирования выполнения макросов надо прибегать к помощи сторонних языков программирования. Простейшие варианты — batch-файлы + Windows Task Sheduler или PHP + Crontabe.

Рис. 4. Окно редактирования макроса
Рис. 4. Окно редактирования макроса
 

Direct Screen Technology

Если сайт сделан на Flash, Flex или SilverLight, то к его элементам нельзя обратиться стандартными способами (по идентификаторам DOM-разметки). Необходимо использовать координаты объекта на веб-странице:

'клик по точке с координатами и ввод текста
DS CMD=MOVETO X=455 Y=224 CONTENT={BACKSPACE} текст 

С помощью координатной адресации можно даже имитировать drag and drop. Перед записью макроса для Flash-сайта необходимо включить Use Direct Screen Commands в настройках.

 

Скриншоты

С помощью команды SCREENSHOT TYPE=(PAGE|BROWSER) FOLDER=folder_name FILE=file_name можно сделать скриншот всей страницы, а используя TAG + обращение к элементу + CONTENT=EVENT:SAVE_ELEMENT_SCREENSHOT — отдельной ее части.

 

Тестирование сайтов

С помощью iMacros можно легко написать программу для мониторинга времени реакции на разные действия пользователя. Пример:

'Загружаем страницу и записываем в бортовой журнал время на ее загрузку
URL GOTO=http://example.com/about
STOPWATCH ID=PageAbout
'Вводим имя и фамилию пользователя в формы и замеряем время, затраченное на отправку данных
TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:username CONTENT=Ira
TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:usersurname CONTENT=Chernova
TAG POS=1 TYPE=BUTTON:SUBMIT FORM=ID:SendInfo ATTR=TXT:SendInfo
STOPWATCH ID=SendInfo

Результаты измерений сохраняются в Imacros\Downloads\performance_Stopwatch.csv.

 

Обработка ошибок

По умолчанию в случае возникновения какой-либо ошибки выполнение макроса останавливается. Этого можно избежать, прописав в начале !ERRORIGNORE YES.

 

Использование прокси-серверов

Для этого чтобы подсоединиться к прокси-серверам перед выполнением макроса или во время его, используй команду proxy:

PROXY ADDRESS=127.0.0.1:8888

Альтернативы

 

Запись видео

Если ты хочешь запечатлеть лучшие моменты работы iMacros на видео — используй плагин Capture Fox для Mozilla или Screencastify для Chrome.

 

SRC

В приложении к журналу есть девять шаблонов макросов (с русскоязычными комментами), которые ты сможешь приспособить для решения следующих задач:

  • заполнение полей форм из CSV-файлов;
  • извлечение данных из таблицы в CSV-файл;
  • установка значений в селектах и переключателях (radio buttons);
  • сохранение картинок с сайта;
  • обработка всплывающих JS-диалогов;
  • печать страницы;
  • создание скриншотов;
  • измерение времени на загрузку отдельных элементов страницы и выполнение сценариев;
  • извлечение данных из форм и прочих частей веб-сайта.
 

Заключение

В этой статье рассмотрены возможности iMacros, позволяющие решать тривиальные проблемы, с которыми может столкнуться любой IT-специалист или просто активный пользователь инета. Всего же инструмент включает в себя более полусотни команд, обозреть которые в формате журнала невозможно. Поэтому, если ты не нашел здесь ничего, что могло бы облегчить твою рутину в Сети, не отчаивайся и загляни в документацию или на форум imacros.net.

18 комментариев

  1. 21.10.2014 at 13:08

    Ещё бы iMacros капчи обходил. Желательно, сам. 🙂

  2. 05.01.2015 at 17:45

    Полезная статья!
    А как быть если у кнопки на сайте постоянно разный код?
    Например создать макрос для Одноклассников — добавления в друзья.
    Код кнопки все время разный:

    TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:na2413096229435 ATTR=ID:hook_FormButton_accept2413096229435

    TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:na2413095042619 ATTR=ID:hook_FormButton_accept2413095042619

    TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:na2413092766267 ATTR=ID:hook_FormButton_accept2413092766267

    TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:na2413091583035 ATTR=ID:hook_FormButton_accept2413091583035

  3. 15.01.2015 at 04:01

    привет всем подскажите пожалуйста чайнику как имитировать простое нажатие клавиши «enter»

  4. 19.01.2015 at 20:54

    Вы можете сделать макрос за деньги? Мне нужно для голосования за вопросы , на одном проекте , ничего противозаконного, просто нужно голосовать знакомым , по 200-300 в день приходится . я в принципе сделал , работает , но номера не пойму как сделать , что бы сами менялись, там же каждый раз новые вопросы , вот может сделаете?

    • 05.03.2015 at 18:05

      • dobryi36060

        05.05.2016 at 10:22

        Добрый день. Нужна помощь в написании скрипта для сбора сатошей но там есть каптча. У меня есть программа лицензионная capmonster2 и мне нужно чтоб данная программа помогала в разгадывании каптчи в imacrose. Если да пише мне на почту dobryi36060@yandex.ru

      • Alexey7k

        28.06.2016 at 17:19

        Привет!
        Не могу написать тебе в ЛС, напиши мне плиз

  5. 01.04.2015 at 22:22

    Скажите пожалуйста, а как можно сделать скриншот капчи которая постоянно генерируется и нет постоянного адреса.

  6. 02.04.2015 at 22:10

    Нужна помощь с написанием скрипта для скачивания капчи. Помощь готов оплатить. Кто может сделать напишите пожалуйста на bup63pyc@yandex.ru

  7. 01.06.2015 at 16:13

    Раньше пользовался с Ghost Automaizer, но он иногда торопился а иногда и вовсе не нажимал горячие клавиши типа копировать и вставить,
    Imacros хорошее вещь, но у меня все данные хранятся в екселе, я могу конвертнуть на csv, но imacros заполняет формы только с первого строка а дальше вниз по списку не идет,
    Мне нужно чтоб imacros брал данные из csv и регистрировал все абоненты по очереди по списку, или хотябы брал с первой строки,после регистрировал, и обратно удалял эту первый список, чтоб 2-я была обратно на первом списке, ну короче не знаю помогите ребята?

  8. 04.06.2015 at 09:59

    сделал по вашему примеру, но цикл не отрабатывает, проходит только 1 раз
    Подскажите в чем проблема?

    VERSION BUILD=8920312 RECORDER=FX
    TAB T=1
    SET !DATASOURCE 111.csv
    SET !DATASOURCE_COLUMNS 6
    SET !LOOP 4
    SET !DATASOURCE_LINE {{!LOOP}}
    URL GOTO=https://lk2.service.ru/lk/index.html
    TAG POS=1 TYPE=INPUT:TEXT FORM=ID:logonForm ATTR=ID:logonForm_username CONTENT= {{!COL5}}
    TAG POS=1 TYPE=INPUT:PASSWORD FORM=ID:logonForm ATTR=ID:logonForm_password CONTENT= {{!COL6}}
    TAG POS=1 TYPE=BUTTON FORM=ID:logonForm ATTR=ID:logonForm_submit
    TAG POS=1 TYPE=INPUT:PASSWORD FORM=ID:profileForm ATTR=ID:profileForm_curPwd CONTENT= {{!COL6}}
    TAG POS=1 TYPE=INPUT:PASSWORD FORM=ID:profileForm ATTR=ID:profileForm_newPwd CONTENT= {{!COL6}}1
    TAG POS=1 TYPE=INPUT:PASSWORD FORM=ID:profileForm ATTR=ID:profileForm_newPwd2 CONTENT= {{!COL6}}1
    TAG POS=1 TYPE=A ATTR=TXT:Выход
    WAIT SECONDS=10

  9. pavel342

    06.07.2015 at 22:19

    Нужна помощь. Как написать цикл, который будет заполнять первое текстовое поле значением от 1 до 10, а второе поле постоянным значением «А» и далее нажимать на кнопку? Заранее благодарен.

  10. kota72

    29.11.2015 at 20:01

    Доброго времени суток всем.Пожалуйста ответьте кто знает,iMacros сможет распознать дублирующую картинку либо изображение и кликнуть.Пожалуйста напишите макрос если это возможно и укажите сколько будет стоить Ваша работа.Алгоритм такой через некоторое время появляются изображения,их пять ,одно изображение главное,задающее задание кликнуть по такому-же изображению из четырех появывшихся изображений,они располагаются чуть левее основного изображения.Это могут быть цифры либо различные рисунки.Надо так чтобы скрипт оценил изображение крайнее левое и кликнул по такому-же изображению из четырех представленных находящихся левее.Заранее спасибо

Оставить мнение

Check Also

Мошенничество по воздуху. Разбираем возможность Cryptogram Replay Attack в Apple Pay

Задача платежной системы — списать нужную сумму в пользу продавца со счета верное число ра…