1

次のようなチェックボックスをオンにするにはどうすればよいですか。

<td><center><INPUT name="test2%40mydomain.com_notmetoo" type="CHECKBOX" value="off" ></center></td>

PerlのLWP::UserAgentモジュールを使用しますか?

このコードはそれを行いません(出力は、チェックボックスがチェックされていない状態で送信されたかのようになります。つまり、Webページが更新され、チェックボックスがオフになります)。

#!/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' =>'on'、 および ' test2@mydomain.com_notmetoo'=>' on'、 成功しませんでした。

WebサイトにJavaScriptがないようです(つまり、JavaScriptが無効になっているブラウザでは正常に動作します)。Perlで動作させることができません。

ありがとう。

テリー。


更新#1:Test2のnotmetooボックスをチェックした後に送信したときのFirefoxの「改ざんデータ」拡張機能からの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--

それは誰かが私を助けるのを助けますか?

4

2 に答える 2

2

チェックボックスについての私の理解は、チェックボックスがチェックvalue=されたときに変数が持つ値を指定するということです。だからあなたの混乱value="off"は実際にはあなたが必要とすることを意味します

'test2%40mydomain.com_notmetoo' => 'off'

ボックスがチェックされていることを示します。

于 2012-08-15T01:58:31.970 に答える
1

あなたの場合、チェックボックスをオンにすると、チェックボックスの値が「オフ」になります。値が のようなものである場合、これはそれほど混乱しませんvalue="checkbox1"。この場合、チェックボックスの値はチェックさcheckbox1れたときになります。

また、WWW::Mechanizeこのような基本的な Web 操作 (javascript を使用しない) を使用することを検討してください。これははるかに簡単で直感的でありWWW::Mechanize、のサブクラスであるLWP::UserAgentため、LWP のメソッドを引き続き使用できます。

于 2012-08-15T04:31:56.463 に答える