我正在写与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扩展手动完成。有没有办法用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