Заполнение текстовой области механизированным модулем Python - PullRequest
4 голосов
/ 21 мая 2010

Есть ли способ заполнить текстовую область, являющуюся частью формы, используя модуль механизации для Python?

Ответы [ 3 ]

6 голосов
/ 21 мая 2010

Вы можете сделать что-то вроде

import mechanize

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

br['term'] = "Mechanize" - соответствующая строка.

И вам необходимо принять некоторые ответы на ваши вопросы.

5 голосов
/ 21 мая 2010

Ссылка forms содержит несколько примеров заполнения текстовых элементов управления в response объектах.

Соответствующая цитата:

# 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)

Аргумент kind может использоваться с методами form.find_control() и form.set_value() для поиска элементов управления "text".

Немного покопавшись в механизированном _form.py источнике , у нас есть объяснение. Механизируйте TextControl крышки (среди прочего) элемента формы 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"
1 голос
/ 03 октября 2010

вы можете сначала проверить форму элемента и сколько форм на странице можно сделать с помощью

for form in br.forms():
    print form
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...