我正在使用上一个问题中推荐的 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'
有什么方法可以控制“提交”中的其他值之一。
感谢您的帮助。
最佳答案
我假设,出于某种原因,您不能将“名称”属性添加到您的标签中,但如果它只是一个您不能添加的“名称”,您可以明确设置一个“值=提交”(而不是依赖默认的提交),然后使用 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。 ;)
关于python - 使用getControl控制name变量以外的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2155403/