我应该如何查看这样的复选框:
<td><center><INPUT name="test2%40mydomain.com_notmetoo" type="CHECKBOX" value="off" ></center></td>
使用Perl的LWP :: UserAgent模块?
此代码不执行此操作(输出就像是在未选中复选框的情况下提交的 - 即网页刷新并清除复选框。)
#!/usr/bin/perl
use LWP::UserAgent;
$ua = new LWP::UserAgent;
$ua->cookie_jar({ file => "$ENV{HOME}/.mailmanrc" });
$res = $ua->post('http://mydomain.com/mailman/admin/test1_mydomain.com/members/list',
Content_Type => 'form-data',
Content => [
'test2%40mydomain.com_notmetoo' => 'on',
setmemberopts_btn => 'Submit Your Changes'
]
);
if ($res->is_success) {
print $res->decoded_content;
print "Changed user setting...I hope!\n";
}
else {
die $res->status_line;
}
我不确定为什么“@”在元素名称中表示为“%40”(任何想法?),但我也尝试过: 'test2 \%40mydomain.com_notmetoo'=&gt; '上', 和 'test2@mydomain.com_notmetoo'=&gt; '上', 没有成功。
网站上似乎没有JavaScript(即在禁用JavaScript的浏览器中它可以正常工作)。我无法让它在Perl中工作。
感谢。
特里。
更新#1:这是我在检查Test2的notmetoo框后提交时Firefox的'Tamper Data'扩展名的POSTDATA值:
POSTDATA =-----------------------------2921376274802
Content-Disposition: form-data; name="findmember"
-----------------------------2921376274802
Content-Disposition: form-data; name="test1%40mydomain.com_realname"
Test1
-----------------------------2921376274802
Content-Disposition: form-data; name="user"
test1%40mydomain.com
-----------------------------2921376274802
Content-Disposition: form-data; name="test1%40mydomain.com_hide"
on
-----------------------------2921376274802
Content-Disposition: form-data; name="test1%40mydomain.com_notmetoo"
on
-----------------------------2921376274802
Content-Disposition: form-data; name="test1%40mydomain.com_plain"
on
-----------------------------2921376274802
Content-Disposition: form-data; name="test1%40mydomain.com_language"
en
-----------------------------2921376274802
Content-Disposition: form-data; name="test2%40mydomain.com_realname"
Test2
-----------------------------2921376274802
Content-Disposition: form-data; name="user"
test2%40mydomain.com
-----------------------------2921376274802
Content-Disposition: form-data; name="test2%40mydomain.com_hide"
on
-----------------------------2921376274802
Content-Disposition: form-data; name="test2%40mydomain.com_notmetoo"
off
-----------------------------2921376274802
Content-Disposition: form-data; name="test2%40mydomain.com_plain"
on
-----------------------------2921376274802
Content-Disposition: form-data; name="test2%40mydomain.com_language"
en
-----------------------------2921376274802
Content-Disposition: form-data; name="test3%40mydomain.com_realname"
Test3
-----------------------------2921376274802
Content-Disposition: form-data; name="user"
test3%40mydomain.com
-----------------------------2921376274802
Content-Disposition: form-data; name="test3%40mydomain.com_hide"
on
-----------------------------2921376274802
Content-Disposition: form-data; name="test3%40mydomain.com_plain"
on
-----------------------------2921376274802
Content-Disposition: form-data; name="test3%40mydomain.com_language"
en
-----------------------------2921376274802
Content-Disposition: form-data; name="setmemberopts_btn"
Submit Your Changes
-----------------------------2921376274802
Content-Disposition: form-data; name="allmodbit_val"
0
-----------------------------2921376274802--
这有助于任何人帮助我吗?
答案 0 :(得分:2)
我对复选框的理解是value=
指定了复选框选中时变量的值。因此,令人困惑的value="off"
实际上意味着您需要
'test2%40mydomain.com_notmetoo' => 'off'
表示已选中此框。
答案 1 :(得分:1)
在您的情况下,复选框在选中时将显示“off”值。如果值类似于value="checkbox1"
,这将不那么令人困惑。在这种情况下,复选框的值在选中时为checkbox1
。
此外,考虑将WWW::Mechanize
用于此类基本网络操作(不使用javascript),它更容易和直观,WWW::Mechanize
也是LWP::UserAgent
的子类,因此您仍然可以使用LWP方法