понедельник, 12 августа 2013 г.

Статья "Быстрый старт" от пользователя Human Emulator

Познакомился с программой Human Emulator около двух недель назад. Некоторое время потратил на изучение видео материалов и мануалов и в этой статье опишу первое шаги и написание простенького скрипта с помощью нее. Надеюсь многим этот материал будет хорошим подспорьем.

После запуска программы мы видим интерфейс программы: слева окошко - скрипты, верхнее окошко – встроенный браузер, под окном браузера обычно размещают панель отладки (окна можно перемещать как вам удобнее). Чтобы приступить к написанию скрипта достаточно кликнуть на панели скриптов (левая панель) вкладку «Быстрый старт» и выбрать из папки My Scripts стандартный файл с именем MyScript.php или MyScript1.php или т.п., если не существует подобных файлов их всегда можно легко создать, кликнув «Быстрый старт» правой кнопкой мыши и выбрать «новый»(либо сочетание клавиш ctrl+N). Далее можно переименовать файл для удобства, к примеру я буду писать скрипт для facebook, поэтому назову файл fbook.php, для этого достаточно кликнуть правой кнопной мыши по открытой вкладке выбранного файла (MyScript.php) рядом с «быстрым стартом» и выбрать «переименовать». Затем нужно обновить дерево для того, чтобы изменения вступили в силу, для этого нужно кликнуть по папке My Sсripts правой кнопкой мыши и выбрать пункт «перезагрузить дерево» (Alt+T).

Переходим в наш файл fbook.php и видим следующее:

<?php
$xhe_host = "127.0.0.1:7010";
// The following code is required to properly run XWeb Human Emulator
require("../Templates/xweb_human_emulator.php");
// Quit
$app->quit();
?>

$xhe_host ="127.0.0.1:7015"; - хост хумана. Его можно посмотреть в левом верхнем углу окна, в моем случае localhost:7015.

Далее идет подключение функций (встроенных возможностей) самого хумана.

Итак, будем писать скрипт для facebook – добавление через определенные промежутки времени комментарии на стену.

Для удобства чтения скрипта обычно используют комментарии в самом скрипте // после:

require("../Templates/xweb_human_emulator.php");

// скрипт
//переходим на facebook.com
$browser->navigate('https://facebook.com/');

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

Далее можем проверить переход на нужную страницу, нажав на зеленый треугольник, запустив тем самым работу скрипта.

Мы перешли на нужную страницу, нам нужно зайти на нашу страницу. Вводим логин и пароль: правой кнопкой мыши во встроенном браузере кликаем в пустое поле логина и выбираем пункт «изменить элемент» и выбираем самую верхнюю строку (она означает изменить элемент по имени, для тех кто знаком с англ.яз. перевод не составит труда), так же со строкой пароля, а затем кликаем по кнопке войти и выбираем пункт «щелкнуть», а в нем 4-й пункт сверху. Должно получиться следущее:

$input->set_value_by_name("email","jinnot@mail.ru");
$input->set_value_by_name("pass","jinnotdog");
$button->click_by_inner_text("Войти",false);

Здесь я вбивал свои данные в пустые строки кода (jinnot@mail.ru и jinnotdog)

Зашли на страницу. Далее нам нужно вводить какой-либо текст в окно статуса.

Зададим фокус на окно ввода текста, все так же клик по окну для ввода – задать фокус – 3й пункт (через атрибут), далее задаем полную эмуляцию ввода с клавиатуры ($keyboard – полная эмуляция ввода) и клик по кнопке «опубликовать». Должно получится следующее:

$textarea->set_focus_by_attribute("id","u_0_m",false);
$keyboard->input("тестовый текст",20);
$btn->click_by_inner_text("Опубликовать",false);

Данный пример написан с учетом того, чтобы скрипт работал в демоверсии. Именно поэтому мы используем полную эмуляцию клавиатуры, вместо эмуляции событий. Эмуляция событий отключена в демонстрационной версии программы.

В итоге получился такой скрипт (с добавленными комментариями):


<?php

$xhe_host ="127.0.0.1:7010";

// The following code is required to properly run XWeb Human Emulator
require("../Templates/xweb_human_emulator.php");

// скрипт
// переход на фейсбук
$browser->navigate('https://facebook.com/');

// ввод логина и пароля
if ($input->is_exist_by_name("email"))
{
$input->set_value_by_name("email","jinnot@mail.ru");
$input->set_value_by_name("pass","jinnotdog");
$button->click_by_inner_text("Войти",false);
}

// переход к статусу
$anchor->click_by_inner_text("Лента новостей",false);
// пауза между действиями скрипта ( 2 секунды)
sleep(2);

// ввод статуса
$textarea->set_focus_by_attribute("id","u_0_m",false);
sleep(3);
// ввод текста (20 – задержка между нажатием клавиш в мс)
$keyboard->input("тестовый текст",20);

sleep(3);
$btn->click_by_inner_text("Опубликовать",false);
// Quit
$app->quit();
?>

Ввод логина и пароля я сделал через цикл с помощью функции хумана «проверить существование элемента», т.к. , если не осуществлен корректный выход с вашей страницы, то при заходе на нее снова не нужно вводить логин и пароль.

Так же рекомендуется ставить sleep() между действиями, т.к. в зависимости от мощности компьютера и скорости интернета, хуман может не успевать обрабатывать действия скрипта, обычно 1-2 секунды ожидания хватает.

С помощью команды sleep мы так же можем сделать, так, что через определенные промежутки времени вводился статус, например:


$textarea->set_focus_by_attribute("id","u_0_m",false);
sleep(2);
// ввод текста (20 – задержка между нажатием клавиш в мс)
$keyboard->input("тестовый текст1",20);
sleep(2);
$btn->click_by_inner_text("Опубликовать",false);
sleep(60);
$textarea->set_focus_by_attribute("id","u_0_m",false);
sleep(2);
// ввод текста (20 – задержка между нажатием клавиш в мс)
$keyboard->input("любой текст",20);
sleep(2);
$btn->click_by_inner_text("Опубликовать",false);
sleep(120);
$textarea->set_focus_by_attribute("id","u_0_m",false);
sleep(2);
// ввод текста (20 – задержка между нажатием клавиш в мс)
$keyboard->input("еще какой-то текст",20);
sleep(2);
$btn->click_by_inner_text("Опубликовать",false);

Теперь статус будет меняться на заданный текст через 1 и 2 минуты.

Можно настроить работу программы с файлами. Это позволит, например, менять статусы заранее подготовленным текстом в текстовом документе. Подробная интсрукция по работе с файлами приведена на сайте x-scripts.com

Так же полезной будет статья по организации циклов для вашего скрипта.

Всем спасибо за внимание. Если статья полезна - пишите.

Более подробно о программе, а так же ознакомительное видео Вы всегда можете найти на официальном сайте программы Human Emulator