Использование 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'})
Обратите внимание, что инициализатор элемента автоматически обновит список элементов для указанного элемента управления, поэтому вам нужно только правильно создать элемент для его отображения.