2010-05-21 14 views

Répondre

5

Le forms reference contient quelques exemples de remplissage de contrôles de texte dans les objets response.

Une citation pertinente:

# The kind argument can also take values "multilist", "singlelist", "text", 
# "clickable" and "file": 
# find first control that will accept text, and scribble in it 
form.set_value("rhubarb rhubarb", kind="text", nr=0) 

L'argument kind peut être utilisé avec les méthodes form.find_control() et form.set_value() pour localiser "text" contrôles.

Creuser un peu dans le mechanize _form.py source, Nous avons une explication. Mécaniser TextControl couvre (entre autres) l'élément de formulaire TEXTAREA.

#--------------------------------------------------- 
class TextControl(ScalarControl): 
    """Textual input control. 

    Covers: 

    INPUT/TEXT 
    INPUT/PASSWORD 
    INPUT/HIDDEN 
    TEXTAREA 

    """ 
    def __init__(self, type, name, attrs, index=None): 
     ScalarControl.__init__(self, type, name, attrs, index) 
     if self.type == "hidden": self.readonly = True 
     if self._value is None: 
      self._value = "" 

    def is_of_kind(self, kind): return kind == "text" 
6

Vous pouvez faire quelque chose comme

import mechanize 

br = mechanize.Browser() 
br.open("http://pypi.python.org/pypi") 
br.select_form("searchform") 
br['term'] = "Mechanize" 
response = br.submit() 

Le br['term'] = "Mechanize" est la ligne concernée.

Et vous avez sérieusement besoin d'accepter des réponses à vos questions.

1

vous pouvez vérifier la forme de premier élément et combien de formes dans la page peut être fait avec

for form in br.forms(): 
    print form