使用getControl控制除name变量以外的对象

1 投票
1 回答
888 浏览
提问于 2025-04-15 18:36

我正在使用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。;)

撰写回答