Thread WWW::Mechanize zwei Formulare absenden (7 answers)
Opened by bianca at 2014-08-19 08:47

bianca
 2014-08-19 08:47
#176909 #176909
User since
2009-09-13
6978 Artikel
BenutzerIn

user image
Glaube, hier ist meine Frage besser aufgehoben.
Ich hole mit my $response = $mech->get($link) eine HTML Seite und bekomme ein Session-Cookie. Diese Seite enthält zwei <form>. Nun selektiere ich das erste mit $mech->form_name($formname), befülle die Felder und sende sie mit $response = $mech->submit() ab, bekomme ein Token.

Nun steckt ja im $mech Objekt vermutlich die Ergebnisseite. Jetzt möchte ich gern das andere Formular von genau der selben Seite von eben absenden. Wie komme ich jetzt nochmal quasi zurück zur vorigen Seite, um das zweite Formular zu senden. Die vorige Seite darf aber nicht neu geladen werden, sonst kommt wieder ein neues Sessioncookie, was dann wieder nicht zur Token-<form> passt.

Im Browser passiert das Ganze über Javascript. Erstes Formular wird in ein 0 x 0 Pixel großes iFrame geladen, Token kommt, wird ins zweite Formular gesetzt, zweites Formular wird abgesendet.

An dem Aufbau kann ich nichts ändern, muss ich so hinnehmen.
Eine Überlegung war, nach dem Laden der Seite mir eines der beiden <form>'s zu speichern mittels my $form2 = $mech->form_name($formname2) denn laut Doku gibt form_name() ein CPAN:HTML::Form Object zurück. Aber wie kann ich dann Mech nach dem ersten Formular sagen, es soll die Form in Objekt $form2 absenden?
Ein Versuch mit $mech->$form2 ist gescheitert mit
Quote
Can't locate object method "Form=HASH(0x2e6053c)" via package "HTML" at...

Ich hab auch gesehen, dass CPAN:HTML::Form selbst Möglichkeiten hat, ein Formular abzusenden. Aber wie bekomme ich das in die Mech Sphäre mit dem Session-Cookie?
10 print "Hallo"
20 goto 10

View full thread WWW::Mechanize zwei Formulare absenden