1

我正在使用我在上一个问题中推荐的 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'

有什么方法可以控制“提交”中的其他值之一。

谢谢你的帮助。

4

1 回答 1

0

我假设,出于某种原因,您无法将“名称”属性添加到您的标签,但如果它只是您无法添加的“名称”,您可以显式设置“值=提交”(而不是依赖默认的 Submit) 然后使用 browser.getControl('Submit')

如果做不到这一点,你可以做一些类似的事情

对于 browser.mech_browser.forms() 中的表单:
    在 form.controls 中进行控制:
        如果 control.id == 'lgn_button':
            返回控制

你甚至可能想用它扩展 Browser.getControl() 并将其贡献回 zope.testbrowser。;)

于 2010-01-28T19:11:31.953 回答