Leser: 27
2010-03-11T15:21:13 GwenDragonWenn das Popup mit Javascript erzeugt wird, hast du Pech.
2010-03-11T15:21:13 GwenDragon
2010-03-12T07:29:56 roliOk, das hatte ich auch schon gefunden, aber wie wird dann ein Login auf per .htaccess geschütze Seiten realisiert? Da kann man ja auch ein PopUp via $mech->credentials("user", "Passwd") bedienen.
2010-03-12T08:17:14 renee.htaccess ist auch kein JavaScript
2010-03-11T16:02:44 biancaWenn Du mal bitte das HTML postest, wo das drin vorkommt, machen wir das zusammen.
<input type="image" name="Sichern" src="/images/save.jpg" onclick="return confirm('Wollen Sie wirklich speichern?')" />
2010-03-12T09:21:15 biancaEinfach nicht beachten, das ist der "Submit"-Button als Image. Einfach das drum herum liegende form mit den Mechanize Methoden ausfüllen und abschicken.
$mech->click("Sichern") or die "Sichern wurde nicht gefunden ...\n";
$mech->submit_form();
2010-03-12T10:32:12 roliNach dem eingeben der gewünschten Daten auf der Seite mache ich:
aber die Daten sind trotzdem nicht gespeichert.Code (perl): (dl )$mech->click("Sichern") or die "Sichern wurde nicht gefunden ...\n";
2010-03-12T10:32:12 roliMit einem anschließenden
jedenfalls klapt's nicht.Code (perl): (dl )$mech->submit_form();
2010-03-12T10:32:12 roliDie Seite enthält nur das eine Formular, so das ich ohne weitere Angaben so zu Ziel kommen sollte, wenn ich's richtig verstanden habe. Zu allem Übel hat die From auch keinen Namen oder ähnliches, was man sie vernünftig addressieren könnte.
2010-03-12T12:44:53 GwenDragonWie wäre es, wenn du noch die CGI-Parameter des Image-Buttons Sichern.x=2 und Sichern.y=2 beim Submit des Formulars mitsendest.
2010-03-12T11:11:14 GwenDragonWenn dein Routerinterface auch ohne Javascript läuft, kannst du WWW-Mechanize nutzen, sonst nicht.
<input type="image" name="Sichern" src="/images/save.jpg" onclick="return confirm('Wollen Sie wirklich speichern?')" />
2010-03-12T11:54:11 GwenDragonEs gibt Routerinterfaces, die laufen nicht ohne Javascript. Dann wird WWW-Mechanize fehlschlagen.
Das meinte ich.
2010-03-12T12:39:35 GwenDragonEs geht hier wohl um ein Administrationsinterface des Routers.
2010-03-12T11:54:11 GwenDragonEs gibt Routerinterfaces, die laufen nicht ohne Javascript. Dann wird WWW-Mechanize fehlschlagen.
Das meinte ich.
2010-03-12T11:41:37 GwenDragonRein theoretisch sollte die Methode click_button oder click von WWW-Mechanize gehen.
2010-03-12T11:41:37 GwenDragonErkennbar, was die Javascript-Funktion noch tut, ist nicht!
Es sei denn es ist wirklich die interne confirm-Funktion von JS.
Sicher könnte vermutet werden, dass es nur ein Popup ist.
1 2 3 4 5
#$mech->click("Sichern") or die "Sichern wurde nicht gefunden ...\n"; $mech->submit_form(with_fields => {"name", "comment", "password1", "password2"} ); $mech->submit(); $mech->submit_form(form_number => 1); $mech->submit_form(form_number => 0);
1 2 3 4 5
my @alle_forms=$mech->forms(); print Dumper @alle_forms; print "\n================================\n"; my @alle_submits=$mech->find_all_submits(); print Dumper @alle_submits;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
$VAR1 = bless( { 'default_charset' => 'UTF-8', 'enctype' => 'application/x-www-form-urlencoded', 'accept_charset' => 'UNKNOWN', 'action' => bless( do{\(my $o = 'https://xyz//create')}, 'URI::https' ), 'method' => 'POST', 'attr' => { 'method' => 'post' }, 'inputs' => [ bless( { '/' => '/', 'value_name' => '', 'src' => '/images/save.jpg', 'name' => 'Sichern', 'onclick' => 'return confirm(\'Wollen Sie wirklich speichern?\')', 'type' => 'image' }, 'HTML::Form::ImageInput' ), bless( { '/' => '/', 'value_name' => '', 'src' => '/images/close.png', 'name' => 'Abbrechen', 'type' => 'image' }, 'HTML::Form::ImageInput' ), bless( { '/' => '/', 'value_name' => '', 'value' => 'dummy', 'name' => 'name', 'type' => 'text' }, 'HTML::Form::TextInput' ), bless( { '/' => '/', 'value_name' => '', 'value' => 'dummy-User mechanisch', 'name' => 'Kommentar-Bemerkung', 'type' => 'text' }, 'HTML::Form::TextInput' ), bless( { '/' => '/', 'value_name' => '', 'value' => 'dummy', 'name' => 'pwd1', 'type' => 'password' }, 'HTML::Form::TextInput' ), bless( { '/' => '/', 'value_name' => '', 'value' => 'dummy', 'name' => 'pwd2', 'type' => 'password' }, 'HTML::Form::TextInput' ), bless( { 'current' => 2, 'menu' => [ { 'value' => '', 'name' => "Bitte waehlen" }, { 'value' => 'admin', 'name' => 'Administrator' }, { 'seen' => 1, 'value' => 'abc', 'name' => 'Bereich-abc' }, { 'value' => 'def', 'name' => 'Bereich-def' }, { 'value' => 'xyz', 'name' => 'Bereich-xyz' } ], 'name' => 'role', 'class' => 'boxinput', 'idx' => 1, 'type' => 'option' }, 'HTML::Form::ListInput' ) ] }, 'HTML::Form' ); ================================ $VAR1 = bless( { '/' => '/', 'value_name' => '', 'src' => '/images/save.png', 'name' => 'Sichern', 'onclick' => 'return confirm(\'Wollen Sie wirklich speichern?\')', 'type' => 'image' }, 'HTML::Form::ImageInput' ); $VAR2 = bless( { '/' => '/', 'value_name' => '', 'src' => '/images/close.png', 'name' => 'Abbrechen', 'type' => 'image' }, 'HTML::Form::ImageInput' );
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Testform</title>
</head>
<body>
<form action="testform.pl">
<input type="hidden" name="testhidden1" value="foo">
<input type="text" name="testtext1" value="bar">
<input type="text" name="testtext2" value="bar2">
<input type="image" name="Sichern" src="/images/plus.png" onclick="return confirm('Wollen Sie wirklich speichern?')" />
</form>
</body>
</html>
1 2 3 4 5 6 7 8 9 10 11 12 13 14
#!/usr/bin/perl -w use strict; use warnings; require 5.8.0; use CGI; use Data::Dumper; use Fcntl qw (:DEFAULT :flock); my $q = CGI -> new; print $q -> header . 'Hallo!'; print '<pre>'; foreach my $var ($q->param) { print "$var => " . $q->param($var) . "\n"; } print '</pre>';
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
#!/usr/bin/perl -w use strict; use warnings; use WWW::Mechanize; # Benutze 1.58 auf Strawberry 5.10.1 my $start_url = 'http://www.url.de/testform.html'; # <= Bitte anpassen!! my ($mech,$response,$data); $mech = WWW::Mechanize -> new ( quiet => 1 ); $response = $mech -> get ($start_url); if (defined $response) { $data = $response -> content; $response = $mech -> form_number (1); $mech -> field ('testtext1','test1'); $mech -> field ('testtext2','test2'); # usw. für jedes Feld $response = $mech -> submit_form (); if (defined $response) { $data = $response -> content; print "Bin drin:\n*****\n$data\n*****\n"; } else { die "Submit fehlgeschlagen!\n"; } } else { die "$start_url ist nicht erreichbar\n"; }
2010-03-12T13:39:23 roliSOLVED!!!!
Zeile 17-24 deines Script's haben die Erleuchtung gebracht!
2010-03-12T13:39:23 roliAllen Vielen Dank und Asche auf mein Haupt!
2010-03-12T14:17:56 roliIrgendwo hatte ich das was gelesen das es an https liegen könnte.
2010-03-12T14:25:32 pqhm. aus der doku: "As of version 0.03, HTTP::Recorder can record SSL sessions."
direkt darunter steht, was man machen soll, damit es funktioniert.
2010-03-12T18:06:42 rolida ich jetzt über das blöde PopUp "rüberkomme", daher hatte ich das Solved gesetzt.
Quotevielleicht sollte ich die zeitspanne für titeländerung doch reduzieren, die möglichkeit ist ja nur für tippfehler gedacht oder um den titel aussagekräftiger zu machen. wie wäre es mit 4 stunden?
2010-03-12T16:45:26 GwenDragonSolved?[/q...
2010-03-12T16:45:26 GwenDragonSolved?
Wenn du meinst, reinschreiben zu müssen, dass es gelöst ist (ist keine Pflicht hier!),
2010-03-12T16:45:26 GwenDragondann nimm das Zeichen für die Quadratwurzel √ das ist das Unicodezeichen U+2466, sowas sieht eher wie ein OK-Haken aus. :)
2010-03-12T16:45:26 GwenDragonAnsonsten ist der Thread ja nicht nur für dich.
2010-03-12T16:45:26 GwenDragonEs kann ja sein, dass sich hier jemand mit einem ähnlichen Problem dranhängt, es aber nicht lösen kann. Dann ist der Titel Solved irreführend. ;)
2010-03-12T21:06:10 roli2010-03-12T16:45:26 GwenDragonEs kann ja sein, dass sich hier jemand mit einem ähnlichen Problem dranhängt, es aber nicht lösen kann. Dann ist der Titel Solved irreführend. ;)
Nach der Logik dürfte nie ein Beitrag als gelößt gekennzeichnet werden, weil ja immer (in Jahren) noch jemand kommen kann die/der das selbe/ähnliche Problem hat.
QuoteIch will einen Beitrag ja auch nicht auf "readonly" setzen, sondern nur zum Ausdruck bringen das mein Problem das hich hier mit eurer Hilfe für mich erflogreich lösen konnte. Wenn also irgendwann jemand sich an den Beitrag "anhängen" nöchte, nur zu. Sie/er hat aber genauso die Möglichkeit einen neuen Beitrag zu eröffnen, und dann darauf zu verweisen, das die Lösung in einem anderen Beitrag (diesem hier im Beispiel) nicht zur Lösung ihres/seines Problems geführt hat.
QuoteAnsonsten "vertragt euch wieder".