Вопрос

Я пишу сценарий веб-тестирования с использованием 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 и механизировать?Могу ли я каким-то образом убедить механизировать, что форма действительно имеет то значение, которое я хочу отправить?

Это было полезно?

Решение

Покопавшись в внутренностях 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'})

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top