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.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    20 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии