2010-04-01 5 views
2

J'essaie de soumettre un formulaire par Mechanize, cependant, je ne suis pas sûr de savoir comment ajouter des objets de valeur nécessaires qui sont faites par du Javascript. Comme Mechanize ne supporte pas encore Javascript, j'essaye d'ajouter les variables manuellement.Mechanize Javascript

La source de forme:

<form name="aspnetForm" method="post" action="list.aspx" language="javascript" onkeypress="javascript:return WebForm_FireDefaultButton(event, '_ctl0_ContentPlaceHolder1_cmdSearch')" id="aspnetForm"> 

<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /> 
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" /> 
<input type="hidden" name="__LASTFOCUS" id="__LASTFOCUS" value="" /> 
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/..." /> 

<script type="text/javascript"> 
<!-- 
var theForm = document.forms['aspnetForm']; 
if (!theForm) { 
    theForm = document.aspnetForm; 
} 
function __doPostBack(eventTarget, eventArgument) { 
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) { 
     theForm.__EVENTTARGET.value = eventTarget; 
     theForm.__EVENTARGUMENT.value = eventArgument; 
     theForm.submit(); 
    } 
} 
// --> 
</script> 

<script language="javascript"> 
<!-- 
var _linkpostbackhit = 0; 
function _linkedClicked(id, key, str, a, b) { 
    if (!b || !_linkpostbackhit) { 
     if (!a) { 
      __doPostBack(key, id); 
      _linkpostbackhit = 1; 
     } else { 
      if (window.confirm(str)) { 
       __doPostBack(key, id); 
       _linkpostbackhit = 1; 
      } 
     } 
    } 
    return void(0); 
} 
// --> 
</script> 

... 

<a href="JavaScript:_linkedClicked('123456','_ctl0:ContentPlaceHolder1:Link', '',0,1);">123456</a> 

... 

</form> 

J'ai essayé d'ajouter les 2 variables:

page.forms.first['__EVENTTARGET'] = '_ctl0:ContentPlaceHolder1:Link' 
page.forms.first['__EVENTARUGMENT'] = '123456' 

et soumettre le formulaire:

page.forms.first.click_button(page.forms.first.buttons.first) 

Le résultat retourné seulement (re) montrent la liste actuelle des liens comme si je n'avais pas cliqué sur l'un des liens.

Toute aide sera appréciée. Merci!

Répondre

2

Lorsque je suis confronté à ce problème, j'utilise généralement Firefox et Firebug pour savoir comment la requête est faite. En utilisant l'onglet "Net", vous pourrez voir la requête à "list.aspx" et tous ses paramètres.

2
page.forms.first['__EVENTARUGMENT'] = '123456' // -> should be '__EVENTARGUMENT' 
5

En utilisant mécaniser-les 1.0.0 des travaux suivants:

agent = Mechanize.new 
page = agent.get('http://127.0.0.1/some.aspx') 

form = page.form("aspnetForm") 
form.add_field!('__EVENTARGUMENT', 'Page$2') 
form.add_field!('__EVENTTARGET', 'ctl00$ContentPlaceHolder1$gvwSomeList') 
page = agent.submit(form) # this gets page 2 
+0

DUDE! Tu réponds sauvé mon cul! Je te dois une bière à tout moment! Merci beaucoup. – jlstr

Questions connexes