使用未命名的提交在未命名的表单上使用www :: mechanize登录

时间:2011-12-19 02:57:05

标签: perl login www-mechanize

我想使用perl登录(稳定)到http://site/signin/index.php这样的网站。 此页面有表格并提交无名称。 我怎么能登录? 这是一个登录的示例代码:

my $mech = WWW::Mechanize->new();
$mech -> cookie_jar(HTTP::Cookies->new());
$mech -> get($login_url);
$mech -> form_name('theform');
$mech -> field ('username' => $username);
$mech -> field ('password' => $password);
$mech -> click ('log in');
print $mech-> content();

这是我的表格

<form method="post" action="">
<table id="regform" cellspacing="5">
<tr>
<td class="regparam">email:</td>
<td><input type="text" name="email" value="" tabindex="1" maxlength="100" style="font-family: Tahoma; font-size: 10pt;  font-weight: bold; border: 1px solid #9AD7F8; background-color: #ffffff" class="reginp" /></td>
</tr>
<tr>
<td class="regparam">password:</td>
<td><input type="password" name="password" value="" tabindex="2" maxlength="100" style="font-family: Tahoma; font-size: 10pt;  font-weight: bold; border: 1px solid #9AD7F8; background-color: #ffffff"  class="keyboardInput" /></td>
</tr>
<tr>
<td></td>
<td valign="middle">
<button type="submit" style="font-weight:bold; tabindex="4" class="subm-posts">login</button>
<label style="margin:0px; padding:0px; margin-left:10px; margin-top:7px; float:left; clear:none;">
<input type="checkbox" name="rememberme" value="1"  tabindex="3" />
<span style="padding:2px; padding-left:5px;">remember me</span>
</label>
</td>
</tr>
</table>
</form>

2 个答案:

答案 0 :(得分:1)

不是按名称引用表单,而是可以通过number引用它,即它出现在表单中的位置:

$mech->form_number( 1 );

表格编号从一开始。

同样,由于表单中只有one button,您只需使用

即可
$mech->click( );

这将提交表单,因为它会点击按钮。

答案 1 :(得分:0)

my $mech = WWW::Mechanize->new();
$mech->cookie_jar( HTTP::Cookies->new() );
$mech->get($login_url);

$mech->submit_form(
    form_name => 'theform',
    fields    => {
        username => $username,
        password => $password,
    },
);

print $mech->content();