2010-04-21 5 views
1

J'essaie de soumettre un formulaire sur une page .asp, mais Mechanize ne reconnaît pas le nom du contrôle. Le code de formulaire est:Utilisation de Python et de Mechanize avec des formulaires ASP

<form id="form1" name="frmSearchQuick" method="post"> 
.... 
<input type="button" name="btSearchTop" value="SEARCH" class="buttonctl" onClick="uf_Browse('dledir_search_quick.asp');" > 

Mon code est le suivant:

br = mechanize.Browser() 
br.open(BASE_URL) 
br.select_form(name='frmSearchQuick') 
resp = br.click(name='btSearchTop') 

J'ai aussi essayé la dernière ligne comme:

resp = br.submit(name='btSearchTop') 

L'erreur que je reçois est:

raise ControlNotFoundError("no control matching "+description) ControlNotFoundError: no control matching name 'btSearchTop', kind 'clickable' 

Si j'imprime br je reçois ceci: IgnoreControl (btSearc hTop =)

Mais je ne le vois nulle part dans le HTML.

Un conseil sur la façon de soumettre ce formulaire?

Répondre

5

Le bouton ne soumet pas le formulaire - il appelle une fonction javascript. Comme Mechanize ne peut pas exécuter javascript, vous ne pouvez pas l'utiliser pour cliquer sur ce bouton. La solution la plus simple est de lire cette fonction vous-même, et de voir ce qu'elle fait - si elle ne fait que soumettre le formulaire, alors peut-être vous pouvez le contourner en soumettant le formulaire sans cliquer sur quoi que ce soit.

0

Vous devez d'abord inspecter l'élément, est-ce que la mécanisation a reconnu la forme?

for form in br.forms(): 
     print form 
Questions connexes