使用getControl控制除name变量以外的对象
我正在使用Zope测试浏览器,这是在我上一个问题中推荐的工具。现在我遇到的问题是,我可以用getControl这个函数来控制不同的对象,比如:密码、用户名等等。
我想提交这个页面以进入下一个页面,但提交按钮没有'名称'这个变量,只有一个'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'中的其他值呢?
感谢任何帮助。
1 个回答
0
我假设你有某种原因,不能在你的标签中添加一个'name'属性。如果只是不能添加'name',你可以明确地设置一个'value=Submit'(而不是依赖默认的值,默认值是Submit),然后使用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。;)