Содержание статьи
iMacros — это программа, которая позволяет автоматизировать и имитировать действия пользователя в браузере. По словам разработчиков, iMacros загрузили 9 миллионов раз, но лишь 240 тысяч юзеров активно используют приложение. То есть лишь 3% из установивших продукт нашли ему применение. И неслучайно. При первом взгляде на документацию сложно разглядеть его удивительные, поражающие воображение возможности. Эта статья откроет их для тебя.
Установка
Есть два варианта установки 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"
Извлечение данных из веб-страниц
А теперь представим обратную ситуацию. Когда нужно просмотреть каталог магазина-конкурента и сохранить информацию о товарах.
'Этот код извлекает текстовое содержимое из абзацев, имеющих атрибут "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}
Естественно, весь этот код можно использовать в цикле с динамическими переменными.
Вызов iMacros из кода
Любой макрос можно сохранить в файле с расширением iim и использовать в приложениях, написанных на 16 языках программирования. Только надо не забыть установить полную версию (не аддон) iMacros на компьютер или веб-сервер.
Поддерживаемые языки
- ASP
- ASP.NET
- C#
- C++
- Delphi
- FoxPro
- Java
- JavaScript
- Perl
- PHP
- Python
- Power Shell
- Ruby
- TCL
- VBA
- VBS
WWW
- Пользователи iMacros для Firefox могут делиться между собой исходниками с помощью закладок Delicious. Подробности здесь: wiki.imacros.net/iMacros_for_Firefox#Bookmarking
- Полный мануал по iMacros: wiki.imacros.net
- Сайт производителя: imacros.net
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.
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.