我正在使用Zope测试浏览器,这是我在上一个问题中推荐的。我面临的问题是我可以使用getControl函数来控制不同的对象,如:密码,用户名等。
我正在尝试提交页面以进入下一页,但提交按钮没有'name'变量,只有'id'变量。 “提交”的内容如下:
<input type="submit" id="lgn_button" class="button" tabindex="3" accesskey="s" />
,其他对象写为:
<input type="password" class="button" name="password" id="password" size="24" maxlength="20" accesskey="p" tabindex="2" value=""/></td>
我无权更改此内容。我用来控制'密码'对象的python zope代码是:
browser.getControl(name='password')
提交按钮没有“名字”,所以我写了:
browser.getControl(id='lgn_button')
这会打印出'id'无效的错误:
TypeError: getControl() got an unexpected keyword argument 'id'
有没有办法控制'submit'中的其他值之一。
感谢您的帮助。
答案 0 :(得分:0)
我认为,由于某种原因,您无法在代码中添加“名称”属性,但如果它只是您无法添加的“名称”,则可以明确设置'value =提交'(而不是依赖默认的提交),然后使用browser.getControl('Submit')
如果做不到这一点,你可以按照
的方式做点什么for form in browser.mech_browser.forms(): for control in form.controls: if control.id == 'lgn_button': return control
您甚至可能希望使用它扩展Browser.getControl()并将其贡献回zope.testbrowser。 ;)