5

我正在使用 WebTest 测试表单。但是,有些字段是使用 JS 动态创建的,因此这些字段不在 Form 中。当我尝试设置以下字段之一时出现错误:

>>> resp.form['new_field'] = '值'
或者
>>> resp.form.set('new_field', 'value')
或者
>>> resp.form.set('new_field', 'value', index=0)
或者
>>> resp.form['new_field'].force_value('value')

*** AssertionError:找不到名为“new_field”的字段

有没有办法创建一个字段?

4

2 回答 2

11

您需要将新字段添加到字段和 field_order:

from webtest.forms import Text
def add_dynamic_field(form, name, value):
    """Add an extra text field to a form. More work required to support files"""
    field = Text(form, 'input', None, None, value)
    form.fields[name] = [field]
    form.field_order.append((name, field))

add_dynamic_field(resp.form, 'newfield', 'some value')
于 2014-05-26T21:32:08.850 回答
0

更新了@lambackck 代码以处理文件字段。

from webtest.forms import Text, File
from webtest import Upload


def add_dynamic_field(form, name, value):
    field_cls = File if isinstance(value, Upload) else Text
    field = field_cls(form, 'input', None, 999, value)
    form.fields[name] = [field]
    form.field_order.append((name, field))
于 2017-06-12T14:38:45.000 回答