Test :: WWW :: Mechanize - это хороший путь.
Test :: WWW :: Mechanize является подклассом WWW :: Mechanize , а Test::WWW::Mechanize->new
возвращает объект, который является подклассом LWP :: UserAgent . Так что вам очень поможет, если вы прочитаете и поймете документацию для этих библиотек. Например, документация WWW :: Mechanize объяснит вам, как отправить форму и получить ее содержимое.
Пример
Вот пример, который проверяет одновременный доступ 2 пользователей и показывает, как проверить результаты (адаптировано из учебника по тестированию Catalyst ):
my $ua1 = Test::WWW::Mechanize->new; # user agent 1, Bud
my $ua2 = Test::WWW::Mechanize->new; # user agent 2, Ace
# Log in as each user
$ua1->get_ok("http://localhost/login?username=Bud&password=xxx", "Login 'Bud'");
$ua2->get_ok("http://localhost/login?username=Ace&password=xxx", "Login 'Ace'");
# Go back to the login page and it should show that we are already logged in
$_->get_ok("http://localhost/login", "Return to '/login'") for $ua1, $ua2;
$_->title_is("Login", "Check for login page") for $ua1, $ua2;
$_->content_contains("Please Note: You are already logged in as ",
"Check we ARE logged in" ) for $ua1, $ua2;
Краткое объяснение:
get_ok ($ url, $ msg):
Проверяет, можно ли получить $ url. $ msg отображается при сбое теста.
title_is ($ title, $ msg):
Проверяет содержимое тегов ... . $ msg отображается при сбое теста.
content_contains ($ content, $ msg):
Проверяет, соответствует ли регулярное выражение $ content чему-либо в теле html. $ msg отображается при сбое теста.
Еще о чем подумать
Возможно, вы захотите взглянуть на Test :: WWW :: Mechanize :: CGI . Это позволяет вам тестировать без запуска веб-сервера.
WWW :: Mechanize :: FAQ может быть полезным для вас, если вы ищете примеры.