WWW::Mechanize::PhantomJS Javascript 表单提交

WWW::Mechanize::PhantomJS Javascript form submit

尝试了很多次之后,我仍然不知道如何使用 WWW::Mechanize::PhantomJS 执行此 post 方法。它在 onsubmit="_onlickWeiter()"

上使用 javascript
<form name="NeuerMBAntrag" action="Mahnantrag" method="post" onsubmit="_onclickWeiter()">
<input name="_ts" value="1464398188768" type="hidden">
<input name="Command" value="neuerMBAntrag" type="hidden

_onClickWeiter()

function _onclickWeiter()
{
   document.NeuerMBAntrag.Command.value = "neuerMBAntragForce" ;
   document.NeuerMBAntrag.submit() ;
}

如果我调用 $mech->submit() 它不会加载。

该网站只有按钮,没有输入字段,<form></form> 标签内的页面上有两个按钮。

按钮 1:

<input src="images/butt_neuerAntrag_120x19.gif" name="neuer Antrag" alt="Weiter mit neuem Antrag, alte Eingaben gehen verloren (Alt+N)" accesskey="n" tabindex="2" border="0" type="image">

$mech->click('neuer Antrag'); 无效。

<form name="NeuerMBAntrag" action="Mahnantrag"  method="post" onSubmit="_onclickWeiter()">
<input type="hidden" name="_ts" value="1464399779271" />
<input type="hidden" name="Command" value="neuerMBAntrag">

<table border="0" cellspacing="0" width="750">
    <tr bgcolor="#666666">
    <td width="10">&#160;</td>
    <td width="10">&#160;</td>
    <td width="10">&#160;</td>
    <td width="80">&#160;</td>
    <td width="10">&#160;</td>
    <td width="320">&#160;</td>
    <td width="110">&#160;</td>
    <td width="110">&#160;</td>
    </tr>

  <tr bgcolor="#666666">
    <td colspan="2">&nbsp;</td>
    <td class="zeile1" colspan="4">Antrag auf Erlass eines Mahnbescheids</td>

    <td colspan="2" align="right"><table cellspacing="1" cellpadding="1">
  <tr>
    <td><img src="images/ico_bevollmaechtigter_off.gif" alt="Prozessbevollm&auml;chtigter (noch keine Angaben)" title="Prozessbevollm&auml;chtigter (noch keine Angaben)"></td>
    <td><img src="images/ico_antragsteller_off.gif" alt="Antragsteller (noch keine Angaben)" title="Antragsteller (noch keine Angaben)"></td>
    <td><img src="images/ico_antragsgegner_off.gif" alt="Antragsgegner (noch keine Angaben)" title="Antragsgegner (noch keine Angaben)"></td>
    <td><img src="images/ico_forderung_off.gif" alt="Hauptforderung/Zinsen (noch keine Angaben)" title="Hauptforderung/Zinsen (noch keine Angaben)"></td>
    <td><img src="images/ico_nebenforderung_off.gif" alt="Auslagen und Nebenforderungen (noch keine Angaben)" title="Auslagen und Nebenforderungen (noch keine Angaben)"></td>
    <td><img src="images/ico_allgemein_antrag_off.gif" alt="Allgemeine Angaben (noch keine Angaben)" title="Allgemeine Angaben (noch keine Angaben)"></td>
    <td><img src="images/ico_datenuebersicht_off.gif" alt="Daten&uuml;bersicht" title="Daten&uuml;bersicht"></td>
    <td><img src="images/ico_drucken_off.gif" alt="Druck" title="Druck"></td>
  </tr>
</table></td>
  </tr>
</table>
<table border="0" cellspacing="0" width="560">
    <tr>
     <td width=10></td>
     <td width=300></td>
     <td width=240></td>
     <td width=10></td>
  </tr>
    <tr>
     <td>&nbsp;</td>
     <td>&nbsp;</td>
     <td colspan="2" class="literal" align="right" valign="bottom"><a><img src="images/butt_hilfe.gif" border="0" alt="Einführung" onClick="hilfe('hilfe/einfuehrung.htm')"></a>&nbsp;&nbsp;</td>
  </tr>
    <tr>
        <td class="text">&nbsp;</td>
        <td class="text" colspan="2">
            <p>Der Antrag auf Erlass eines Mahnbescheids ist in 8 Schritte aufgeteilt.
                <ol>
                    <li>Schritt: <img src='https://www.online-mahnantrag.de:443/omahn/images/ico_bevollmaechtigter_on_mini.gif'> Prozessbevollm&auml;chtigten erfassen (sofern vorhanden)
                    <li>Schritt: <img src='https://www.online-mahnantrag.de:443/omahn/images/ico_antragsteller_on_mini.gif'> Antragstellerdaten erfassen
                    <li>Schritt: <img src='https://www.online-mahnantrag.de:443/omahn/images/ico_antragsgegner_on_mini.gif'> Antragsgegner erfassen
                    <li>Schritt: <img src='https://www.online-mahnantrag.de:443/omahn/images/ico_forderung_on_mini.gif'> Anspruch/Forderung erfassen
                    <li>Schritt: <img src='https://www.online-mahnantrag.de:443/omahn/images/ico_nebenforderung_on_mini.gif'> Auslagen und Nebenforderung erfassen (sofern vorhanden)
                    <li>Schritt: <img src='https://www.online-mahnantrag.de:443/omahn/images/ico_allgemein_antrag_on_mini.gif'> Allgemeine Angaben zum Antrag
                    <li>Schritt: <img src='https://www.online-mahnantrag.de:443/omahn/images/ico_datenuebersicht_on_mini.gif'> &Uuml;berpr&uuml;fen der Antragsdaten
                    <li>Schritt: <img src='https://www.online-mahnantrag.de:443/omahn/images/ico_drucken_on_mini.gif'> Druck/Antragsabgabe
                </ol>
            </p>
            <p>Geben Sie zu jedem Schritt die erforderlichen Daten ein. Mit <img src="images/butt_weiter_rund_klein.gif" width=13 height=13 alt="" border="0"> best&auml;tigen Sie Ihre Eingabe und gelangen zum jeweils n&auml;chsten Schritt oder Teilschritt.</p>
            <p>Haben Sie schon Daten erfa&szlig;t, m&ouml;chten aber von vorne beginnen, so bet&auml;tigen Sie "Neuer Antrag" auf dieser Seite. Alle bisher erfassten Daten werden dann gel&ouml;scht.</p>
        <td class="text">&nbsp;</td>
    </tr>
    <tr>
        <td>&nbsp;</td>
        <td class="text">
        <a href="/omahn/Mahnantrag?_ts=9161743-1464399779271&Command=showBundesland" target="main" accesskey="z" tabindex=3><img src="images/butt_zurueck_60x19.gif" border="0" alt="Zur Auswahl des Bundeslandes (Alt+Z)" ></a>
<!--            <p>Wir w&uuml;nschen Ihnen viel Spa&szlig; bei der Eingabe Ihrer Daten.</p>-->
        </td>
        <td align="right" height=40 id="." valign="BOTTOM" width=".">
        <a href="/omahn/Mahnantrag?_ts=9161744-1464399779271&Command=neuerMBAntrag" target="main"><img src="images/butt_weiter_60x19.gif" border="0" name="weiter"  alt="Weiter, der aktuelle Antrag bleibt erhalten (Alt+W)" accesskey="w"  tabindex=1></a>&#160;&#160;

        <input type="image" src="images/butt_neuerAntrag_120x19.gif" border="0" name="neuer Antrag"  alt="Weiter mit neuem Antrag, alte Eingaben gehen verloren (Alt+N)" accesskey="n" tabindex=2>&#160;&#160;</td>
        <td class="text">&nbsp;</td>
    </tr>
</table>
</form>

看起来 _onClickWeiter() 添加了另一个变量 document.NeuerMBAntrag.Command.value = "neuerMBAntragForce" ; 然后提交。在不丢失 <form></form>

内的 <input></input> 字段的情况下,我如何用 WWW::Mechanize:PhantomJS 最简单的方式调用它

看来我的问题已经解决了。该页面正在使用多个框架。 $mech->submit() 在这种形式上工作正常,但前提是我 select 正确的框架。

sub f { my $mech = shift; my @frames = $mech->expand_frames(); return $frames[2]; };
$mech->activate_container(f( $mech ));

似乎 $frames[2] 包含提交表单的内容。一旦 selected $mech->submit() 工作正常。

我之前的所有尝试都在 header iframe 中,它实际上只是一个粗体标题行。