Простота решения задач в XWeb Human Emulator
Как пример приведу свою первую задачу и свой первый скрипт. Сразу оговорюсь, я не программист и с PHP знаком на уровне “пару раз редактировал страницы”. Задача у меня возникла следующая: написать регистратор аккаунтов на www.xanga.com. Ну что ж, надо так надо
Создаем в программе новый скрипт, получаем сразу заготовку:
<?php // The following code is required to properly // run XWeb Human Emulator require("../Templates/xweb_human_emulator.php"); // navigate to google $browser->navigate("http://www.google.com"); // wait on browser $browser->wait(1); // Quit $app->quit(); ?>
В строке $browser->navigate(“http://www.google.com”); – меняем URL на интересующий нас, ну и комментарий можно поменять, конечно:
<?php // The following code is required to properly // run Xedant.com Human Emulator require("../Templates/xweb_human_emulator.php"); // navigate to selected site $browser->navigate("http://www.xanga.com/register.aspx"); // wait on browser $browser->wait(1); // Quit $app->quit(); ?>
Для ожидания загрузки браузером страницы, для корректной отработки скрипта, пользуйтесь функцией $browser->wait(1);.
Для регистрации в каталоге, нам понадобится генератор логинов и паролей, потому я включил заранее припасенный в скрипт и задал генерацию переменных логин, пароль и e-mail (В xanga.com не требуется настоящий ящик, потому сгенерируем фэйковый):
include("gen_login_pass.php"); $lgn=generate_login(8); $pwd=generate_password(10); $email=generate_login(9);
Пора переходить к заполнению полей в форме регистрации. Для определения нужных полей я воспользовался функцией нумерации элементов на странице в Human Emulator. Она расположена в меню Debug->Numerated. В подменю список элементов к нумерации, мне же нужны в данный момент только Input Element (сочетание горячих клавиш CTRL+ALT+I). В Input элементах страницы появляются нумерация и название каждого элемента, а так же в нижнем окне “Debug” программы Human Emulator появляется список команд для работы с найденными Input элементами на странице. Таким образом я получил следующую часть кода:
// fill all requred fields $input->set_value_by_number(0,$lgn); $input->set_value_by_number(1,$pwd); $input->set_value_by_number(2,$pwd); $input->set_value_by_number(3,"$email@host.com");
Следующим пунктом мне понадобилось распознание капчи. Для определения капчи на странице я так же воспользовался функцией нумерации элементов на странице, только на этот раз Debug->Numerated->Image Element (сочетание горячих клавиш CTRL+ALT+P). При наведении на графические элементы страницы отображается номер элемента на странице. Для распознания капчи я воспользовался следующей командой:
$captcha =$image->recognize_captcha(1,"login","password");
где “1” – это номер капчи на странице, а login и password – это логин и пароль для доступа к нашему сервису распознания капчи
Распознанную капчу вставляем в Input Element с номером 4 на странице:
$input->set_value_by_number(4,$captcha);
Далее необходимо заполнить поля даты рождения, для этого мне пришлось поискать как в PHP использовать рандомайзер
Как итог получилось следующее:
// set month - may $listbox->select_num_value_by_number(0,rand (1,12)); // set day -1 $listbox->select_num_value_by_number(1,rand (1,28)); // set year as 1980 $listbox->select_num_value_by_number(2,rand (40,55));
А так же сделал установку галочки согласия с правилами следующей командой:
$checkbox->set_checked_by_number(0,"true");
где “0” – это номер элемента “checkbox” на странице (он единственный на странице, потому сложностей с поиском номера не возникло
)
Теперь мне необходимо сохранить логин и пароль в файл в виде login;password. Для этого в скрипте gen_login_pass.php (скачать можно тут) я добавил функцию, найденную мной в Интернете:
function add_file($path,$page_body) { $file=fopen($path,"a+"); fputs($file,$page_body); // close out file fclose($file); }
А в скрипте регистрации Xanga строку:
// save login and password to file add_file(“C:test.txt”,$lgn.";".$pwd."\n")
Осталось нажать кнопку “Create Account!”. Для этого воспользовался все той же функцией Human Emulator – нумерация элементов на странице. На этот раз понадобилась функция Debug->Numerated->Button Element (сочетание горячих клавиш CTRL+ALT+B).
// click on button $button->click_by_number(0); $browser->wait_for(10,1);
На второй странице необходимо выбрать тему, а так же предлагают позвать друзей. Но я решил воздержаться от этого предложения и ограничится выбором темы.
// Random selecting theme $image->click_by_number(rand (1,6)); $browser->wait_for(10,1);
Если интересует какая-либо конкретная тема, просто нужно заменить rand (1,6) на номер этой темы, например $image->click_by_number(3); Осталось только подтвердить выбор нажатием кнопки:
// click on button $button->click_by_number(0); $browser->wait_for(10,1);
Из заготовки осталось окончание скрипта:
// This code is required to correctly display messages in "Debug" tab $app->quit(); ?>
Вот собственно и все, мой первый самостоятельный скрипт готов. На его написание у меня ушло минут 40, т.к. я далек от программирования, но главное – результат
Скрипт:
<?php // The following code is required to properly // run XWeb Human Emulator require("../../Templates/xweb_human_emulator.php"); // navigate to selected site $browser->navigate("http://www.xanga.com/register.aspx"); $browser->wait(1); include("gen_login_pass.php"); $lgn=generate_login(8); $pwd=generate_password(10); $email=generate_login(9); // fill all requred fields $input->set_value_by_number(0,$lgn); $input->set_value_by_number(1,$pwd); $input->set_value_by_number(2,$pwd); $input->set_value_by_number(3,"$email@host.com"); $captcha =$image->recognize_captcha(1,"login","password"); $input->set_value_by_number(4,$captcha); // set month - may $listbox->select_num_value_by_number(0,rand (1,12)); // set day -1 $listbox->select_num_value_by_number(1,rand (1,28)); // set year as 1980 $listbox->select_num_value_by_number(2,rand (40,55)); // set i agrre check as true $checkbox->set_checked_by_number(0,"true"); // save login and password to file add_file(“C:test.txt”,$lgn.";".$pwd."\n") // click on button $button->click_by_number(0); $browser->wait_for(10,1); //Second Page // Random selecting theme $image->click_by_number(rand (1,6)); $browser->wait_for(10,1); // click on button $button->click_by_number(0); $browser->wait_for(10,1); // This code is required to correctly display // messages in "Debug" tab $app->quit(); ?>
Видео работы скрипта (Просматривается в Internet Explorer)
Автор: Алексей Лагерь
