使用Python机械化像“篡改数据”
题
我正在写与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'})
请注意,该项目初始化会自动更新项目指定控件的列表,所以你只需要正确地创建的项目才会出现。
不隶属于 StackOverflow