Использование Python Mechanize, например "Tamper Data"

Я пишу сценарий веб-тестирования с Python (2.6) и механизировать (0.1.11). Страница, с которой я работаю, имеет HTML-форму с полем выбора, например так:

<select name="field1" size="1">
    <option value="A" selected>A</option>
    <option value="B">B</option>
    <option value="C">C</option>
    <option value="D">D</option>
</select>

В механизировать, если я попробую что-то вроде этого:

browser.form['field1'] = ['E']

Тогда я получаю ошибку: ClientForm.ItemNotFoundError: insufficient items with name 'E'

Я могу сделать это вручную с расширением Firefox "Tamper Data". Есть ли способ сделать это с помощью Python и механизировать? Могу ли я как-то убедить механизировать, что форма действительно имеет значение, которое я хочу отправить?

1 ответ

Решение

После того, как вы поэкспериментируете с внутренностями ClientForm, похоже, вы можете обмануть его, добавив еще один элемент.

Для поля выбора, что-то вроде этого работает:

xitem = ClientForm.Item(browser.form.find_control(name="field1"), 
        {'contents':'E', 'value':'E', 'label':'E'})

Точно так же для радио кнопки управления

xitem = ClientForm.Item(browser.form.find_control(name="field2"),
        {'type':'radio', 'name':'field2', 'value':'X'})

Обратите внимание, что инициализатор элемента автоматически обновит список элементов для указанного элемента управления, поэтому вам нужно только правильно создать элемент для его отображения.

Другие вопросы по тегам