Schrift
[thread]2910[/thread]

WWW::Mechanize + Radiobutton

Leser: 1


<< >> 3 Einträge, 1 Seite
skontox
 2004-06-24 03:36
#29280 #29280
User since
2003-08-06
193 Artikel
BenutzerIn
[default_avatar]
Guten Tag!
Ich hab die Tage mal mit dem Perlmodul WWW::Mechanize herumexperimentiert.
Läuft auch ganz gut. Nun habe ich allerdings ein kleines Problem. Ich wollte eine Website mit dem Modul bearbeiten die verschieden Radiobuttons beinhaltet. Nun wollte ich, dass ein bestimmter Radio-Button den value=2 bekommt, aber ich finde nicht die richtige Methode in WWW::Mechanize um das zu realisieren. Mein Browse-Objekt nennt sich standardmäßig $mech.
Ich hab es mit dem probiert:

$mech->set_visible( [ radio => "a_r_2381012" ] ) ;
$mech->select("a_r_2381012", "2");

und noch einige mehr, aber irgendwie klappt das nicht, denn aus der Doku werde ich auch nicht so richtig schlau, wie ich ein Radiobutton einen Wert zuweise, sprich ich habe eigentlich ja drei radio-buttons allerdings mit dem gleichen namen, ich kann die drei nur über den Value-Wert unterschiedlich auswählen (d.h aktivieren).

Hat hier jemand vielleicht eine Idee oder kleines Beispiel wie ich das machen kann?

Gruß skontox\n\n

<!--EDIT|skontox|1088033873-->
skontox
 2004-06-24 05:08
#29281 #29281
User since
2003-08-06
193 Artikel
BenutzerIn
[default_avatar]
Das einzigen brauchbaren Sachen, die ich unter google finden konnte waren die Anweisungen:

$mech->current_form­->value("radio_b"­, "2");

wobei "radio_b" der Name des Radiobuttons auf der Seite ist und "2" der neue Wert (value). Das klappt allerdings bei mir auch nicht, da sich der radiobutton wohl nicht in der "current_form" befindet. Aber ich kann ja leider auch nicht automatisiert herausbekommen in welcher form sich dieser spezielle Radiobutton befindet.
Naja die zweite Lösung sah auch gut aus:

$mech->field( "radio_b", "2" );

klappt aber leider auch nicht!
So ein mißt, warum haben die nicht ne Methode "set_radio"
oder soetwas implementiert, so wie die Methode "tick" für Checkbuttons.
Naja, vielleicht hat ja jemand von Euch ne Lösung für mich, das würde mich natürlich sehr freuen. ;-)

Gruß skontox
coax
 2004-06-24 06:51
#29282 #29282
User since
2003-08-11
457 Artikel
BenutzerIn
[default_avatar]
Erstmal die Website holen
Code: (dl )
1
2
my $mech = new WWW::Mechanize;
$mech->get('http://www.example.org/');


Wenn du nun mehrere Formulare auf deiner Website hast und der Radiobutton nicht gerade im ersten Formular liegt,
musst du zuerst einmal das Formular ueber die Nummer oder den Namen als aktives Formular waehlen.
Code: (dl )
1
2
3
$mech->form_number(2); # zweites Formular

$mech->form_name('suche'); # Suchformular


Dann kannst du auch, wenn die Radiobutton-Gruppe im zweiten Formular als Namen 'radio_b' hat, mit
Code: (dl )
$mech->field('radio_n', 2);

auf den Wert 2 setzen.

Mit set-visible() kannst du die Formularfelder der Reihe nach ausfuellen
Wuerde das Formular aus zwei Textfeldern (text1 und text2), einen Radiobutton (radio1),
einen Textfeld (text3) und noch einen Radiobutton (radio2) bestehen, dann wuerden nach
Code: (dl )
$mech->set_visible('abc', 'def', 2, 'ghi', 4);

die Formularfelder so gesetzt sein:
text1:abc  text2:def  text3:ghi  radio1:2  radio2:4

Code: (dl )
1
2
# nur radio1 und radio2 setzen
$mech->set_visible(['radio' => 2], ['radio' => 4]);

radio1:2 radio2:4

Die skalaren Parameter stehen fuer Formularfelder jeden Typs, anonyme Arrays haben als
erstes Element den Typ des Formularfest (radio, textfield, checkbox...) und als
zweites Element den Wert auf den es gesetzt werden soll.

Ich weisz ja nicht was du dann mit der Website anstellst (vielleicht liegt ja auch da der Fehler),
so koenntest du dann den HTML-Content zum Beispiel ausgeben:
Code: (dl )
1
2
$mech->submit();
print $mech->content();


Grusz Christian.
,,Das perlt aber heute wieder...'' -- Dittsche
<< >> 3 Einträge, 1 Seite



View all threads created 2004-06-24 03:36.